Project Date
NLTEST 27 Oct 2020, 13:23

Tag Report

Steps Scenarios Features
Tag Passed Failed Skipped Pending Undefined Total Passed Failed Total Duration Status
@Service=Download 2396 87 4349 0 0 6832 25 87 112 50:25.915 Failed
1.222
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:16:00.925 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebieden/v2/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.221
13:16:00.925 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 307
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebieden/v2/wfs?request=GetCapabilities"}}}

13:16:02.141 response time in milliseconds: 1215.21
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:16:02 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","timestamp":"1603804562069","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebieden/v2/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:16:02.147 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1:13.186
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.004
* print testRunRequest 0.000
13:22:34.512 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 19.320
13:22:34.514 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 289
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml"}}}

13:22:53.831 response time in milliseconds: 18538.24
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:22:52 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:22:45 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/ee02792c-0bbb-4f5e-8981-e220c9500c85.json","testRuns":{"TestRun":{"id":"EIDee02792c-0bbb-4f5e-8981-e220c9500c85","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:22:42.805Z","testTasks":{"TestTask":{"id":"EID5e00366e-1995-47fc-8425-808d871dceb2","parent":{"ref":"EIDee02792c-0bbb-4f5e-8981-e220c9500c85"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDb6c78e66-70a8-4dfb-b1e8-f67734399ab0"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDee02792c-0bbb-4f5e-8981-e220c9500c85/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDb6c78e66-70a8-4dfb-b1e8-f67734399ab0","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:22:34.946Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:22:41.484Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:22:53.833 [print] EIDee02792c-0bbb-4f5e-8981-e220c9500c85
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:22:53.833 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:22:53.834 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:22:53.834 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/ee02792c-0bbb-4f5e-8981-e220c9500c85.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:22:53.834 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDee02792c-0bbb-4f5e-8981-e220c9500c85/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:22:53.834 [print] statuspath TestRuns/EIDee02792c-0bbb-4f5e-8981-e220c9500c85
* print 'progresspath ', progresspath 0.001
13:22:53.834 [print] progresspath  TestRuns/EIDee02792c-0bbb-4f5e-8981-e220c9500c85/progress
Given path progresspath 0.000
When method GET 0.566
13:22:53.836 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDee02792c-0bbb-4f5e-8981-e220c9500c85/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:54.401 response time in milliseconds: 565.18
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:22:54 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:22:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:42 UTC 2020)","27.10.2020 13:22:42 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:42 - Preparing 1 Test Task:","27.10.2020 13:22:42 -  TestTask 1 (5e00366e-1995-47fc-8425-808d871dceb2)","27.10.2020 13:22:42 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:42 -  with parameters: ","27.10.2020 13:22:42 - etf.testcases = *","27.10.2020 13:22:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:42 - Setting state to CREATED","27.10.2020 13:22:42 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:53 - Starting TestRun.ee02792c-0bbb-4f5e-8981-e220c9500c85 at 2020-10-27T13:22:54Z"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:22:54.402 [print] {
  "val": "0",
  "max": "240",
  "log": [
    "27.10.2020 13:22:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:42 UTC 2020)",
    "27.10.2020 13:22:42 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:22:42 - Preparing 1 Test Task:",
    "27.10.2020 13:22:42 -  TestTask 1 (5e00366e-1995-47fc-8425-808d871dceb2)",
    "27.10.2020 13:22:42 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:22:42 -  with parameters: ",
    "27.10.2020 13:22:42 - etf.testcases = *",
    "27.10.2020 13:22:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:22:42 - Setting state to CREATED",
    "27.10.2020 13:22:42 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:22:53 - Starting TestRun.ee02792c-0bbb-4f5e-8981-e220c9500c85 at 2020-10-27T13:22:54Z"
  ]
}
Given path progresspath 0.000
When method GET 48.920
13:22:54.402 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDee02792c-0bbb-4f5e-8981-e220c9500c85/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:54.927 response time in milliseconds: 524.47
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:22:54 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:22:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:42 UTC 2020)","27.10.2020 13:22:42 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:42 - Preparing 1 Test Task:","27.10.2020 13:22:42 -  TestTask 1 (5e00366e-1995-47fc-8425-808d871dceb2)","27.10.2020 13:22:42 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:42 -  with parameters: ","27.10.2020 13:22:42 - etf.testcases = *","27.10.2020 13:22:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:42 - Setting state to CREATED","27.10.2020 13:22:42 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:53 - Starting TestRun.ee02792c-0bbb-4f5e-8981-e220c9500c85 at 2020-10-27T13:22:54Z","27.10.2020 13:22:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:54 - Project Properties: ","27.10.2020 13:22:54 - etf.testcases - * ","27.10.2020 13:22:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","27.10.2020 13:22:54 - username -  ","27.10.2020 13:22:54 - authUser -  ","27.10.2020 13:22:54 - authMethod - basic ","27.10.2020 13:22:54 - TestRunTask initialized"]}

13:22:54.927 retry condition not satisfied: response.val == response.max
13:22:54.927 sleeping before retry #1
13:22:59.928 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDee02792c-0bbb-4f5e-8981-e220c9500c85/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:23:00.435 response time in milliseconds: 506.85
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:23:00 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["27.10.2020 13:22:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:42 UTC 2020)","27.10.2020 13:22:42 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:42 - Preparing 1 Test Task:","27.10.2020 13:22:42 -  TestTask 1 (5e00366e-1995-47fc-8425-808d871dceb2)","27.10.2020 13:22:42 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:42 -  with parameters: ","27.10.2020 13:22:42 - etf.testcases = *","27.10.2020 13:22:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:42 - Setting state to CREATED","27.10.2020 13:22:42 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:53 - Starting TestRun.ee02792c-0bbb-4f5e-8981-e220c9500c85 at 2020-10-27T13:22:54Z","27.10.2020 13:22:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:54 - Project Properties: ","27.10.2020 13:22:54 - etf.testcases - * ","27.10.2020 13:22:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","27.10.2020 13:22:54 - username -  ","27.10.2020 13:22:54 - authUser -  ","27.10.2020 13:22:54 - authMethod - basic ","27.10.2020 13:22:54 - TestRunTask initialized"]}

13:23:00.436 retry condition not satisfied: response.val == response.max
13:23:00.436 sleeping before retry #2
13:23:05.437 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDee02792c-0bbb-4f5e-8981-e220c9500c85/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:23:05.956 response time in milliseconds: 518.38
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:23:05 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"41","max":"42","log":["27.10.2020 13:22:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:42 UTC 2020)","27.10.2020 13:22:42 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:42 - Preparing 1 Test Task:","27.10.2020 13:22:42 -  TestTask 1 (5e00366e-1995-47fc-8425-808d871dceb2)","27.10.2020 13:22:42 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:42 -  with parameters: ","27.10.2020 13:22:42 - etf.testcases = *","27.10.2020 13:22:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:42 - Setting state to CREATED","27.10.2020 13:22:42 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:53 - Starting TestRun.ee02792c-0bbb-4f5e-8981-e220c9500c85 at 2020-10-27T13:22:54Z","27.10.2020 13:22:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:54 - Project Properties: ","27.10.2020 13:22:54 - etf.testcases - * ","27.10.2020 13:22:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","27.10.2020 13:22:54 - username -  ","27.10.2020 13:22:54 - authUser -  ","27.10.2020 13:22:54 - authMethod - basic ","27.10.2020 13:22:54 - TestRunTask initialized"]}

13:23:05.956 retry condition not satisfied: response.val == response.max
13:23:05.956 sleeping before retry #3
13:23:10.957 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDee02792c-0bbb-4f5e-8981-e220c9500c85/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:23:11.470 response time in milliseconds: 512.79
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:23:11 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"62","max":"63","log":["27.10.2020 13:22:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:42 UTC 2020)","27.10.2020 13:22:42 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:42 - Preparing 1 Test Task:","27.10.2020 13:22:42 -  TestTask 1 (5e00366e-1995-47fc-8425-808d871dceb2)","27.10.2020 13:22:42 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:42 -  with parameters: ","27.10.2020 13:22:42 - etf.testcases = *","27.10.2020 13:22:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:42 - Setting state to CREATED","27.10.2020 13:22:42 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:53 - Starting TestRun.ee02792c-0bbb-4f5e-8981-e220c9500c85 at 2020-10-27T13:22:54Z","27.10.2020 13:22:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:54 - Project Properties: ","27.10.2020 13:22:54 - etf.testcases - * ","27.10.2020 13:22:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","27.10.2020 13:22:54 - username -  ","27.10.2020 13:22:54 - authUser -  ","27.10.2020 13:22:54 - authMethod - basic ","27.10.2020 13:22:54 - TestRunTask initialized"]}

13:23:11.470 retry condition not satisfied: response.val == response.max
13:23:11.470 sleeping before retry #4
13:23:16.472 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDee02792c-0bbb-4f5e-8981-e220c9500c85/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:23:19.713 response time in milliseconds: 3240.71
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:23:19 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"101","max":"102","log":["27.10.2020 13:22:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:42 UTC 2020)","27.10.2020 13:22:42 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:42 - Preparing 1 Test Task:","27.10.2020 13:22:42 -  TestTask 1 (5e00366e-1995-47fc-8425-808d871dceb2)","27.10.2020 13:22:42 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:42 -  with parameters: ","27.10.2020 13:22:42 - etf.testcases = *","27.10.2020 13:22:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:42 - Setting state to CREATED","27.10.2020 13:22:42 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:53 - Starting TestRun.ee02792c-0bbb-4f5e-8981-e220c9500c85 at 2020-10-27T13:22:54Z","27.10.2020 13:22:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:54 - Project Properties: ","27.10.2020 13:22:54 - etf.testcases - * ","27.10.2020 13:22:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","27.10.2020 13:22:54 - username -  ","27.10.2020 13:22:54 - authUser -  ","27.10.2020 13:22:54 - authMethod - basic ","27.10.2020 13:22:54 - TestRunTask initialized","27.10.2020 13:23:13 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:23:19.713 retry condition not satisfied: response.val == response.max
13:23:19.713 sleeping before retry #5
13:23:24.714 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDee02792c-0bbb-4f5e-8981-e220c9500c85/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:23:25.254 response time in milliseconds: 538.03
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:23:25 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"156","max":"157","log":["27.10.2020 13:22:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:42 UTC 2020)","27.10.2020 13:22:42 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:42 - Preparing 1 Test Task:","27.10.2020 13:22:42 -  TestTask 1 (5e00366e-1995-47fc-8425-808d871dceb2)","27.10.2020 13:22:42 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:42 -  with parameters: ","27.10.2020 13:22:42 - etf.testcases = *","27.10.2020 13:22:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:42 - Setting state to CREATED","27.10.2020 13:22:42 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:53 - Starting TestRun.ee02792c-0bbb-4f5e-8981-e220c9500c85 at 2020-10-27T13:22:54Z","27.10.2020 13:22:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:54 - Project Properties: ","27.10.2020 13:22:54 - etf.testcases - * ","27.10.2020 13:22:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","27.10.2020 13:22:54 - username -  ","27.10.2020 13:22:54 - authUser -  ","27.10.2020 13:22:54 - authMethod - basic ","27.10.2020 13:22:54 - TestRunTask initialized","27.10.2020 13:23:13 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:23:25.254 retry condition not satisfied: response.val == response.max
13:23:25.254 sleeping before retry #6
13:23:30.255 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDee02792c-0bbb-4f5e-8981-e220c9500c85/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:23:30.788 response time in milliseconds: 528.93
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:23:30 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:22:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:42 UTC 2020)","27.10.2020 13:22:42 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:42 - Preparing 1 Test Task:","27.10.2020 13:22:42 -  TestTask 1 (5e00366e-1995-47fc-8425-808d871dceb2)","27.10.2020 13:22:42 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:42 -  with parameters: ","27.10.2020 13:22:42 - etf.testcases = *","27.10.2020 13:22:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:42 - Setting state to CREATED","27.10.2020 13:22:42 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:53 - Starting TestRun.ee02792c-0bbb-4f5e-8981-e220c9500c85 at 2020-10-27T13:22:54Z","27.10.2020 13:22:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:54 - Project Properties: ","27.10.2020 13:22:54 - etf.testcases - * ","27.10.2020 13:22:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","27.10.2020 13:22:54 - username -  ","27.10.2020 13:22:54 - authUser -  ","27.10.2020 13:22:54 - authMethod - basic ","27.10.2020 13:22:54 - TestRunTask initialized","27.10.2020 13:23:13 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:23:28 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:23:29 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:23:30.793 retry condition not satisfied: response.val == response.max
13:23:30.793 sleeping before retry #7
13:23:35.794 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDee02792c-0bbb-4f5e-8981-e220c9500c85/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:23:36.301 response time in milliseconds: 506.30
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Tue, 27 Oct 2020 13:23:36 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:22:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:42 UTC 2020)","27.10.2020 13:22:42 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:42 - Preparing 1 Test Task:","27.10.2020 13:22:42 -  TestTask 1 (5e00366e-1995-47fc-8425-808d871dceb2)","27.10.2020 13:22:42 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:42 -  with parameters: ","27.10.2020 13:22:42 - etf.testcases = *","27.10.2020 13:22:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:42 - Setting state to CREATED","27.10.2020 13:22:42 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:53 - Starting TestRun.ee02792c-0bbb-4f5e-8981-e220c9500c85 at 2020-10-27T13:22:54Z","27.10.2020 13:22:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:54 - Project Properties: ","27.10.2020 13:22:54 - etf.testcases - * ","27.10.2020 13:22:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml ","27.10.2020 13:22:54 - username -  ","27.10.2020 13:22:54 - authUser -  ","27.10.2020 13:22:54 - authMethod - basic ","27.10.2020 13:22:54 - TestRunTask initialized","27.10.2020 13:23:13 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:23:28 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:23:29 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:23:33 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:23:36.301 retry condition not satisfied: response.val == response.max
13:23:36.301 sleeping before retry #8
13:23:41.302 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDee02792c-0bbb-4f5e-8981-e220c9500c85/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:23:43.322 response time in milliseconds: 2018.91
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Tue, 27 Oct 2020 13:23:43 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:23:43.322 retry condition satisfied
* print response 0.000
13:23:43.322 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 4.348
13:23:43.323 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDee02792c-0bbb-4f5e-8981-e220c9500c85
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:23:47.667 response time in milliseconds: 3260.86
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Cache-Control: public, max-age=120
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Tue, 27 Oct 2020 13:23:46 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Last-Modified: Tue, 27 Oct 2020 13:23:42 GMT
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/ee02792c-0bbb-4f5e-8981-e220c9500c85.json","testRuns":{"TestRun":{"id":"EIDee02792c-0bbb-4f5e-8981-e220c9500c85","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:22:42.805Z","testTasks":{"TestTask":{"id":"EID5e00366e-1995-47fc-8425-808d871dceb2","parent":{"ref":"EIDee02792c-0bbb-4f5e-8981-e220c9500c85"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDb6c78e66-70a8-4dfb-b1e8-f67734399ab0"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID8d2df79e-8dda-4de9-bb5c-fb6059cda081"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDee02792c-0bbb-4f5e-8981-e220c9500c85/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDb6c78e66-70a8-4dfb-b1e8-f67734399ab0","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:22:34.946Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:22:41.484Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID8d2df79e-8dda-4de9-bb5c-fb6059cda081","testObject":{"ref":"EIDb6c78e66-70a8-4dfb-b1e8-f67734399ab0"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a39cde3-0175-1000-f603-cb60169f1f09","testCaseResults":{"TestCaseResult":[{"id":"EID6a39cde3-0175-1000-8b33-c0ec00530e10","testStepResults":{"TestStepResult":[{"id":"EID6a39cde3-0175-1000-b4e2-d643cc9e810f","parent":{"ref":"EID6a39cde3-0175-1000-8b33-c0ec00530e10"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:22:54Z","duration":17,"status":"PASSED"},{"id":"EID6a39cdf4-0175-1000-30d7-983aee488480","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39d119-0175-1000-67f9-6d88c76c8d00","parent":{"ref":"EID6a39cdf4-0175-1000-30d7-983aee488480"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:22:55Z","duration":0,"status":"PASSED"},{"id":"EID6a39d119-0175-1000-cb11-a183388dcdfc","parent":{"ref":"EID6a39cdf4-0175-1000-30d7-983aee488480"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:22:55Z","duration":0,"status":"PASSED"},{"id":"EID6a39d119-0175-1000-6c9f-d66dc67455e7","parent":{"ref":"EID6a39cdf4-0175-1000-30d7-983aee488480"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:22:55Z","duration":0,"status":"PASSED"},{"id":"EID6a39d119-0175-1000-7a10-42dfb363b340","parent":{"ref":"EID6a39cdf4-0175-1000-30d7-983aee488480"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:22:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa7122141-617c-491b-9e5f-441030e1de0f"},{"ref":"EID337d7192-69d8-42f7-b6b7-58be2f0bd05e"},{"ref":"EID7e891fcd-bb92-4c29-833a-b1be1d79de72"}]},"parent":{"ref":"EID6a39cde3-0175-1000-8b33-c0ec00530e10"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:22:54Z","duration":617,"status":"PASSED"}]},"parent":{"ref":"EID6a39cde3-0175-1000-f603-cb60169f1f09"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:22:54Z","duration":830,"status":"PASSED"},{"id":"EID6a39d122-0175-1000-9d5c-8fce7b430afe","testStepResults":{"TestStepResult":{"id":"EID6a39d122-0175-1000-930f-89343a1a5018","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39d251-0175-1000-a66b-2980f4a58540","parent":{"ref":"EID6a39d122-0175-1000-930f-89343a1a5018"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:22:55Z","duration":0,"status":"PASSED"},{"id":"EID6a39d251-0175-1000-a591-6827ed37ed11","parent":{"ref":"EID6a39d122-0175-1000-930f-89343a1a5018"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:22:55Z","duration":0,"status":"PASSED"},{"id":"EID6a39d251-0175-1000-2dce-ae01d4989a3c","parent":{"ref":"EID6a39d122-0175-1000-930f-89343a1a5018"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:22:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdf476b52-8eca-4ff7-8cd5-21d1f4688672"},{"ref":"EID3c798e93-0b47-4b1d-acc5-13123d5c5fd5"},{"ref":"EID84681757-b69c-43dc-a11e-7bd38f3e9ac1"}]},"parent":{"ref":"EID6a39d122-0175-1000-9d5c-8fce7b430afe"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:22:55Z","duration":98,"status":"PASSED"}},"parent":{"ref":"EID6a39cde3-0175-1000-f603-cb60169f1f09"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:22:55Z","duration":303,"status":"PASSED"}]},"parent":{"ref":"EID8d2df79e-8dda-4de9-bb5c-fb6059cda081"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:22:54Z","duration":1134,"status":"PASSED"},{"id":"EID6a39d251-0175-1000-908b-766fd4c74073","testCaseResults":{"TestCaseResult":[{"id":"EID6a39d251-0175-1000-b5ee-8250dc6b482b","testStepResults":{"TestStepResult":[{"id":"EID6a39d2a2-0175-1000-dafd-aa5247944a6d","parent":{"ref":"EID6a39d251-0175-1000-b5ee-8250dc6b482b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:22:55Z","duration":98,"status":"PASSED"},{"id":"EID6a39d2a2-0175-1000-5846-e01ac8cf0f44","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39d419-0175-1000-4899-da6860de4092","parent":{"ref":"EID6a39d2a2-0175-1000-5846-e01ac8cf0f44"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:22:56Z","duration":0,"status":"PASSED"},{"id":"EID6a39d419-0175-1000-62a4-4e1766840c4f","parent":{"ref":"EID6a39d2a2-0175-1000-5846-e01ac8cf0f44"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:22:56Z","duration":0,"status":"PASSED"},{"id":"EID6a39d419-0175-1000-1f5c-06a33b783c84","parent":{"ref":"EID6a39d2a2-0175-1000-5846-e01ac8cf0f44"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:22:56Z","duration":0,"status":"PASSED"},{"id":"EID6a39d419-0175-1000-06f3-bab22d13a878","parent":{"ref":"EID6a39d2a2-0175-1000-5846-e01ac8cf0f44"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:22:56Z","duration":0,"status":"PASSED"},{"id":"EID6a39d419-0175-1000-b26f-ad93b2b9a1ee","parent":{"ref":"EID6a39d2a2-0175-1000-5846-e01ac8cf0f44"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:22:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8ed6184a-b582-4479-9064-3ff2565d704f"},{"ref":"EID07287125-32a7-4351-9d9f-9ea48241b0e7"},{"ref":"EIDe7268887-3a95-47e7-86df-fcaf2bd78bb5"}]},"parent":{"ref":"EID6a39d251-0175-1000-b5ee-8250dc6b482b"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:22:55Z","duration":115,"status":"PASSED"}]},"parent":{"ref":"EID6a39d251-0175-1000-908b-766fd4c74073"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:22:55Z","duration":456,"status":"PASSED"},{"id":"EID6a39d43e-0175-1000-1227-1cec90e5f265","testStepResults":{"TestStepResult":[{"id":"EID6a39d43f-0175-1000-f9be-b1e65a3a6fb7","attachments":{"attachment":[{"ref":"EID6513ddbb-08cf-4d79-b56d-8bc77e1707cc"},{"ref":"EID9166301a-6d7f-4a10-be3e-bc77f292c740"}]},"parent":{"ref":"EID6a39d43e-0175-1000-1227-1cec90e5f265"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:22:56Z","duration":1851,"status":"PASSED"},{"id":"EID6a39dbab-0175-1000-8c48-bf85fe2af48a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39ddf1-0175-1000-784a-942df466f073","parent":{"ref":"EID6a39dbab-0175-1000-8c48-bf85fe2af48a"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:22:58Z","duration":0,"status":"PASSED"},{"id":"EID6a39ddf1-0175-1000-28d5-9a54fbd29cbb","parent":{"ref":"EID6a39dbab-0175-1000-8c48-bf85fe2af48a"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:22:58Z","duration":0,"status":"PASSED"},{"id":"EID6a39ddf1-0175-1000-ae39-04e760b97e1d","parent":{"ref":"EID6a39dbab-0175-1000-8c48-bf85fe2af48a"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:22:58Z","duration":0,"status":"PASSED"},{"id":"EID6a39ddf1-0175-1000-1d19-5df916630902","parent":{"ref":"EID6a39dbab-0175-1000-8c48-bf85fe2af48a"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:22:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID98ecd22f-2123-4bc1-bc4a-659440966a81"},{"ref":"EID36b3a73b-5cfc-4a3f-90e3-457699fe639b"},{"ref":"EID70bab2ea-0544-492f-b4c7-93dee6542ed7"}]},"parent":{"ref":"EID6a39d43e-0175-1000-1227-1cec90e5f265"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:22:58Z","duration":399,"status":"PASSED"}]},"parent":{"ref":"EID6a39d251-0175-1000-908b-766fd4c74073"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:22:56Z","duration":2483,"status":"PASSED"},{"id":"EID6a39ddf2-0175-1000-4a89-12b72c204d03","testStepResults":{"TestStepResult":[{"id":"EID6a39ddf2-0175-1000-c0cd-15b2bf264db2","attachments":{"attachment":[{"ref":"EID9a2eed71-37c4-46ac-ac4f-33cd59cd2954"},{"ref":"EID89fc29fb-663c-4d5f-86ba-1ad1e607d023"}]},"parent":{"ref":"EID6a39ddf2-0175-1000-4a89-12b72c204d03"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:22:58Z","duration":1093,"status":"PASSED"},{"id":"EID6a39e26d-0175-1000-43f6-78f73c007201","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39e520-0175-1000-e5e3-8391722608bc","parent":{"ref":"EID6a39e26d-0175-1000-43f6-78f73c007201"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:23:00Z","duration":0,"status":"PASSED"},{"id":"EID6a39e520-0175-1000-b4e4-d27185a697f1","parent":{"ref":"EID6a39e26d-0175-1000-43f6-78f73c007201"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:23:00Z","duration":0,"status":"PASSED"},{"id":"EID6a39e520-0175-1000-157c-9acdf5fc5640","parent":{"ref":"EID6a39e26d-0175-1000-43f6-78f73c007201"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:23:00Z","duration":0,"status":"PASSED"},{"id":"EID6a39e520-0175-1000-9384-b46b2c091861","parent":{"ref":"EID6a39e26d-0175-1000-43f6-78f73c007201"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:23:00Z","duration":0,"status":"PASSED"},{"id":"EID6a39e520-0175-1000-7bab-bc77f8e6fa67","parent":{"ref":"EID6a39e26d-0175-1000-43f6-78f73c007201"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:23:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID47649544-4ce7-42db-822b-5a6311592bda"},{"ref":"EIDc046d0e6-8b9c-4ee2-a09e-ef2e99db4040"},{"ref":"EIDb6bdee79-4ecf-4719-b3ba-bb813f573370"}]},"parent":{"ref":"EID6a39ddf2-0175-1000-4a89-12b72c204d03"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:22:59Z","duration":401,"status":"PASSED"}]},"parent":{"ref":"EID6a39d251-0175-1000-908b-766fd4c74073"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:22:58Z","duration":1838,"status":"PASSED"},{"id":"EID6a39e520-0175-1000-3200-f5e46bc66b87","testStepResults":{"TestStepResult":[{"id":"EID6a39e520-0175-1000-c852-9a535802d46f","attachments":{"attachment":[{"ref":"EID4f318462-dfd7-44bb-adf5-f5bd21ee701e"},{"ref":"EID7da91beb-6cfa-4be6-b460-342d84dd28ac"}]},"parent":{"ref":"EID6a39e520-0175-1000-3200-f5e46bc66b87"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:23:00Z","duration":521,"status":"PASSED"},{"id":"EID6a39e76d-0175-1000-6aa2-a71d5c862371","parent":{"ref":"EID6a39e520-0175-1000-3200-f5e46bc66b87"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:23:01Z","duration":0,"status":"PASSED"},{"id":"EID6a39e791-0175-1000-530c-e3fcfd62ef07","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39eb0d-0175-1000-cdbe-7d5a1e91e680","parent":{"ref":"EID6a39e791-0175-1000-530c-e3fcfd62ef07"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:23:02Z","duration":0,"status":"PASSED"},{"id":"EID6a39eb0d-0175-1000-7147-22520917c1dc","parent":{"ref":"EID6a39e791-0175-1000-530c-e3fcfd62ef07"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:23:02Z","duration":0,"status":"PASSED"},{"id":"EID6a39eb0d-0175-1000-6b26-b6e89edf1d16","parent":{"ref":"EID6a39e791-0175-1000-530c-e3fcfd62ef07"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:23:02Z","duration":0,"status":"PASSED"},{"id":"EID6a39eb0d-0175-1000-da5d-65114d707873","parent":{"ref":"EID6a39e791-0175-1000-530c-e3fcfd62ef07"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:23:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID64a06daa-8e29-48e0-9833-fc9a13e0e5ab"},{"ref":"EID691994f2-38d8-4e0e-825e-1d6b6f12ce2f"},{"ref":"EIDf4125cc8-cf70-4d78-a5e6-262ad0c69d38"}]},"parent":{"ref":"EID6a39e520-0175-1000-3200-f5e46bc66b87"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:23:01Z","duration":653,"status":"PASSED"},{"id":"EID6a39eb15-0175-1000-8308-bb62ba19468e","attachments":{"attachment":{"ref":"EID6950dd08-eb93-412d-a5df-2976e15431bf"}},"parent":{"ref":"EID6a39e520-0175-1000-3200-f5e46bc66b87"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:23:02Z","duration":1,"status":"PASSED"},{"id":"EID6a39eb28-0175-1000-c444-a6be81095239","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39ed66-0175-1000-aacd-fc316bc8296c","parent":{"ref":"EID6a39eb28-0175-1000-c444-a6be81095239"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:23:02Z","duration":0,"status":"PASSED"},{"id":"EID6a39ed66-0175-1000-ce0c-0acab6d76fd7","parent":{"ref":"EID6a39eb28-0175-1000-c444-a6be81095239"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:23:02Z","duration":0,"status":"PASSED"},{"id":"EID6a39ed66-0175-1000-a60b-d95190ac52d5","parent":{"ref":"EID6a39eb28-0175-1000-c444-a6be81095239"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:23:02Z","duration":0,"status":"PASSED"},{"id":"EID6a39ed66-0175-1000-f2b1-59f20e93a1cb","parent":{"ref":"EID6a39eb28-0175-1000-c444-a6be81095239"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:23:02Z","duration":0,"status":"PASSED"},{"id":"EID6a39ed66-0175-1000-4206-8e59f61f9941","parent":{"ref":"EID6a39eb28-0175-1000-c444-a6be81095239"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:23:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID40634c6f-f025-4a85-866d-b105de7f28c7"},{"ref":"EID4a3da3d5-72f3-4846-921f-2eeaa0929650"},{"ref":"EIDaecdb147-52f6-4931-b397-bd39ae93d25c"}]},"parent":{"ref":"EID6a39e520-0175-1000-3200-f5e46bc66b87"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:23:02Z","duration":426,"status":"PASSED"}]},"parent":{"ref":"EID6a39d251-0175-1000-908b-766fd4c74073"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:23:00Z","duration":2135,"status":"PASSED"},{"id":"EID6a39ed77-0175-1000-6096-60e55beb0c34","testStepResults":{"TestStepResult":[{"id":"EID6a39ed77-0175-1000-1807-6bbd52ee966e","attachments":{"attachment":[{"ref":"EID6a2d004a-74a9-4217-a681-08ff0a9b1ba4"},{"ref":"EID4c37312f-1975-4045-a670-4f05bb86908f"}]},"parent":{"ref":"EID6a39ed77-0175-1000-6096-60e55beb0c34"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:23:02Z","duration":373,"status":"PASSED"},{"id":"EID6a39ef18-0175-1000-d69b-152801f5b3ec","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39f158-0175-1000-e806-e04ce3fb4c97","parent":{"ref":"EID6a39ef18-0175-1000-d69b-152801f5b3ec"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:23:03Z","duration":0,"status":"PASSED"},{"id":"EID6a39f158-0175-1000-d9ba-a43c0fe048db","parent":{"ref":"EID6a39ef18-0175-1000-d69b-152801f5b3ec"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:23:03Z","duration":0,"status":"PASSED"},{"id":"EID6a39f158-0175-1000-b62f-1700bf486ae5","parent":{"ref":"EID6a39ef18-0175-1000-d69b-152801f5b3ec"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:23:03Z","duration":0,"status":"PASSED"},{"id":"EID6a39f158-0175-1000-e347-d0fffcb7c18a","parent":{"ref":"EID6a39ef18-0175-1000-d69b-152801f5b3ec"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:23:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb29a1658-2e6f-49fa-878a-71389bff4aed"},{"ref":"EID52f5deb2-ce98-4013-9eca-164d41daf5b7"},{"ref":"EIDad69bdbc-8332-43af-a7d5-f54389b50229"}]},"parent":{"ref":"EID6a39ed77-0175-1000-6096-60e55beb0c34"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:23:03Z","duration":337,"status":"PASSED"}]},"parent":{"ref":"EID6a39d251-0175-1000-908b-766fd4c74073"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:23:02Z","duration":993,"status":"PASSED"},{"id":"EID6a39f158-0175-1000-72c4-2cf7360fe526","testStepResults":{"TestStepResult":[{"id":"EID6a39f158-0175-1000-62c7-4353381a9bf6","attachments":{"attachment":[{"ref":"EID603ef8e5-95ee-4105-83d1-19fc9134d90a"},{"ref":"EIDe5ecd298-0194-409f-919b-e2b11e265cec"}]},"parent":{"ref":"EID6a39f158-0175-1000-72c4-2cf7360fe526"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:23:03Z","duration":738,"status":"PASSED"},{"id":"EID6a39f469-0175-1000-714b-43bb797ed2bc","parent":{"ref":"EID6a39f158-0175-1000-72c4-2cf7360fe526"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:23:04Z","duration":0,"status":"PASSED"},{"id":"EID6a39f4ba-0175-1000-cd2c-adfe3d7cd7a6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39f666-0175-1000-9199-f3c900dbc8d7","parent":{"ref":"EID6a39f4ba-0175-1000-cd2c-adfe3d7cd7a6"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:23:04Z","duration":0,"status":"PASSED"},{"id":"EID6a39f666-0175-1000-d029-eed15ce8fcff","parent":{"ref":"EID6a39f4ba-0175-1000-cd2c-adfe3d7cd7a6"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:23:04Z","duration":0,"status":"PASSED"},{"id":"EID6a39f666-0175-1000-c00b-e3503a7c23e6","parent":{"ref":"EID6a39f4ba-0175-1000-cd2c-adfe3d7cd7a6"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:23:04Z","duration":0,"status":"PASSED"},{"id":"EID6a39f666-0175-1000-598d-8d0afff9c5d7","parent":{"ref":"EID6a39f4ba-0175-1000-cd2c-adfe3d7cd7a6"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:23:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID03af2874-41bc-4319-82c1-5bb41800af36"},{"ref":"EIDfd235805-c7f1-4412-b27b-e96aa5e339a8"},{"ref":"EIDa1b25492-a5de-48b6-8674-8a418507f267"}]},"parent":{"ref":"EID6a39f158-0175-1000-72c4-2cf7360fe526"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:23:04Z","duration":175,"status":"PASSED"},{"id":"EID6a39f666-0175-1000-61b4-8537de3ff44a","attachments":{"attachment":{"ref":"EIDb88a5fd0-818c-4bc3-bd62-205ef585efce"}},"parent":{"ref":"EID6a39f158-0175-1000-72c4-2cf7360fe526"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:23:04Z","duration":1,"status":"PASSED"},{"id":"EID6a39f672-0175-1000-5aa0-39fda96d3b47","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39f72a-0175-1000-aa3f-4465bf93824c","parent":{"ref":"EID6a39f672-0175-1000-5aa0-39fda96d3b47"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:23:05Z","duration":0,"status":"PASSED"},{"id":"EID6a39f72a-0175-1000-cc47-37f3326b5cc5","parent":{"ref":"EID6a39f672-0175-1000-5aa0-39fda96d3b47"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:23:05Z","duration":0,"status":"PASSED"},{"id":"EID6a39f72a-0175-1000-8b90-9f3e69709d51","parent":{"ref":"EID6a39f672-0175-1000-5aa0-39fda96d3b47"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:23:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcb204e39-8940-44d5-a1ec-9aace6e019bc"},{"ref":"EID458837bf-f609-49bc-b03c-dee5a232208b"},{"ref":"EID7aca0c76-4f20-4477-ab17-c8a036e764e5"}]},"parent":{"ref":"EID6a39f158-0175-1000-72c4-2cf7360fe526"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:23:04Z","duration":122,"status":"PASSED"},{"id":"EID6a39f72a-0175-1000-64ab-cb4a17a7a471","attachments":{"attachment":{"ref":"EID02bd05d6-7c0e-4885-9a74-6330bdea2cd7"}},"parent":{"ref":"EID6a39f158-0175-1000-72c4-2cf7360fe526"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-27T13:23:05Z","duration":1,"status":"PASSED"},{"id":"EID6a39f736-0175-1000-7f5e-f768bfc92a4c","attachments":{"attachment":{"ref":"EIDf04cacb5-3894-4743-a372-5717c0438eb4"}},"parent":{"ref":"EID6a39f158-0175-1000-72c4-2cf7360fe526"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-27T13:23:05Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6a39d251-0175-1000-908b-766fd4c74073"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:23:03Z","duration":1515,"status":"PASSED"},{"id":"EID6a39f743-0175-1000-f886-19e4d325fcae","testStepResults":{"TestStepResult":[{"id":"EID6a39f743-0175-1000-7122-19d6aa67a573","attachments":{"attachment":[{"ref":"EID1d175ac9-6cb1-4c20-a502-b26310577e31"},{"ref":"EID137eff56-ff28-4bd3-a0ea-b9d32311e6c5"}]},"parent":{"ref":"EID6a39f743-0175-1000-f886-19e4d325fcae"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:23:05Z","duration":672,"status":"PASSED"},{"id":"EID6a39fa5b-0175-1000-9b2c-1cc6eae0faf4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39fe04-0175-1000-6724-c306b4e98b34","parent":{"ref":"EID6a39fa5b-0175-1000-9b2c-1cc6eae0faf4"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:23:06Z","duration":0,"status":"PASSED"},{"id":"EID6a39fe04-0175-1000-0f6b-87f7421873e3","parent":{"ref":"EID6a39fa5b-0175-1000-9b2c-1cc6eae0faf4"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:23:06Z","duration":0,"status":"PASSED"},{"id":"EID6a39fe04-0175-1000-9473-a3861142dc6a","parent":{"ref":"EID6a39fa5b-0175-1000-9b2c-1cc6eae0faf4"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:23:06Z","duration":0,"status":"PASSED"},{"id":"EID6a39fe04-0175-1000-fa3f-ccaa67ecbc9c","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a39fa5b-0175-1000-9b2c-1cc6eae0faf4"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:23:06Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID907b816b-b61b-4b78-91c0-1a29f1a2dd7b"},{"ref":"EIDbba6cbd7-b6ea-4442-b57b-cb17e784c061"},{"ref":"EIDfd5362f6-2367-466c-9318-06e80358861d"}]},"parent":{"ref":"EID6a39f743-0175-1000-f886-19e4d325fcae"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:23:05Z","duration":732,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a39d251-0175-1000-908b-766fd4c74073"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:23:05Z","duration":1729,"status":"PASSED_MANUAL"},{"id":"EID6a39fe04-0175-1000-5f19-a8b4757931cc","testStepResults":{"TestStepResult":{"id":"EID6a39fe26-0175-1000-e5e3-999fb35c2d4c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39ff9a-0175-1000-c6d1-8dcc853812a5","parent":{"ref":"EID6a39fe26-0175-1000-e5e3-999fb35c2d4c"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:23:07Z","duration":0,"status":"PASSED"},{"id":"EID6a39ff9a-0175-1000-81cf-7dce6ffdb909","parent":{"ref":"EID6a39fe26-0175-1000-e5e3-999fb35c2d4c"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:23:07Z","duration":0,"status":"PASSED"},{"id":"EID6a39ff9a-0175-1000-e450-f92773c782c9","parent":{"ref":"EID6a39fe26-0175-1000-e5e3-999fb35c2d4c"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:23:07Z","duration":0,"status":"PASSED"},{"id":"EID6a39ff9a-0175-1000-912d-913bb92caee0","parent":{"ref":"EID6a39fe26-0175-1000-e5e3-999fb35c2d4c"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:23:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6f606105-a572-4766-99b7-592b42efcf6c"},{"ref":"EID68775a87-f535-475e-a7e8-1f7353decf23"},{"ref":"EID2884faab-d93d-455b-86ac-a4492de369f0"}]},"parent":{"ref":"EID6a39fe04-0175-1000-5f19-a8b4757931cc"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:23:06Z","duration":264,"status":"PASSED"}},"parent":{"ref":"EID6a39d251-0175-1000-908b-766fd4c74073"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:23:06Z","duration":407,"status":"PASSED"},{"id":"EID6a39ff9b-0175-1000-e0d1-a9b81608fbc7","testStepResults":{"TestStepResult":{"id":"EID6a39ff9b-0175-1000-af64-482fc006f82e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a0192-0175-1000-7cc1-78daf5ae455b","parent":{"ref":"EID6a39ff9b-0175-1000-af64-482fc006f82e"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:23:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3a0192-0175-1000-e7d8-d48b8ce0682e","parent":{"ref":"EID6a39ff9b-0175-1000-af64-482fc006f82e"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:23:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3a0192-0175-1000-bbca-34531220e126","parent":{"ref":"EID6a39ff9b-0175-1000-af64-482fc006f82e"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:23:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3a0192-0175-1000-252b-b9741be2f0d3","parent":{"ref":"EID6a39ff9b-0175-1000-af64-482fc006f82e"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:23:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5fcef0f8-a839-44f3-9c6d-18f80539abe5"},{"ref":"EID4c293e23-6852-4b01-9797-3745ece16586"},{"ref":"EID124492ef-591d-43e4-acae-f62628aaed24"}]},"parent":{"ref":"EID6a39ff9b-0175-1000-e0d1-a9b81608fbc7"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:23:07Z","duration":401,"status":"PASSED"}},"parent":{"ref":"EID6a39d251-0175-1000-908b-766fd4c74073"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:23:07Z","duration":511,"status":"PASSED"},{"id":"EID6a3a019a-0175-1000-8fee-948ebfc7fda0","testStepResults":{"TestStepResult":[{"id":"EID6a3a019a-0175-1000-ab38-753357bcd0d8","attachments":{"attachment":[{"ref":"EID428e308e-91e0-4e66-8e2c-93e81374b420"},{"ref":"EID9fa5f07e-c33d-4d88-9c16-8544d4281a60"},{"ref":"EID2ff228f7-e8d3-4857-952a-c129453648fa"},{"ref":"EIDaa5d21db-246d-4f18-94b6-a037a5064712"},{"ref":"EID88a69dfc-f04e-4224-9751-7fe65fa89fe1"},{"ref":"EID6e086d91-cb33-4dad-b82a-01f98ef968e0"},{"ref":"EID1a92ab8c-c7e8-48bb-9bcd-f96464e60740"},{"ref":"EID9e85e7cd-d44c-4350-8886-d19cba6a2724"},{"ref":"EIDca0e89fc-37dd-490f-b4d9-3c61e4e76180"},{"ref":"EID6f05a8f3-9a57-4983-90c7-1f517350e022"},{"ref":"EIDa305cbd5-e433-4f69-a1ac-860e0266e805"},{"ref":"EIDa7f7ee85-8235-40b6-8c4a-16e383302acf"}]},"parent":{"ref":"EID6a3a019a-0175-1000-8fee-948ebfc7fda0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:23:07Z","duration":1809,"status":"PASSED"},{"id":"EID6a3a0a8a-0175-1000-e589-d32e9ec6244d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a0cb6-0175-1000-404b-655d99bb0f14","parent":{"ref":"EID6a3a0a8a-0175-1000-e589-d32e9ec6244d"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-27T13:23:10Z","duration":0,"status":"PASSED"},{"id":"EID6a3a0cb6-0175-1000-82d3-a5c77e27172e","parent":{"ref":"EID6a3a0a8a-0175-1000-e589-d32e9ec6244d"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-27T13:23:10Z","duration":0,"status":"PASSED"},{"id":"EID6a3a0cb6-0175-1000-db8f-493a3dbfd712","parent":{"ref":"EID6a3a0a8a-0175-1000-e589-d32e9ec6244d"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-27T13:23:10Z","duration":0,"status":"PASSED"},{"id":"EID6a3a0cb6-0175-1000-0f62-a0e17309917a","parent":{"ref":"EID6a3a0a8a-0175-1000-e589-d32e9ec6244d"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-27T13:23:10Z","duration":0,"status":"PASSED"},{"id":"EID6a3a0cb6-0175-1000-c2e6-065997698ae1","parent":{"ref":"EID6a3a0a8a-0175-1000-e589-d32e9ec6244d"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-27T13:23:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5f6eb785-8099-466d-bf8d-00506a7029ab"},{"ref":"EID2ed3e246-15be-480f-8637-9ea688a0d420"},{"ref":"EID59e4481a-50ba-4c48-850f-2d1f9b8c29c6"}]},"parent":{"ref":"EID6a3a019a-0175-1000-8fee-948ebfc7fda0"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-27T13:23:10Z","duration":426,"status":"PASSED"}]},"parent":{"ref":"EID6a39d251-0175-1000-908b-766fd4c74073"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:23:07Z","duration":2844,"status":"PASSED"},{"id":"EID6a3a0cb6-0175-1000-d743-4747abd7df8d","testStepResults":{"TestStepResult":{"id":"EID6a3a0cbe-0175-1000-ff76-938c55b89e27","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a0e41-0175-1000-89da-4983015d8220","parent":{"ref":"EID6a3a0cbe-0175-1000-ff76-938c55b89e27"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:23:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3a0e41-0175-1000-2074-2df5a0cf8e7c","parent":{"ref":"EID6a3a0cbe-0175-1000-ff76-938c55b89e27"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:23:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3a0e41-0175-1000-232c-b99ed9b750ba","parent":{"ref":"EID6a3a0cbe-0175-1000-ff76-938c55b89e27"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:23:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3a0e41-0175-1000-f541-3c7b0b498cf4","parent":{"ref":"EID6a3a0cbe-0175-1000-ff76-938c55b89e27"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:23:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa0501a08-0de3-487a-9ec0-6d4072090683"},{"ref":"EID23791def-cd42-4232-af45-41bbd246c9be"},{"ref":"EID030ac938-e793-4e28-8046-33432526f058"}]},"parent":{"ref":"EID6a3a0cb6-0175-1000-d743-4747abd7df8d"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:23:10Z","duration":235,"status":"PASSED"}},"parent":{"ref":"EID6a39d251-0175-1000-908b-766fd4c74073"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:23:10Z","duration":395,"status":"PASSED"},{"id":"EID6a3a0e41-0175-1000-3691-37322efecf66","testStepResults":{"TestStepResult":{"id":"EID6a3a0e41-0175-1000-6d52-8561b359acfd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a0fe6-0175-1000-1079-579afc68aba6","parent":{"ref":"EID6a3a0e41-0175-1000-6d52-8561b359acfd"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:23:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3a0fe6-0175-1000-3b5d-9a38a0adac6c","parent":{"ref":"EID6a3a0e41-0175-1000-6d52-8561b359acfd"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:23:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3a0fe6-0175-1000-3a32-ce8db39994a7","parent":{"ref":"EID6a3a0e41-0175-1000-6d52-8561b359acfd"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:23:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3a0fe6-0175-1000-6ca7-9df6d82ca8d1","parent":{"ref":"EID6a3a0e41-0175-1000-6d52-8561b359acfd"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:23:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3a0fe6-0175-1000-3a74-1aced873e2b5","parent":{"ref":"EID6a3a0e41-0175-1000-6d52-8561b359acfd"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:23:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3a0fe6-0175-1000-7af7-c95fa75b5612","parent":{"ref":"EID6a3a0e41-0175-1000-6d52-8561b359acfd"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:23:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID998ad829-abeb-486d-92f8-df227d133980"},{"ref":"EID1c42396f-cbf9-4b38-9fae-b6287f0b8f63"},{"ref":"EIDebdc8bfc-75b4-4daf-be57-053f47434e17"}]},"parent":{"ref":"EID6a3a0e41-0175-1000-3691-37322efecf66"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:23:11Z","duration":147,"status":"PASSED"}},"parent":{"ref":"EID6a39d251-0175-1000-908b-766fd4c74073"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:23:11Z","duration":430,"status":"PASSED"},{"id":"EID6a3a0fef-0175-1000-6080-bb3d5ed3c1f1","testStepResults":{"TestStepResult":{"id":"EID6a3a0ff9-0175-1000-ba03-51ad03b48a37","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a10dd-0175-1000-a9ed-3010bad6d440","parent":{"ref":"EID6a3a0ff9-0175-1000-ba03-51ad03b48a37"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:23:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3a10dd-0175-1000-865e-956b4fde3282","parent":{"ref":"EID6a3a0ff9-0175-1000-ba03-51ad03b48a37"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:23:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3a10dd-0175-1000-94cb-4c67cca77e86","parent":{"ref":"EID6a3a0ff9-0175-1000-ba03-51ad03b48a37"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:23:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3a10dd-0175-1000-9659-b3a2869005c2","parent":{"ref":"EID6a3a0ff9-0175-1000-ba03-51ad03b48a37"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:23:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3a10dd-0175-1000-e58b-9bfe6b935513","parent":{"ref":"EID6a3a0ff9-0175-1000-ba03-51ad03b48a37"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:23:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3a10dd-0175-1000-eaec-f13a628287e8","parent":{"ref":"EID6a3a0ff9-0175-1000-ba03-51ad03b48a37"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:23:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID02f8e1bd-8aba-4749-81b1-3eb7b2ade085"},{"ref":"EIDd77dc450-e904-4308-92df-1fe7f06b70bc"},{"ref":"EIDa4aa9e50-d4ca-4561-a9b6-a7d5ecbb50a7"}]},"parent":{"ref":"EID6a3a0fef-0175-1000-6080-bb3d5ed3c1f1"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:23:11Z","duration":36,"status":"PASSED"}},"parent":{"ref":"EID6a39d251-0175-1000-908b-766fd4c74073"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:23:11Z","duration":238,"status":"PASSED"},{"id":"EID6a3a1111-0175-1000-0968-e13a84b75b5d","testStepResults":{"TestStepResult":{"id":"EID6a3a1111-0175-1000-723b-909b211232da","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a120b-0175-1000-07fe-ef72af040aef","parent":{"ref":"EID6a3a1111-0175-1000-723b-909b211232da"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:23:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3a120b-0175-1000-ac79-ff918babd887","parent":{"ref":"EID6a3a1111-0175-1000-723b-909b211232da"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:23:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3a120b-0175-1000-a8fe-656a1c0655a1","parent":{"ref":"EID6a3a1111-0175-1000-723b-909b211232da"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:23:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3a120b-0175-1000-e96e-7f7af7d4923a","parent":{"ref":"EID6a3a1111-0175-1000-723b-909b211232da"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:23:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd5757d50-bf5a-4afa-a332-a08ea86f730b"},{"ref":"EIDa650343a-c10c-45aa-b1e5-41e60856baaf"},{"ref":"EIDbaa70175-b185-47ff-b9cb-d6c76e1046bd"}]},"parent":{"ref":"EID6a3a1111-0175-1000-0968-e13a84b75b5d"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:23:11Z","duration":120,"status":"PASSED"}},"parent":{"ref":"EID6a39d251-0175-1000-908b-766fd4c74073"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:23:11Z","duration":250,"status":"PASSED"},{"id":"EID6a3a120b-0175-1000-1203-0c14ba021709","testStepResults":{"TestStepResult":[{"id":"EID6a3a1215-0175-1000-be91-ab9b67f0d133","attachments":{"attachment":[{"ref":"EID5aba050f-9413-4ae0-834d-e40b2b5e4781"},{"ref":"EID1989971a-a0b5-488a-b5d6-f5b64b24882f"},{"ref":"EID7164ecd3-51be-4666-ba58-afe0eb0f0898"},{"ref":"EIDb48b5027-d99e-45ee-a1d9-92c2587c1663"}]},"parent":{"ref":"EID6a3a120b-0175-1000-1203-0c14ba021709"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:23:12Z","duration":305,"status":"PASSED"},{"id":"EID6a3a137e-0175-1000-34aa-dda6b3bda931","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a14c1-0175-1000-8646-81cd3d136473","parent":{"ref":"EID6a3a137e-0175-1000-34aa-dda6b3bda931"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:23:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3a14c1-0175-1000-ba67-f8cab4259089","parent":{"ref":"EID6a3a137e-0175-1000-34aa-dda6b3bda931"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:23:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3a14c1-0175-1000-55f7-d160655687d7","parent":{"ref":"EID6a3a137e-0175-1000-34aa-dda6b3bda931"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:23:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3a14c1-0175-1000-0268-042d1aea731f","parent":{"ref":"EID6a3a137e-0175-1000-34aa-dda6b3bda931"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:23:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa9df6890-1685-45b7-b6b0-aca27a83f1a5"},{"ref":"EID8600d311-3e59-4889-8765-dc6311a1e00d"},{"ref":"EIDfc611deb-2ba8-4d9e-a77a-6f6597658cf8"}]},"parent":{"ref":"EID6a3a120b-0175-1000-1203-0c14ba021709"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:23:12Z","duration":179,"status":"PASSED"}]},"parent":{"ref":"EID6a39d251-0175-1000-908b-766fd4c74073"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:23:12Z","duration":695,"status":"PASSED"},{"id":"EID6a3a14ca-0175-1000-4d63-343f5fce5068","testStepResults":{"TestStepResult":{"id":"EID6a3a14ca-0175-1000-528f-c63dc2aacf0d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a1596-0175-1000-3b37-f652204509f1","parent":{"ref":"EID6a3a14ca-0175-1000-528f-c63dc2aacf0d"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:23:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3a1596-0175-1000-a731-f537ec5d2431","parent":{"ref":"EID6a3a14ca-0175-1000-528f-c63dc2aacf0d"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:23:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3a1596-0175-1000-c4b2-8f23f6e759d0","parent":{"ref":"EID6a3a14ca-0175-1000-528f-c63dc2aacf0d"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:23:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3a1596-0175-1000-f214-83601dc68523","parent":{"ref":"EID6a3a14ca-0175-1000-528f-c63dc2aacf0d"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:23:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDff904dd9-cd9c-4f27-a340-ea157f584813"},{"ref":"EID13472cd4-8e30-4e70-88d6-bbbceb1fb8ab"},{"ref":"EID0f46df78-c0bb-4a71-9f75-d77525f1a6ff"}]},"parent":{"ref":"EID6a3a14ca-0175-1000-4d63-343f5fce5068"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:23:12Z","duration":66,"status":"PASSED"}},"parent":{"ref":"EID6a39d251-0175-1000-908b-766fd4c74073"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:23:12Z","duration":205,"status":"PASSED"},{"id":"EID6a3a1597-0175-1000-dd43-91c65c0f3b11","testStepResults":{"TestStepResult":[{"id":"EID6a3a1597-0175-1000-f8c7-eb8a3d14c363","parent":{"ref":"EID6a3a1597-0175-1000-dd43-91c65c0f3b11"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:23:12Z","duration":8,"status":"PASSED"},{"id":"EID6a3a159f-0175-1000-e2db-36f26bba27b8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a164c-0175-1000-0088-41e26172aad2","parent":{"ref":"EID6a3a159f-0175-1000-e2db-36f26bba27b8"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:23:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3a164c-0175-1000-0160-e5721828035d","parent":{"ref":"EID6a3a159f-0175-1000-e2db-36f26bba27b8"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:23:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3a164c-0175-1000-bb18-0ce7d2e00063","parent":{"ref":"EID6a3a159f-0175-1000-e2db-36f26bba27b8"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:23:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3a164c-0175-1000-1670-5cc19ce59afe","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6a3a159f-0175-1000-e2db-36f26bba27b8"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:23:13Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID26bc08cc-2a1c-4987-9877-5825a9bbf956"},{"ref":"EID200412ab-b17e-44aa-afdd-ef174e9edf92"},{"ref":"EID86652838-b64b-4d61-8ec5-513ceacff962"}]},"parent":{"ref":"EID6a3a1597-0175-1000-dd43-91c65c0f3b11"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:23:12Z","duration":35,"status":"FAILED"}]},"parent":{"ref":"EID6a39d251-0175-1000-908b-766fd4c74073"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:23:12Z","duration":181,"status":"FAILED"}]},"parent":{"ref":"EID8d2df79e-8dda-4de9-bb5c-fb6059cda081"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:22:55Z","duration":17414,"status":"FAILED"},{"id":"EID6a3a1657-0175-1000-6081-2abba1fe3812","testCaseResults":{"TestCaseResult":[{"id":"EID6a3a1658-0175-1000-93ec-65f38c5ece10","testStepResults":{"TestStepResult":[{"id":"EID6a3a1658-0175-1000-fda8-469b661e1614","parent":{"ref":"EID6a3a1658-0175-1000-93ec-65f38c5ece10"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:23:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3a1658-0175-1000-5e91-2ed34f41b4d7","parent":{"ref":"EID6a3a1658-0175-1000-93ec-65f38c5ece10"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:23:13Z","duration":66,"status":"PASSED"},{"id":"EID6a3a1658-0175-1000-f363-a2a8cbe9af4f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a16ed-0175-1000-4bae-b34b07bd57f7","parent":{"ref":"EID6a3a1658-0175-1000-f363-a2a8cbe9af4f"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:23:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3a16ed-0175-1000-a58e-39f024c97d0c","parent":{"ref":"EID6a3a1658-0175-1000-f363-a2a8cbe9af4f"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:23:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3a16ed-0175-1000-40d5-d908483bcd4a","parent":{"ref":"EID6a3a1658-0175-1000-f363-a2a8cbe9af4f"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:23:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1cb4be2a-d45f-4853-b465-208e2549c025"},{"ref":"EID64f341b2-b09c-473d-abe8-c5e5654c5ae6"},{"ref":"EIDfd181971-00de-460a-a788-42e9c0a7f1b3"}]},"parent":{"ref":"EID6a3a1658-0175-1000-93ec-65f38c5ece10"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:23:13Z","duration":68,"status":"PASSED"},{"id":"EID6a3a16ed-0175-1000-e99c-7ea87dda77ea","attachments":{"attachment":{"ref":"EID996e010c-4dbe-4a9b-b701-1f31a1cffdcf"}},"parent":{"ref":"EID6a3a1658-0175-1000-93ec-65f38c5ece10"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:23:13Z","duration":8,"status":"PASSED"},{"id":"EID6a3a1762-0175-1000-87c9-215bc6e0cdf2","parent":{"ref":"EID6a3a1658-0175-1000-93ec-65f38c5ece10"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:23:13Z","duration":142,"status":"PASSED"}]},"parent":{"ref":"EID6a3a1657-0175-1000-6081-2abba1fe3812"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:23:13Z","duration":408,"status":"PASSED"},{"id":"EID6a3a17f9-0175-1000-e0c8-38b788366e15","testStepResults":{"TestStepResult":[{"id":"EID6a3a17f9-0175-1000-42ac-15655a1319b2","parent":{"ref":"EID6a3a17f9-0175-1000-e0c8-38b788366e15"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:23:13Z","duration":98,"status":"PASSED"},{"id":"EID6a3a17f9-0175-1000-573d-487bdaaf08b8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a1914-0175-1000-0e7a-d06dd7e83b79","parent":{"ref":"EID6a3a17f9-0175-1000-573d-487bdaaf08b8"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:23:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3a1914-0175-1000-4809-51c8922f34af","parent":{"ref":"EID6a3a17f9-0175-1000-573d-487bdaaf08b8"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:23:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3a1914-0175-1000-6e85-4c957faf833f","parent":{"ref":"EID6a3a17f9-0175-1000-573d-487bdaaf08b8"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:23:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3a1914-0175-1000-d12c-932cc8fde281","parent":{"ref":"EID6a3a17f9-0175-1000-573d-487bdaaf08b8"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:23:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3a1914-0175-1000-1940-55ae0b524914","parent":{"ref":"EID6a3a17f9-0175-1000-573d-487bdaaf08b8"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:23:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4b5f5f03-e53c-401c-8de5-178752b4dae5"},{"ref":"EIDd304f96e-9730-4471-836c-be5b147534de"},{"ref":"EIDe2859267-de6d-421b-addb-06affed372e1"}]},"parent":{"ref":"EID6a3a17f9-0175-1000-e0c8-38b788366e15"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:23:13Z","duration":34,"status":"PASSED"}]},"parent":{"ref":"EID6a3a1657-0175-1000-6081-2abba1fe3812"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:23:13Z","duration":296,"status":"PASSED"},{"id":"EID6a3a1921-0175-1000-444a-6d7ab158518d","testStepResults":{"TestStepResult":[{"id":"EID6a3a1922-0175-1000-5778-4667630ccd76","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a199f-0175-1000-6b5c-5f84b4895a82","parent":{"ref":"EID6a3a1922-0175-1000-5778-4667630ccd76"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:23:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3a199f-0175-1000-690f-f3abc2644ae2","parent":{"ref":"EID6a3a1922-0175-1000-5778-4667630ccd76"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:23:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3a199f-0175-1000-e5b2-7a2ae0066d14","parent":{"ref":"EID6a3a1922-0175-1000-5778-4667630ccd76"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:23:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3a27d77f-b58e-4d39-8567-dc290252d546"},{"ref":"EID2d232885-1253-4712-9610-9e177e5d687c"},{"ref":"EID4d1ea1bf-a6aa-40fc-84fc-bc6c2c4c588e"}]},"parent":{"ref":"EID6a3a1921-0175-1000-444a-6d7ab158518d"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:23:13Z","duration":55,"status":"PASSED"},{"id":"EID6a3a19a0-0175-1000-0038-6a4c4e740cad","attachments":{"attachment":{"ref":"EID25dbd2ac-89a7-4d3c-932f-5ef46a32850f"}},"parent":{"ref":"EID6a3a1921-0175-1000-444a-6d7ab158518d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-27T13:23:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3a19ac-0175-1000-4cb8-90942d7234ec","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a30a4-0175-1000-f3b4-62dc24f49f13","parent":{"ref":"EID6a3a19ac-0175-1000-4cb8-90942d7234ec"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-27T13:23:19Z","duration":0,"status":"PASSED"},{"id":"EID6a3a30a4-0175-1000-b9a7-a8bb0bf019df","parent":{"ref":"EID6a3a19ac-0175-1000-4cb8-90942d7234ec"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-27T13:23:19Z","duration":0,"status":"PASSED"},{"id":"EID6a3a30a4-0175-1000-0484-8fda95fd6c90","parent":{"ref":"EID6a3a19ac-0175-1000-4cb8-90942d7234ec"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-27T13:23:19Z","duration":0,"status":"PASSED"},{"id":"EID6a3a30a4-0175-1000-31bf-702cb0330f62","parent":{"ref":"EID6a3a19ac-0175-1000-4cb8-90942d7234ec"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-27T13:23:19Z","duration":0,"status":"PASSED"},{"id":"EID6a3a30a4-0175-1000-1988-2a16e9b25c6e","parent":{"ref":"EID6a3a19ac-0175-1000-4cb8-90942d7234ec"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-27T13:23:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDea320ccd-8f84-4ecc-bde1-65cc99a3ef69"},{"ref":"EID74930226-4d3f-49d6-832d-89c7720ad24e"},{"ref":"EID25423b60-0216-4504-8735-eee707e97306"}]},"parent":{"ref":"EID6a3a1921-0175-1000-444a-6d7ab158518d"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-27T13:23:13Z","duration":5670,"status":"PASSED"}]},"parent":{"ref":"EID6a3a1657-0175-1000-6081-2abba1fe3812"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:23:13Z","duration":6019,"status":"PASSED"},{"id":"EID6a3a30a4-0175-1000-561b-b9107865673d","testStepResults":{"TestStepResult":[{"id":"EID6a3a30a4-0175-1000-666f-5f4dfc14469f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a31ae-0175-1000-a2f6-436778ae9b7f","parent":{"ref":"EID6a3a30a4-0175-1000-666f-5f4dfc14469f"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:23:20Z","duration":0,"status":"PASSED"},{"id":"EID6a3a31ae-0175-1000-3913-8717654450cc","parent":{"ref":"EID6a3a30a4-0175-1000-666f-5f4dfc14469f"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:23:20Z","duration":0,"status":"PASSED"},{"id":"EID6a3a31ae-0175-1000-4065-569297f743b1","parent":{"ref":"EID6a3a30a4-0175-1000-666f-5f4dfc14469f"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:23:20Z","duration":0,"status":"PASSED"},{"id":"EID6a3a31ae-0175-1000-6b23-420270f788ad","parent":{"ref":"EID6a3a30a4-0175-1000-666f-5f4dfc14469f"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:23:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDeb385673-5b1f-497b-b155-9a6898766ab8"},{"ref":"EID94835850-4fc3-4753-bcb4-544c90eda05f"},{"ref":"EID73400861-087e-45fb-96b0-87476c5776c6"}]},"parent":{"ref":"EID6a3a30a4-0175-1000-561b-b9107865673d"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:23:19Z","duration":49,"status":"PASSED"},{"id":"EID6a3a31b8-0175-1000-58ab-ef1b81daa94e","attachments":{"attachment":{"ref":"EID105b4f05-68c1-4dee-9289-80d3c200acb2"}},"parent":{"ref":"EID6a3a30a4-0175-1000-561b-b9107865673d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-27T13:23:20Z","duration":1,"status":"PASSED"},{"id":"EID6a3a31e7-0175-1000-e44e-e6fe05d94f9b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a32c9-0175-1000-8e38-84b0cdb8af71","parent":{"ref":"EID6a3a31e7-0175-1000-e44e-e6fe05d94f9b"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-27T13:23:20Z","duration":0,"status":"PASSED"},{"id":"EID6a3a32c9-0175-1000-0503-e2fad2706b62","parent":{"ref":"EID6a3a31e7-0175-1000-e44e-e6fe05d94f9b"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-27T13:23:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5de37b43-89c1-4ccb-a073-72b45e529654"},{"ref":"EIDb47dd6ca-cf46-4a38-9bc9-1f6e2732dad7"}]},"parent":{"ref":"EID6a3a30a4-0175-1000-561b-b9107865673d"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-27T13:23:20Z","duration":221,"status":"PASSED"},{"id":"EID6a3a32ca-0175-1000-41bb-ac6cbad201d0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a3481-0175-1000-f18b-eecfba03d05c","parent":{"ref":"EID6a3a32ca-0175-1000-41bb-ac6cbad201d0"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-27T13:23:20Z","duration":0,"status":"PASSED"},{"id":"EID6a3a3481-0175-1000-1f90-1b5aa183bee9","parent":{"ref":"EID6a3a32ca-0175-1000-41bb-ac6cbad201d0"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-27T13:23:20Z","duration":0,"status":"PASSED"},{"id":"EID6a3a3481-0175-1000-634f-3f5cfe3978ba","parent":{"ref":"EID6a3a32ca-0175-1000-41bb-ac6cbad201d0"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-27T13:23:20Z","duration":0,"status":"PASSED"},{"id":"EID6a3a3481-0175-1000-e741-cd3c0957117a","parent":{"ref":"EID6a3a32ca-0175-1000-41bb-ac6cbad201d0"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-27T13:23:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8c4a84db-b351-4a05-9300-cb08db25aebb"},{"ref":"EID751eddf9-e6e3-4477-9169-e52682b4a610"},{"ref":"EID2ebad19b-1589-456f-b3b2-9ceb4f29689e"}]},"parent":{"ref":"EID6a3a30a4-0175-1000-561b-b9107865673d"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-27T13:23:20Z","duration":294,"status":"PASSED"}]},"parent":{"ref":"EID6a3a1657-0175-1000-6081-2abba1fe3812"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:23:19Z","duration":989,"status":"PASSED"},{"id":"EID6a3a3481-0175-1000-2047-13f402fadd24","testStepResults":{"TestStepResult":{"id":"EID6a3a3481-0175-1000-989a-538735ec6d35","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a34ec-0175-1000-61a0-46f39ecfe285","parent":{"ref":"EID6a3a3481-0175-1000-989a-538735ec6d35"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:23:20Z","duration":0,"status":"PASSED"},{"id":"EID6a3a34ec-0175-1000-7374-90afe91162b4","parent":{"ref":"EID6a3a3481-0175-1000-989a-538735ec6d35"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:23:20Z","duration":0,"status":"PASSED"},{"id":"EID6a3a34ec-0175-1000-1063-c4b69b9a511f","parent":{"ref":"EID6a3a3481-0175-1000-989a-538735ec6d35"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:23:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc790d53c-9a3d-4ee1-9524-ba81bf0e09e3"},{"ref":"EID8c3de597-ba02-4ef6-9073-0c5ee7ec4124"},{"ref":"EIDf9ccf862-8f4c-4d4d-868a-b27c32c87ba9"}]},"parent":{"ref":"EID6a3a3481-0175-1000-2047-13f402fadd24"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:23:20Z","duration":34,"status":"PASSED"}},"parent":{"ref":"EID6a3a1657-0175-1000-6081-2abba1fe3812"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:23:20Z","duration":119,"status":"PASSED"},{"id":"EID6a3a34f8-0175-1000-52fa-63ad39cb3eaa","testStepResults":{"TestStepResult":{"id":"EID6a3a34f8-0175-1000-bbf5-0cac97a928e5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a35d8-0175-1000-7613-07b5560fe85b","parent":{"ref":"EID6a3a34f8-0175-1000-bbf5-0cac97a928e5"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:23:21Z","duration":0,"status":"PASSED"},{"id":"EID6a3a35d8-0175-1000-d895-20c7aebc6709","parent":{"ref":"EID6a3a34f8-0175-1000-bbf5-0cac97a928e5"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:23:21Z","duration":0,"status":"PASSED"},{"id":"EID6a3a35d8-0175-1000-55f1-2c4a2289b34d","parent":{"ref":"EID6a3a34f8-0175-1000-bbf5-0cac97a928e5"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:23:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbf158932-52c4-421e-bccb-28f8dbabc99a"},{"ref":"EID34e4e9b1-95f4-4bfe-8bd5-ad31810ca265"},{"ref":"EID20ed9982-3c78-402b-af0d-1ed53706d29b"}]},"parent":{"ref":"EID6a3a34f8-0175-1000-52fa-63ad39cb3eaa"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:23:20Z","duration":131,"status":"PASSED"}},"parent":{"ref":"EID6a3a1657-0175-1000-6081-2abba1fe3812"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:23:20Z","duration":232,"status":"PASSED"},{"id":"EID6a3a35e1-0175-1000-1e1a-871adb0710d2","testStepResults":{"TestStepResult":{"id":"EID6a3a35e1-0175-1000-9d1c-0979385a183f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a36b7-0175-1000-9ef5-41bc90c697b3","parent":{"ref":"EID6a3a35e1-0175-1000-9d1c-0979385a183f"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:23:21Z","duration":0,"status":"PASSED"},{"id":"EID6a3a36b7-0175-1000-053e-f460379a895a","parent":{"ref":"EID6a3a35e1-0175-1000-9d1c-0979385a183f"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:23:21Z","duration":0,"status":"PASSED"},{"id":"EID6a3a36b7-0175-1000-5f9f-e0f2c0e3ea99","parent":{"ref":"EID6a3a35e1-0175-1000-9d1c-0979385a183f"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:23:21Z","duration":0,"status":"PASSED"},{"id":"EID6a3a36b7-0175-1000-fcbf-37efb599d5a6","parent":{"ref":"EID6a3a35e1-0175-1000-9d1c-0979385a183f"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:23:21Z","duration":0,"status":"PASSED"},{"id":"EID6a3a36b7-0175-1000-350d-138cd183c884","parent":{"ref":"EID6a3a35e1-0175-1000-9d1c-0979385a183f"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:23:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID24c7e286-9ca3-4c36-a2cf-7567d4e2ee13"},{"ref":"EID34090951-0a9b-4914-97b4-6bfa2f123462"},{"ref":"EID275c33b1-e6a5-44f8-b72a-714a8dcb5a3c"}]},"parent":{"ref":"EID6a3a35e1-0175-1000-1e1a-871adb0710d2"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:23:21Z","duration":104,"status":"PASSED"}},"parent":{"ref":"EID6a3a1657-0175-1000-6081-2abba1fe3812"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:23:21Z","duration":214,"status":"PASSED"},{"id":"EID6a3a36b7-0175-1000-9ed0-35f3dac7cfbf","testStepResults":{"TestStepResult":{"id":"EID6a3a36b7-0175-1000-7fb3-598fabb12859","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a373e-0175-1000-2dba-1451a5282bc7","parent":{"ref":"EID6a3a36b7-0175-1000-7fb3-598fabb12859"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:23:21Z","duration":0,"status":"PASSED"},{"id":"EID6a3a373e-0175-1000-dece-bd1544a5c9f5","parent":{"ref":"EID6a3a36b7-0175-1000-7fb3-598fabb12859"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:23:21Z","duration":0,"status":"PASSED"},{"id":"EID6a3a373e-0175-1000-cf87-7a8e8440c89e","parent":{"ref":"EID6a3a36b7-0175-1000-7fb3-598fabb12859"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:23:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID91b78958-1b37-4e8f-9e6f-89636602911d"},{"ref":"EIDaf32d8f4-c746-46b3-938b-7ffeb31b8de7"},{"ref":"EID09cabe8d-3e24-4408-937f-bb1f1a62a634"}]},"parent":{"ref":"EID6a3a36b7-0175-1000-9ed0-35f3dac7cfbf"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:23:21Z","duration":52,"status":"PASSED"}},"parent":{"ref":"EID6a3a1657-0175-1000-6081-2abba1fe3812"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:23:21Z","duration":143,"status":"PASSED"},{"id":"EID6a3a3747-0175-1000-3e8a-b56fe4e24485","testStepResults":{"TestStepResult":{"id":"EID6a3a3747-0175-1000-7d93-2397e206d850","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a37ba-0175-1000-1a44-989350882614","parent":{"ref":"EID6a3a3747-0175-1000-7d93-2397e206d850"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:23:21Z","duration":0,"status":"PASSED"},{"id":"EID6a3a37ba-0175-1000-9fb6-47be1c919bcf","parent":{"ref":"EID6a3a3747-0175-1000-7d93-2397e206d850"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:23:21Z","duration":0,"status":"PASSED"},{"id":"EID6a3a37ba-0175-1000-8439-3eb4207df865","parent":{"ref":"EID6a3a3747-0175-1000-7d93-2397e206d850"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:23:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9a1147f7-dc1b-4d35-a1e7-63bf879cdbd3"},{"ref":"EID36dc16d7-0f70-40c3-b61e-5cba6546a725"},{"ref":"EID305f0953-ac06-401b-87a2-e07b7d3e3c31"}]},"parent":{"ref":"EID6a3a3747-0175-1000-3e8a-b56fe4e24485"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:23:21Z","duration":42,"status":"PASSED"}},"parent":{"ref":"EID6a3a1657-0175-1000-6081-2abba1fe3812"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:23:21Z","duration":116,"status":"PASSED"},{"id":"EID6a3a37bb-0175-1000-a865-23025d90a5e1","testStepResults":{"TestStepResult":{"id":"EID6a3a37c3-0175-1000-73f6-bc2e6c0e3f02","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a3894-0175-1000-b817-1b91b9eed95b","parent":{"ref":"EID6a3a37c3-0175-1000-73f6-bc2e6c0e3f02"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:23:21Z","duration":0,"status":"PASSED"},{"id":"EID6a3a3894-0175-1000-1f15-55a4042fc294","parent":{"ref":"EID6a3a37c3-0175-1000-73f6-bc2e6c0e3f02"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:23:21Z","duration":0,"status":"PASSED"},{"id":"EID6a3a3894-0175-1000-182c-4c92a4ea968f","parent":{"ref":"EID6a3a37c3-0175-1000-73f6-bc2e6c0e3f02"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:23:21Z","duration":0,"status":"PASSED"},{"id":"EID6a3a3894-0175-1000-3249-126c35b6bd75","parent":{"ref":"EID6a3a37c3-0175-1000-73f6-bc2e6c0e3f02"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:23:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6d938efa-7011-43e4-8402-16021c1d8d0c"},{"ref":"EID8fceea58-6999-4c8c-b37e-b80ae65e421a"},{"ref":"EID117ed1ed-f6ce-4574-a4f7-8428e028f487"}]},"parent":{"ref":"EID6a3a37bb-0175-1000-a865-23025d90a5e1"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:23:21Z","duration":46,"status":"PASSED"}},"parent":{"ref":"EID6a3a1657-0175-1000-6081-2abba1fe3812"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:23:21Z","duration":217,"status":"PASSED"},{"id":"EID6a3a3895-0175-1000-885a-7921497ecc02","testStepResults":{"TestStepResult":{"id":"EID6a3a3895-0175-1000-c60f-91296393bd83","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a3a48-0175-1000-71c7-ab93027fde62","parent":{"ref":"EID6a3a3895-0175-1000-c60f-91296393bd83"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:23:22Z","duration":0,"status":"PASSED"},{"id":"EID6a3a3a48-0175-1000-e854-02b8f73e4f37","parent":{"ref":"EID6a3a3895-0175-1000-c60f-91296393bd83"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:23:22Z","duration":0,"status":"PASSED"},{"id":"EID6a3a3a48-0175-1000-2899-0503588a9bb6","parent":{"ref":"EID6a3a3895-0175-1000-c60f-91296393bd83"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:23:22Z","duration":0,"status":"PASSED"},{"id":"EID6a3a3a48-0175-1000-b59d-6f51a0b6c5f5","parent":{"ref":"EID6a3a3895-0175-1000-c60f-91296393bd83"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:23:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID91351ca1-cb43-4eae-b833-3e36e240d54e"},{"ref":"EID69f9ead2-fe59-4a88-9bf1-b6b7370d69cd"},{"ref":"EIDd883ad56-52da-4fa5-8676-88dbe8c57c7b"}]},"parent":{"ref":"EID6a3a3895-0175-1000-885a-7921497ecc02"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:23:21Z","duration":335,"status":"PASSED"}},"parent":{"ref":"EID6a3a1657-0175-1000-6081-2abba1fe3812"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:23:21Z","duration":435,"status":"PASSED"},{"id":"EID6a3a3a48-0175-1000-4c20-810b8412add7","testStepResults":{"TestStepResult":[{"id":"EID6a3a3a48-0175-1000-cef9-a9e6ba6bb5a5","parent":{"ref":"EID6a3a3a48-0175-1000-4c20-810b8412add7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:23:22Z","duration":0,"status":"PASSED"},{"id":"EID6a3a3a48-0175-1000-e73c-b1d504c1401e","parent":{"ref":"EID6a3a3a48-0175-1000-4c20-810b8412add7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:23:22Z","duration":213,"status":"PASSED"},{"id":"EID6a3a3a52-0175-1000-b019-95cfc504f181","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a3cc4-0175-1000-4a29-b84df52bcc5e","parent":{"ref":"EID6a3a3a52-0175-1000-b019-95cfc504f181"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:23:22Z","duration":0,"status":"PASSED"},{"id":"EID6a3a3cc4-0175-1000-1939-a2a94cdf2430","parent":{"ref":"EID6a3a3a52-0175-1000-b019-95cfc504f181"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:23:22Z","duration":0,"status":"PASSED"},{"id":"EID6a3a3cc4-0175-1000-5532-fcb915f64314","parent":{"ref":"EID6a3a3a52-0175-1000-b019-95cfc504f181"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:23:22Z","duration":0,"status":"PASSED"},{"id":"EID6a3a3cc4-0175-1000-a4bb-a27974205514","parent":{"ref":"EID6a3a3a52-0175-1000-b019-95cfc504f181"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:23:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDee003149-63a5-4cb9-8413-2151dca85780"},{"ref":"EIDb9d2f0a5-9eca-44f3-89cf-fa7d2361013f"},{"ref":"EIDa59bb080-fc5a-40b6-83fc-387e4872e836"}]},"parent":{"ref":"EID6a3a3a48-0175-1000-4c20-810b8412add7"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:23:22Z","duration":65,"status":"PASSED"},{"id":"EID6a3a3cc4-0175-1000-74a9-6b6c4cf302dc","attachments":{"attachment":{"ref":"EID6be6e6b6-2b7d-4972-8562-40acfa7d8e74"}},"parent":{"ref":"EID6a3a3a48-0175-1000-4c20-810b8412add7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:23:22Z","duration":1,"status":"PASSED"},{"id":"EID6a3a3ce4-0175-1000-5705-5e15b1feeedf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a3dca-0175-1000-4a7a-39d467065327","parent":{"ref":"EID6a3a3ce4-0175-1000-5705-5e15b1feeedf"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:23:23Z","duration":0,"status":"PASSED"},{"id":"EID6a3a3dca-0175-1000-c289-8bc7cf5a1b6c","parent":{"ref":"EID6a3a3ce4-0175-1000-5705-5e15b1feeedf"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:23:23Z","duration":0,"status":"PASSED"},{"id":"EID6a3a3dca-0175-1000-9cfe-77bd25ba562b","parent":{"ref":"EID6a3a3ce4-0175-1000-5705-5e15b1feeedf"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:23:23Z","duration":0,"status":"PASSED"},{"id":"EID6a3a3dca-0175-1000-6017-0c2b8b5b88cc","parent":{"ref":"EID6a3a3ce4-0175-1000-5705-5e15b1feeedf"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:23:23Z","duration":0,"status":"PASSED"},{"id":"EID6a3a3dca-0175-1000-cd5b-f0cf0ecba61a","parent":{"ref":"EID6a3a3ce4-0175-1000-5705-5e15b1feeedf"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:23:23Z","duration":0,"status":"PASSED"},{"id":"EID6a3a3dca-0175-1000-46e4-915abdc7eb9e","parent":{"ref":"EID6a3a3ce4-0175-1000-5705-5e15b1feeedf"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:23:23Z","duration":0,"status":"PASSED"},{"id":"EID6a3a3dca-0175-1000-c654-225a93c61196","parent":{"ref":"EID6a3a3ce4-0175-1000-5705-5e15b1feeedf"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:23:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4ad2ffae-2e66-4253-b5b4-baf8d0941c59"},{"ref":"EIDa2ef374f-430c-4558-b269-1fea93fbad24"},{"ref":"EID6467bf3d-d907-4125-80c6-d6fc68eaf06d"}]},"parent":{"ref":"EID6a3a3a48-0175-1000-4c20-810b8412add7"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:23:22Z","duration":40,"status":"PASSED"}]},"parent":{"ref":"EID6a3a1657-0175-1000-6081-2abba1fe3812"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:23:22Z","duration":909,"status":"PASSED"},{"id":"EID6a3a3de1-0175-1000-2e8d-144af124d2a2","testStepResults":{"TestStepResult":[{"id":"EID6a3a3de1-0175-1000-fee6-49572d4c2b63","parent":{"ref":"EID6a3a3de1-0175-1000-2e8d-144af124d2a2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:23:23Z","duration":0,"status":"PASSED"},{"id":"EID6a3a3de1-0175-1000-e993-bc73d22f9f90","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a4078-0175-1000-0ef5-cca7181ba15e","parent":{"ref":"EID6a3a3de1-0175-1000-e993-bc73d22f9f90"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:23:23Z","duration":0,"status":"PASSED"},{"id":"EID6a3a4078-0175-1000-874c-1db60d8ab926","parent":{"ref":"EID6a3a3de1-0175-1000-e993-bc73d22f9f90"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:23:23Z","duration":0,"status":"PASSED"},{"id":"EID6a3a4078-0175-1000-2f76-879ddc8b8ead","parent":{"ref":"EID6a3a3de1-0175-1000-e993-bc73d22f9f90"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:23:23Z","duration":0,"status":"PASSED"},{"id":"EID6a3a4078-0175-1000-626d-f07935434a7f","parent":{"ref":"EID6a3a3de1-0175-1000-e993-bc73d22f9f90"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:23:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd94c0f8a-16be-467c-b81e-c1ff447ac13d"},{"ref":"EIDc8fad8d3-b4e8-4f34-9dec-8a4bf0fb2915"},{"ref":"EID2280df10-549e-42d7-9d75-7a3c6a18566b"}]},"parent":{"ref":"EID6a3a3de1-0175-1000-2e8d-144af124d2a2"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:23:23Z","duration":227,"status":"PASSED"},{"id":"EID6a3a4078-0175-1000-57b4-b8c37b613d37","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a3a4090-0175-1000-bfe0-b2df3bbb4c19","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a41a8-0175-1000-0924-06cfe2fbc57b","parent":{"ref":"EID6a3a4090-0175-1000-bfe0-b2df3bbb4c19"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:23:24Z","duration":0,"status":"PASSED"},{"id":"EID6a3a41a8-0175-1000-1659-9502733996cc","parent":{"ref":"EID6a3a4090-0175-1000-bfe0-b2df3bbb4c19"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:23:24Z","duration":0,"status":"PASSED"},{"id":"EID6a3a41a8-0175-1000-7fe9-477be4664672","parent":{"ref":"EID6a3a4090-0175-1000-bfe0-b2df3bbb4c19"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:23:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcfc84162-773b-4a75-9271-2f1e24b4c675"},{"ref":"EID70d9d5f3-f117-4b49-8b4c-a8c5f3e28dee"},{"ref":"EID24e14f14-6797-4284-b227-6ca2d032ff75"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:23:23Z","duration":147,"status":"PASSED"},{"id":"EID6a3a41c6-0175-1000-27a5-888146364aee","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a42c2-0175-1000-c8de-06736800d770","parent":{"ref":"EID6a3a41c6-0175-1000-27a5-888146364aee"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:23:24Z","duration":0,"status":"PASSED"},{"id":"EID6a3a42c2-0175-1000-d917-6144d253a2d3","parent":{"ref":"EID6a3a41c6-0175-1000-27a5-888146364aee"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:23:24Z","duration":0,"status":"PASSED"},{"id":"EID6a3a42c2-0175-1000-1dbd-e9ba7a85af53","parent":{"ref":"EID6a3a41c6-0175-1000-27a5-888146364aee"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:23:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDecafa87c-d125-4d4f-9e44-ac789582fe01"},{"ref":"EID7093478b-a49e-4e88-8530-0cd1fe633341"},{"ref":"EIDd949f82e-5ef0-4150-91d4-4726ddfbc40a"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:23:24Z","duration":166,"status":"PASSED"},{"id":"EID6a3a42eb-0175-1000-5e83-c3d43ffd2e87","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a45c9-0175-1000-6ae9-895a5c989d15","parent":{"ref":"EID6a3a42eb-0175-1000-5e83-c3d43ffd2e87"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:23:25Z","duration":0,"status":"PASSED"},{"id":"EID6a3a45c9-0175-1000-7506-3f3e64c21f07","parent":{"ref":"EID6a3a42eb-0175-1000-5e83-c3d43ffd2e87"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:23:25Z","duration":0,"status":"PASSED"},{"id":"EID6a3a45c9-0175-1000-3b30-93c624e925fc","parent":{"ref":"EID6a3a42eb-0175-1000-5e83-c3d43ffd2e87"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:23:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID083292bb-033b-4294-9893-ab8de5d17512"},{"ref":"EID96ca4727-cb85-4f28-b3e8-f5b7727aa0e2"},{"ref":"EIDab61bbdb-60b1-43b3-8ef8-a561db43ea84"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:23:24Z","duration":42,"status":"PASSED"}]},"parent":{"ref":"EID6a3a3de1-0175-1000-2e8d-144af124d2a2"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:23:23Z","duration":1363,"status":"PASSED"},{"id":"EID6a3a489d-0175-1000-4c69-a8158f2323ab","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a4a31-0175-1000-0666-98d687ab0a56","parent":{"ref":"EID6a3a489d-0175-1000-4c69-a8158f2323ab"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:23:26Z","duration":0,"status":"PASSED"},{"id":"EID6a3a4a31-0175-1000-2705-8b748fe78f7b","parent":{"ref":"EID6a3a489d-0175-1000-4c69-a8158f2323ab"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:23:26Z","duration":0,"status":"PASSED"},{"id":"EID6a3a4a31-0175-1000-f391-de16141862cb","parent":{"ref":"EID6a3a489d-0175-1000-4c69-a8158f2323ab"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:23:26Z","duration":0,"status":"PASSED"},{"id":"EID6a3a4a31-0175-1000-dc21-33f5afaf329c","parent":{"ref":"EID6a3a489d-0175-1000-4c69-a8158f2323ab"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:23:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID33ebd717-9e6c-4533-8979-acac12b3b441"},{"ref":"EID7b0f0d33-d4bc-4445-8ec0-79091745c7ec"},{"ref":"EID04a36a86-70a9-4c6d-8464-b837f21c3c76"}]},"parent":{"ref":"EID6a3a3de1-0175-1000-2e8d-144af124d2a2"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:23:25Z","duration":310,"status":"PASSED"}]},"parent":{"ref":"EID6a3a1657-0175-1000-6081-2abba1fe3812"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:23:23Z","duration":3158,"status":"PASSED"},{"id":"EID6a3a4a37-0175-1000-382f-afbcd64109f2","testStepResults":{"TestStepResult":{"id":"EID6a3a4a37-0175-1000-28f7-9693ee7e47e6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a4b53-0175-1000-fe1d-cdcc5abd2036","parent":{"ref":"EID6a3a4a37-0175-1000-28f7-9693ee7e47e6"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:23:26Z","duration":0,"status":"PASSED"},{"id":"EID6a3a4b53-0175-1000-ed15-fb481dd9cdf6","parent":{"ref":"EID6a3a4a37-0175-1000-28f7-9693ee7e47e6"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:23:26Z","duration":0,"status":"PASSED"},{"id":"EID6a3a4b53-0175-1000-9e93-f10d6d129cc6","parent":{"ref":"EID6a3a4a37-0175-1000-28f7-9693ee7e47e6"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:23:26Z","duration":0,"status":"PASSED"},{"id":"EID6a3a4b53-0175-1000-0fc0-86a9fb6f79f9","parent":{"ref":"EID6a3a4a37-0175-1000-28f7-9693ee7e47e6"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:23:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID71393973-667d-4e5f-a763-d100126a5730"},{"ref":"EID91235c35-5415-4a38-8892-8c9f0942d376"},{"ref":"EID08d3b84a-277f-488a-b6b2-719b3e93477b"}]},"parent":{"ref":"EID6a3a4a37-0175-1000-382f-afbcd64109f2"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:23:26Z","duration":125,"status":"PASSED"}},"parent":{"ref":"EID6a3a1657-0175-1000-6081-2abba1fe3812"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:23:26Z","duration":284,"status":"PASSED"}]},"parent":{"ref":"EID8d2df79e-8dda-4de9-bb5c-fb6059cda081"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:23:13Z","duration":13564,"status":"PASSED"},{"id":"EID6a3a4b53-0175-1000-9340-a753b5942e88","testCaseResults":{"TestCaseResult":[{"id":"EID6a3a4b54-0175-1000-eee3-39dd91c983ca","testStepResults":{"TestStepResult":[{"id":"EID6a3a4b54-0175-1000-a6a1-30070098b84d","parent":{"ref":"EID6a3a4b54-0175-1000-eee3-39dd91c983ca"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:23:26Z","duration":1038,"status":"PASSED"},{"id":"EID6a3a4b54-0175-1000-2338-8cacbc6a9f3f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a4cc4-0175-1000-075c-1ce01531dc46","parent":{"ref":"EID6a3a4b54-0175-1000-2338-8cacbc6a9f3f"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-27T13:23:27Z","duration":0,"status":"PASSED"},{"id":"EID6a3a4cc4-0175-1000-143d-05f2359fb6c0","parent":{"ref":"EID6a3a4b54-0175-1000-2338-8cacbc6a9f3f"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-27T13:23:27Z","duration":0,"status":"PASSED"},{"id":"EID6a3a4cc4-0175-1000-f09e-baf098fb4ab7","parent":{"ref":"EID6a3a4b54-0175-1000-2338-8cacbc6a9f3f"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-27T13:23:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe02ffee4-f4da-4674-a8b1-47c6411cb2f2"},{"ref":"EID2b6da077-138e-4e8c-92e4-63b32b04fdd7"},{"ref":"EIDc311c666-74e4-4526-9189-8c6153ddb1e4"}]},"parent":{"ref":"EID6a3a4b54-0175-1000-eee3-39dd91c983ca"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-27T13:23:26Z","duration":272,"status":"PASSED"},{"id":"EID6a3a4cc4-0175-1000-de19-7637331a3b18","attachments":{"attachment":{"ref":"EID7d30a90a-577f-4ae1-8c61-31d0bbc96d27"}},"parent":{"ref":"EID6a3a4b54-0175-1000-eee3-39dd91c983ca"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-27T13:23:27Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6a3a4b53-0175-1000-9340-a753b5942e88"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:23:26Z","duration":379,"status":"PASSED"},{"id":"EID6a3a4ccf-0175-1000-6af9-87e85203c7ea","testStepResults":{"TestStepResult":[{"id":"EID6a3a4cd0-0175-1000-d223-b89e543f1c8f","parent":{"ref":"EID6a3a4ccf-0175-1000-6af9-87e85203c7ea"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:23:27Z","duration":1038,"status":"PASSED"},{"id":"EID6a3a4cd0-0175-1000-ae38-3794726c1d65","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a4e0e-0175-1000-ea30-1e04df43c138","parent":{"ref":"EID6a3a4cd0-0175-1000-ae38-3794726c1d65"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-27T13:23:27Z","duration":0,"status":"PASSED"},{"id":"EID6a3a4e0e-0175-1000-1976-0da73a676a5e","parent":{"ref":"EID6a3a4cd0-0175-1000-ae38-3794726c1d65"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-27T13:23:27Z","duration":0,"status":"PASSED"},{"id":"EID6a3a4e0e-0175-1000-cdeb-e664f1f38c86","parent":{"ref":"EID6a3a4cd0-0175-1000-ae38-3794726c1d65"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-27T13:23:27Z","duration":0,"status":"PASSED"},{"id":"EID6a3a4e0e-0175-1000-c377-8fbc980b876e","parent":{"ref":"EID6a3a4cd0-0175-1000-ae38-3794726c1d65"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-27T13:23:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID591bea67-d09e-4bc7-bbef-1c1acffa0dbb"},{"ref":"EIDadb5a74c-e5bf-427b-a3bc-7d7675effaa1"},{"ref":"EIDe68bbeee-4b01-43bb-9e03-79c86c6b3688"}]},"parent":{"ref":"EID6a3a4ccf-0175-1000-6af9-87e85203c7ea"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-27T13:23:27Z","duration":109,"status":"PASSED"}]},"parent":{"ref":"EID6a3a4b53-0175-1000-9340-a753b5942e88"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:23:27Z","duration":319,"status":"PASSED"},{"id":"EID6a3a4e0f-0175-1000-1a1b-6c7a258dcc25","testStepResults":{"TestStepResult":[{"id":"EID6a3a4e0f-0175-1000-ce5e-d39ce8177185","parent":{"ref":"EID6a3a4e0f-0175-1000-1a1b-6c7a258dcc25"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:23:27Z","duration":1038,"status":"PASSED"},{"id":"EID6a3a4e0f-0175-1000-ea1c-e7a90bd51e07","parent":{"ref":"EID6a3a4e0f-0175-1000-1a1b-6c7a258dcc25"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-27T13:23:27Z","duration":0,"status":"PASSED"},{"id":"EID6a3a4e0f-0175-1000-ef5f-edbd32c0f01e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a4f57-0175-1000-ceba-e81d0b66a3bc","parent":{"ref":"EID6a3a4e0f-0175-1000-ef5f-edbd32c0f01e"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-27T13:23:27Z","duration":0,"status":"PASSED"},{"id":"EID6a3a4f57-0175-1000-c16f-440b42f9eab3","parent":{"ref":"EID6a3a4e0f-0175-1000-ef5f-edbd32c0f01e"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-27T13:23:27Z","duration":0,"status":"PASSED"},{"id":"EID6a3a4f57-0175-1000-6067-f1323c009706","parent":{"ref":"EID6a3a4e0f-0175-1000-ef5f-edbd32c0f01e"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-27T13:23:27Z","duration":0,"status":"PASSED"},{"id":"EID6a3a4f57-0175-1000-493b-c8e988b12172","parent":{"ref":"EID6a3a4e0f-0175-1000-ef5f-edbd32c0f01e"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-27T13:23:27Z","duration":0,"status":"PASSED"},{"id":"EID6a3a4f57-0175-1000-18ae-d6158dc513ac","parent":{"ref":"EID6a3a4e0f-0175-1000-ef5f-edbd32c0f01e"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-27T13:23:27Z","duration":0,"status":"PASSED"},{"id":"EID6a3a4f57-0175-1000-9563-62798e993d2f","parent":{"ref":"EID6a3a4e0f-0175-1000-ef5f-edbd32c0f01e"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-27T13:23:27Z","duration":0,"status":"PASSED"},{"id":"EID6a3a4f57-0175-1000-9d39-bcad69ff2a8e","parent":{"ref":"EID6a3a4e0f-0175-1000-ef5f-edbd32c0f01e"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-27T13:23:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID62578837-e661-46dc-9a1d-8e4015e073c8"},{"ref":"EIDb5dc3d92-1b21-4430-b087-6ceedf986f5f"},{"ref":"EIDe656ba8b-8569-45b6-a6b0-52f2e98aac73"}]},"parent":{"ref":"EID6a3a4e0f-0175-1000-1a1b-6c7a258dcc25"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-27T13:23:27Z","duration":93,"status":"PASSED"},{"id":"EID6a3a4f57-0175-1000-2ff0-021bd53c6a9c","invokedTests":{"":null,"TestStepResult":{"id":"EID6a3a4faf-0175-1000-e1ab-8f2b63d2a52e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a52f0-0175-1000-e246-e4fefd4ae8ed","parent":{"ref":"EID6a3a4faf-0175-1000-e1ab-8f2b63d2a52e"},"resultedFrom":{"ref":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2"},"startTimestamp":"2020-10-27T13:23:28Z","duration":0,"status":"PASSED"},{"id":"EID6a3a52f0-0175-1000-97b3-4898ee692da5","parent":{"ref":"EID6a3a4faf-0175-1000-e1ab-8f2b63d2a52e"},"resultedFrom":{"ref":"EID4c8b189c-31ec-4098-8f45-6952a58780c6"},"startTimestamp":"2020-10-27T13:23:28Z","duration":0,"status":"PASSED"},{"id":"EID6a3a52f0-0175-1000-a5e0-89f737f5d5ea","messages":{"message":{"ref":"TR.unexpectedContentType","translationArguments":{"argument":[{"token":"actual","$":"application/octet-stream"},{"token":"expected","$":"application/zip"}]}}},"parent":{"ref":"EID6a3a4faf-0175-1000-e1ab-8f2b63d2a52e"},"resultedFrom":{"ref":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3"},"startTimestamp":"2020-10-27T13:23:28Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID0dc322ff-97e5-4d25-8b5e-ac360e667630"},{"ref":"EID5403dde8-1616-48e1-ad2f-bee70e3e8704"},{"ref":"EID4b188bfc-2c59-4a45-89cd-f6039a8a1873"}]},"resultedFrom":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"startTimestamp":"2020-10-27T13:23:27Z","duration":405,"status":"FAILED"}},"attachments":{"attachment":[{"ref":"EID73f2658d-9f82-4f49-a976-c17871c3ed22"},{"ref":"EIDa4dd49e5-d03f-4059-8e50-3ffd64857868"}]},"parent":{"ref":"EID6a3a4e0f-0175-1000-1a1b-6c7a258dcc25"},"resultedFrom":{"ref":"EIDb0803022-623e-456c-aa2e-bc968ee33150"},"startTimestamp":"2020-10-27T13:23:27Z","duration":975,"status":"FAILED"}]},"parent":{"ref":"EID6a3a4b53-0175-1000-9340-a753b5942e88"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:23:27Z","duration":1350,"status":"FAILED"},{"id":"EID6a3a5355-0175-1000-d08b-eab515bd91f9","testStepResults":{"TestStepResult":[{"id":"EID6a3a5355-0175-1000-7a10-30347ed1f4b8","parent":{"ref":"EID6a3a5355-0175-1000-d08b-eab515bd91f9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:23:28Z","duration":1038,"status":"PASSED"},{"id":"EID6a3a5355-0175-1000-dfa8-c129fff7873c","parent":{"ref":"EID6a3a5355-0175-1000-d08b-eab515bd91f9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-27T13:23:28Z","duration":0,"status":"PASSED"},{"id":"EID6a3a5355-0175-1000-60e6-103174ae9285","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a5493-0175-1000-d2a4-89ec3325b57b","parent":{"ref":"EID6a3a5355-0175-1000-60e6-103174ae9285"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-27T13:23:29Z","duration":0,"status":"PASSED"},{"id":"EID6a3a5493-0175-1000-be74-20c8977f5bfd","parent":{"ref":"EID6a3a5355-0175-1000-60e6-103174ae9285"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-27T13:23:29Z","duration":0,"status":"PASSED"},{"id":"EID6a3a5493-0175-1000-76c1-fb9dd68235c2","parent":{"ref":"EID6a3a5355-0175-1000-60e6-103174ae9285"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-27T13:23:29Z","duration":0,"status":"PASSED"},{"id":"EID6a3a5493-0175-1000-4c5f-3c895a0a9a46","parent":{"ref":"EID6a3a5355-0175-1000-60e6-103174ae9285"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-27T13:23:29Z","duration":0,"status":"PASSED"},{"id":"EID6a3a5493-0175-1000-8589-97cfd2bffc5c","parent":{"ref":"EID6a3a5355-0175-1000-60e6-103174ae9285"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-27T13:23:29Z","duration":0,"status":"PASSED"},{"id":"EID6a3a5493-0175-1000-33b1-9e8b8a30e724","parent":{"ref":"EID6a3a5355-0175-1000-60e6-103174ae9285"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-27T13:23:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3cb759c3-0851-42fc-a80d-d1b45ceee4b0"},{"ref":"EIDc9a98231-0d86-4a62-beed-cf9ba7f6471b"},{"ref":"EID85d0be4a-44b1-455b-8180-77779d7e87c4"}]},"parent":{"ref":"EID6a3a5355-0175-1000-d08b-eab515bd91f9"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-27T13:23:28Z","duration":97,"status":"PASSED"},{"id":"EID6a3a5493-0175-1000-d376-475eaa3b4765","parent":{"ref":"EID6a3a5355-0175-1000-d08b-eab515bd91f9"},"resultedFrom":{"ref":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b"},"startTimestamp":"2020-10-27T13:23:29Z","duration":41,"status":"PASSED"},{"id":"EID6a3a54bd-0175-1000-e542-ef8a689c4fae","parent":{"ref":"EID6a3a5355-0175-1000-d08b-eab515bd91f9"},"resultedFrom":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"startTimestamp":"2020-10-27T13:23:29Z","duration":0,"status":"UNDEFINED"}]},"parent":{"ref":"EID6a3a4b53-0175-1000-9340-a753b5942e88"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:23:28Z","duration":360,"status":"UNDEFINED"},{"id":"EID6a3a54bd-0175-1000-d4a4-d91a9aa9e29e","testStepResults":{"TestStepResult":[{"id":"EID6a3a54bd-0175-1000-2e25-9f13dc326e44","parent":{"ref":"EID6a3a54bd-0175-1000-d4a4-d91a9aa9e29e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:23:29Z","duration":1038,"status":"PASSED"},{"id":"EID6a3a54bd-0175-1000-8caa-46ab776b5480","messages":{"message":{"ref":"TR.unexpectedContentType","translationArguments":{"argument":[{"token":"actual","$":"application/octet-stream"},{"token":"expected","$":"application/zip"}]}}},"attachments":{"attachment":[{"ref":"EID8dd86324-1450-4ddb-a7bc-282499838c43"},{"ref":"EIDefdcf864-6cb5-41a2-9c2b-dc12ae6ef022"},{"ref":"EIDcc253a25-5a3b-4c2a-b3d5-e122dd136095"},{"ref":"EIDd5310052-db46-4afd-b87c-814e59236356"},{"ref":"EID2525d9a6-bd91-4449-8923-28c98a9d0cdb"},{"ref":"EIDed9fb073-26d6-45e9-9392-fce4ea00e9df"},{"ref":"EID3af8b120-a880-4f83-9050-8166a3623839"},{"ref":"EIDd85728ef-279f-475a-a952-aa40669f2c8b"},{"ref":"EID5f81573e-2382-47ab-8fe2-50ef144071bc"},{"ref":"EID5ea19d6f-5ab6-4b62-b24e-1be6f32f3e48"},{"ref":"EIDb65b0e91-5fa3-41c3-a1d3-72f8f6ece199"},{"ref":"EID5d6a1950-39ed-41e6-9568-b0ee1504860b"},{"ref":"EIDa4e20da2-1486-41cd-b7a5-99c0295d635d"},{"ref":"EID895836df-aa04-470b-a499-9242a6a5bf79"},{"ref":"EID1a63dd2d-ed52-4a5c-a59c-2b2a268f54e4"},{"ref":"EID8af0c68d-05d2-455c-9c13-05712b20f94c"},{"ref":"EIDc0a6f230-6751-4e14-9765-06cde8f96178"},{"ref":"EIDdacfdb19-7928-4789-a1ec-6887faa8da12"},{"ref":"EID73b2a942-b9b3-4fc5-8e31-516dc8e834d7"}]},"parent":{"ref":"EID6a3a54bd-0175-1000-d4a4-d91a9aa9e29e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-27T13:23:29Z","duration":3547,"status":"SKIPPED"}]},"parent":{"ref":"EID6a3a4b53-0175-1000-9340-a753b5942e88"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:23:29Z","duration":4123,"status":"SKIPPED"},{"id":"EID6a3a64d9-0175-1000-1aba-0d1d1639afc0","testStepResults":{"TestStepResult":[{"id":"EID6a3a64d9-0175-1000-d28e-e3acf5064893","parent":{"ref":"EID6a3a64d9-0175-1000-1aba-0d1d1639afc0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:23:33Z","duration":1038,"status":"PASSED"},{"id":"EID6a3a64d9-0175-1000-a60c-47bc5e7137ea","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a65a8-0175-1000-e12a-db208961caff","parent":{"ref":"EID6a3a64d9-0175-1000-a60c-47bc5e7137ea"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-27T13:23:33Z","duration":0,"status":"PASSED"},{"id":"EID6a3a65a8-0175-1000-e229-612eae5e1931","parent":{"ref":"EID6a3a64d9-0175-1000-a60c-47bc5e7137ea"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-27T13:23:33Z","duration":0,"status":"PASSED"},{"id":"EID6a3a65a8-0175-1000-4902-9f06961e2963","parent":{"ref":"EID6a3a64d9-0175-1000-a60c-47bc5e7137ea"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-27T13:23:33Z","duration":0,"status":"PASSED"},{"id":"EID6a3a65a8-0175-1000-f565-a221e807d398","parent":{"ref":"EID6a3a64d9-0175-1000-a60c-47bc5e7137ea"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-27T13:23:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDacb7bec4-72fd-4bfc-9583-8067ef8b0580"},{"ref":"EIDf9dd37b8-c667-495a-b59b-4d9fcf947a0c"},{"ref":"EIDb4d61901-0cd4-4668-b9cd-a6c97609986c"}]},"parent":{"ref":"EID6a3a64d9-0175-1000-1aba-0d1d1639afc0"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-27T13:23:33Z","duration":100,"status":"PASSED"}]},"parent":{"ref":"EID6a3a4b53-0175-1000-9340-a753b5942e88"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:23:33Z","duration":207,"status":"PASSED"},{"id":"EID6a3a65a8-0175-1000-3988-2e45645a8ce5","testStepResults":{"TestStepResult":[{"id":"EID6a3a65a8-0175-1000-385d-1c30a9894eee","parent":{"ref":"EID6a3a65a8-0175-1000-3988-2e45645a8ce5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:23:33Z","duration":1038,"status":"PASSED"},{"id":"EID6a3a65a8-0175-1000-9690-54cdf871a189","parent":{"ref":"EID6a3a65a8-0175-1000-3988-2e45645a8ce5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-27T13:23:33Z","duration":0,"status":"PASSED"},{"id":"EID6a3a65a9-0175-1000-f50c-60ab537ac441","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a6690-0175-1000-aa19-4a00f208dec6","parent":{"ref":"EID6a3a65a9-0175-1000-f50c-60ab537ac441"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-27T13:23:33Z","duration":0,"status":"PASSED"},{"id":"EID6a3a6690-0175-1000-c8f7-5f98cf8c4a94","parent":{"ref":"EID6a3a65a9-0175-1000-f50c-60ab537ac441"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-27T13:23:33Z","duration":0,"status":"PASSED"},{"id":"EID6a3a6690-0175-1000-5c72-514e5e734556","parent":{"ref":"EID6a3a65a9-0175-1000-f50c-60ab537ac441"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-27T13:23:33Z","duration":0,"status":"PASSED"},{"id":"EID6a3a6690-0175-1000-c730-b2fdf5effacf","parent":{"ref":"EID6a3a65a9-0175-1000-f50c-60ab537ac441"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-27T13:23:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID012731dd-e7f7-4aef-8fdd-296c0fbf1928"},{"ref":"EID70363b00-7d25-491a-98c4-99185bf87c98"},{"ref":"EID9020575b-2ce0-4130-acf0-ea817bc552a3"}]},"parent":{"ref":"EID6a3a65a8-0175-1000-3988-2e45645a8ce5"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-27T13:23:33Z","duration":152,"status":"PASSED"},{"id":"EID6a3a6690-0175-1000-7baa-411e8221a64d","attachments":{"attachment":{"ref":"EIDf258f805-4089-4de3-9a71-2c79a1c76c04"}},"parent":{"ref":"EID6a3a65a8-0175-1000-3988-2e45645a8ce5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-27T13:23:33Z","duration":1,"status":"PASSED"},{"id":"EID6a3a669c-0175-1000-fb73-da5f46addef6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3a66ad-0175-1000-a925-13f466e7c76d","parent":{"ref":"EID6a3a669c-0175-1000-fb73-da5f46addef6"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-27T13:23:33Z","duration":0,"status":"PASSED"},{"id":"EID6a3a66ad-0175-1000-71a9-2a84a6eb209e","parent":{"ref":"EID6a3a669c-0175-1000-fb73-da5f46addef6"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-27T13:23:33Z","duration":0,"status":"PASSED"},{"id":"EID6a3a66ad-0175-1000-4f96-e7d0417ef8b8","parent":{"ref":"EID6a3a669c-0175-1000-fb73-da5f46addef6"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-27T13:23:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID657bcde3-7452-45c8-8939-168d676876ce"},{"ref":"EIDf13e4336-d111-4caa-a7a1-76c58c8569f8"}]},"parent":{"ref":"EID6a3a65a8-0175-1000-3988-2e45645a8ce5"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-27T13:23:33Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a3a4b53-0175-1000-9340-a753b5942e88"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:23:33Z","duration":261,"status":"PASSED"}]},"parent":{"ref":"EID8d2df79e-8dda-4de9-bb5c-fb6059cda081"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:23:26Z","duration":7002,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"ServiceEndpoint","id":"EID3a27d77f-b58e-4d39-8567-dc290252d546","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"GetParameter","id":"EIDad69bdbc-8332-43af-a7d5-f54389b50229","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDdf476b52-8eca-4ff7-8cd5-21d1f4688672","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDf258f805-4089-4de3-9a71-2c79a1c76c04","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDf258f805-4089-4de3-9a71-2c79a1c76c04"}},{"type":"ServiceResponse","id":"EIDc046d0e6-8b9c-4ee2-a09e-ef2e99db4040","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDc046d0e6-8b9c-4ee2-a09e-ef2e99db4040"}},{"type":"Message","id":"EID6513ddbb-08cf-4d79-b56d-8bc77e1707cc","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID6513ddbb-08cf-4d79-b56d-8bc77e1707cc"}},{"type":"GetParameter","id":"EID70bab2ea-0544-492f-b4c7-93dee6542ed7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID1a63dd2d-ed52-4a5c-a59c-2b2a268f54e4","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID1a63dd2d-ed52-4a5c-a59c-2b2a268f54e4"}},{"type":"GetParameter","id":"EIDe7268887-3a95-47e7-86df-fcaf2bd78bb5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDa1b25492-a5de-48b6-8674-8a418507f267","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDd304f96e-9730-4471-836c-be5b147534de","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDd304f96e-9730-4471-836c-be5b147534de"}},{"type":"GetParameter","id":"EIDe2859267-de6d-421b-addb-06affed372e1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceResponse","id":"EIDd77dc450-e904-4308-92df-1fe7f06b70bc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDd77dc450-e904-4308-92df-1fe7f06b70bc"}},{"type":"GetParameter","id":"EID4d1ea1bf-a6aa-40fc-84fc-bc6c2c4c588e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EID1d175ac9-6cb1-4c20-a502-b26310577e31","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID1d175ac9-6cb1-4c20-a502-b26310577e31"}},{"type":"GetParameter","id":"EID73400861-087e-45fb-96b0-87476c5776c6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceResponse","id":"EIDa2ef374f-430c-4558-b269-1fea93fbad24","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDa2ef374f-430c-4558-b269-1fea93fbad24"}},{"type":"Message","id":"EID7164ecd3-51be-4666-ba58-afe0eb0f0898","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID7164ecd3-51be-4666-ba58-afe0eb0f0898"}},{"type":"GetParameter","id":"EID09cabe8d-3e24-4408-937f-bb1f1a62a634","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"GetParameter","id":"EID0f46df78-c0bb-4a71-9f75-d77525f1a6ff","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID5de37b43-89c1-4ccb-a073-72b45e529654","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19zdHJvb21nZWJpZWRkaXN0cmljdGVuX25sZF9hY3RfZ3BrZy56aXA="},{"type":"GetParameter","id":"EIDc311c666-74e4-4526-9189-8c6153ddb1e4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDd5310052-db46-4afd-b87c-814e59236356","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDd5310052-db46-4afd-b87c-814e59236356"}},{"type":"ServiceResponse","id":"EID07287125-32a7-4351-9d9f-9ea48241b0e7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID07287125-32a7-4351-9d9f-9ea48241b0e7"}},{"type":"ServiceEndpoint","id":"EIDcb204e39-8940-44d5-a1ec-9aace6e019bc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID4a3da3d5-72f3-4846-921f-2eeaa0929650","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID4a3da3d5-72f3-4846-921f-2eeaa0929650"}},{"type":"ServiceResponse","id":"EIDc9a98231-0d86-4a62-beed-cf9ba7f6471b","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDc9a98231-0d86-4a62-beed-cf9ba7f6471b"}},{"type":"Message","id":"EID4f318462-dfd7-44bb-adf5-f5bd21ee701e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID4f318462-dfd7-44bb-adf5-f5bd21ee701e"}},{"type":"ServiceEndpoint","id":"EIDea320ccd-8f84-4ecc-bde1-65cc99a3ef69","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"GetParameter","id":"EID2ebad19b-1589-456f-b3b2-9ceb4f29689e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceResponse","id":"EID2b6da077-138e-4e8c-92e4-63b32b04fdd7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID2b6da077-138e-4e8c-92e4-63b32b04fdd7"}},{"type":"Message","id":"EID6950dd08-eb93-412d-a5df-2976e15431bf","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID6950dd08-eb93-412d-a5df-2976e15431bf"}},{"type":"Message","id":"EID02bd05d6-7c0e-4885-9a74-6330bdea2cd7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID02bd05d6-7c0e-4885-9a74-6330bdea2cd7"}},{"type":"Message","id":"EIDca0e89fc-37dd-490f-b4d9-3c61e4e76180","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDca0e89fc-37dd-490f-b4d9-3c61e4e76180"}},{"type":"ServiceResponse","id":"EIDa650343a-c10c-45aa-b1e5-41e60856baaf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDa650343a-c10c-45aa-b1e5-41e60856baaf"}},{"type":"ServiceResponse","id":"EID8c3de597-ba02-4ef6-9073-0c5ee7ec4124","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID8c3de597-ba02-4ef6-9073-0c5ee7ec4124"}},{"type":"ServiceEndpoint","id":"EID40634c6f-f025-4a85-866d-b105de7f28c7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID657bcde3-7452-45c8-8939-168d676876ce","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceResponse","id":"EID8fceea58-6999-4c8c-b37e-b80ae65e421a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID8fceea58-6999-4c8c-b37e-b80ae65e421a"}},{"type":"GetParameter","id":"EID86652838-b64b-4d61-8ec5-513ceacff962","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID71393973-667d-4e5f-a763-d100126a5730","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceResponse","id":"EID751eddf9-e6e3-4477-9169-e52682b4a610","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID751eddf9-e6e3-4477-9169-e52682b4a610"}},{"type":"ServiceResponse","id":"EIDb9d2f0a5-9eca-44f3-89cf-fa7d2361013f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDb9d2f0a5-9eca-44f3-89cf-fa7d2361013f"}},{"type":"Message","id":"EIDe5ecd298-0194-409f-919b-e2b11e265cec","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDe5ecd298-0194-409f-919b-e2b11e265cec"}},{"type":"ServiceResponse","id":"EID13472cd4-8e30-4e70-88d6-bbbceb1fb8ab","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID13472cd4-8e30-4e70-88d6-bbbceb1fb8ab"}},{"type":"ServiceResponse","id":"EIDaf32d8f4-c746-46b3-938b-7ffeb31b8de7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDaf32d8f4-c746-46b3-938b-7ffeb31b8de7"}},{"type":"ServiceEndpoint","id":"EID5f6eb785-8099-466d-bf8d-00506a7029ab","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID7093478b-a49e-4e88-8530-0cd1fe633341","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID7093478b-a49e-4e88-8530-0cd1fe633341"}},{"type":"GetParameter","id":"EID124492ef-591d-43e4-acae-f62628aaed24","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID70d9d5f3-f117-4b49-8b4c-a8c5f3e28dee","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID70d9d5f3-f117-4b49-8b4c-a8c5f3e28dee"}},{"type":"Message","id":"EID1a92ab8c-c7e8-48bb-9bcd-f96464e60740","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID1a92ab8c-c7e8-48bb-9bcd-f96464e60740"}},{"type":"Message","id":"EID6be6e6b6-2b7d-4972-8562-40acfa7d8e74","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID6be6e6b6-2b7d-4972-8562-40acfa7d8e74"}},{"type":"ServiceEndpoint","id":"EID6d938efa-7011-43e4-8402-16021c1d8d0c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EID2525d9a6-bd91-4449-8923-28c98a9d0cdb","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID2525d9a6-bd91-4449-8923-28c98a9d0cdb"}},{"type":"Message","id":"EID5ea19d6f-5ab6-4b62-b24e-1be6f32f3e48","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID5ea19d6f-5ab6-4b62-b24e-1be6f32f3e48"}},{"type":"ServiceResponse","id":"EID68775a87-f535-475e-a7e8-1f7353decf23","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID68775a87-f535-475e-a7e8-1f7353decf23"}},{"type":"ServiceEndpoint","id":"EID6f606105-a572-4766-99b7-592b42efcf6c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID6a2d004a-74a9-4217-a681-08ff0a9b1ba4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID6a2d004a-74a9-4217-a681-08ff0a9b1ba4"}},{"type":"GetParameter","id":"EID030ac938-e793-4e28-8046-33432526f058","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID5d6a1950-39ed-41e6-9568-b0ee1504860b","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID5d6a1950-39ed-41e6-9568-b0ee1504860b"}},{"type":"GetParameter","id":"EIDf4125cc8-cf70-4d78-a5e6-262ad0c69d38","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID20ed9982-3c78-402b-af0d-1ed53706d29b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EID47649544-4ce7-42db-822b-5a6311592bda","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID4b5f5f03-e53c-401c-8de5-178752b4dae5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceResponse","id":"EID64f341b2-b09c-473d-abe8-c5e5654c5ae6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID64f341b2-b09c-473d-abe8-c5e5654c5ae6"}},{"type":"GetParameter","id":"EID7e891fcd-bb92-4c29-833a-b1be1d79de72","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDaa5d21db-246d-4f18-94b6-a037a5064712","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDaa5d21db-246d-4f18-94b6-a037a5064712"}},{"type":"ServiceResponse","id":"EIDbba6cbd7-b6ea-4442-b57b-cb17e784c061","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDbba6cbd7-b6ea-4442-b57b-cb17e784c061"}},{"type":"Message","id":"EIDc0a6f230-6751-4e14-9765-06cde8f96178","label":"Message.18","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDc0a6f230-6751-4e14-9765-06cde8f96178"}},{"type":"ServiceResponse","id":"EID1c42396f-cbf9-4b38-9fae-b6287f0b8f63","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID1c42396f-cbf9-4b38-9fae-b6287f0b8f63"}},{"type":"Message","id":"EID3af8b120-a880-4f83-9050-8166a3623839","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID3af8b120-a880-4f83-9050-8166a3623839"}},{"type":"Message","id":"EID9e85e7cd-d44c-4350-8886-d19cba6a2724","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID9e85e7cd-d44c-4350-8886-d19cba6a2724"}},{"type":"GetParameter","id":"EIDfd5362f6-2367-466c-9318-06e80358861d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID96ca4727-cb85-4f28-b3e8-f5b7727aa0e2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID96ca4727-cb85-4f28-b3e8-f5b7727aa0e2"}},{"type":"GetParameter","id":"EID04a36a86-70a9-4c6d-8464-b837f21c3c76","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"GetParameter","id":"EID2884faab-d93d-455b-86ac-a4492de369f0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDe656ba8b-8569-45b6-a6b0-52f2e98aac73","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID62578837-e661-46dc-9a1d-8e4015e073c8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID2280df10-549e-42d7-9d75-7a3c6a18566b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EID6e086d91-cb33-4dad-b82a-01f98ef968e0","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID6e086d91-cb33-4dad-b82a-01f98ef968e0"}},{"type":"ServiceEndpoint","id":"EIDeb385673-5b1f-497b-b155-9a6898766ab8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceResponse","id":"EID337d7192-69d8-42f7-b6b7-58be2f0bd05e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID337d7192-69d8-42f7-b6b7-58be2f0bd05e"}},{"type":"ServiceResponse","id":"EID5403dde8-1616-48e1-ad2f-bee70e3e8704","label":"Service Response","encoding":"UTF-8","mimeType":"application/zip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID5403dde8-1616-48e1-ad2f-bee70e3e8704"}},{"type":"Message","id":"EID5aba050f-9413-4ae0-834d-e40b2b5e4781","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID5aba050f-9413-4ae0-834d-e40b2b5e4781"}},{"type":"ServiceResponse","id":"EID2d232885-1253-4712-9610-9e177e5d687c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID2d232885-1253-4712-9610-9e177e5d687c"}},{"type":"Message","id":"EID7da91beb-6cfa-4be6-b460-342d84dd28ac","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID7da91beb-6cfa-4be6-b460-342d84dd28ac"}},{"type":"GetParameter","id":"EIDd949f82e-5ef0-4150-91d4-4726ddfbc40a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EIDf9ccf862-8f4c-4d4d-868a-b27c32c87ba9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EID105b4f05-68c1-4dee-9289-80d3c200acb2","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID105b4f05-68c1-4dee-9289-80d3c200acb2"}},{"type":"GetParameter","id":"EID275c33b1-e6a5-44f8-b72a-714a8dcb5a3c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"GetParameter","id":"EID84681757-b69c-43dc-a11e-7bd38f3e9ac1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDd883ad56-52da-4fa5-8676-88dbe8c57c7b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EID8ed6184a-b582-4479-9064-3ff2565d704f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID200412ab-b17e-44aa-afdd-ef174e9edf92","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID200412ab-b17e-44aa-afdd-ef174e9edf92"}},{"type":"Message","id":"EIDed9fb073-26d6-45e9-9392-fce4ea00e9df","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDed9fb073-26d6-45e9-9392-fce4ea00e9df"}},{"type":"Message","id":"EID5f81573e-2382-47ab-8fe2-50ef144071bc","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID5f81573e-2382-47ab-8fe2-50ef144071bc"}},{"type":"ServiceEndpoint","id":"EID998ad829-abeb-486d-92f8-df227d133980","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDb88a5fd0-818c-4bc3-bd62-205ef585efce","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDb88a5fd0-818c-4bc3-bd62-205ef585efce"}},{"type":"ServiceEndpoint","id":"EIDb29a1658-2e6f-49fa-878a-71389bff4aed","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID996e010c-4dbe-4a9b-b701-1f31a1cffdcf","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID996e010c-4dbe-4a9b-b701-1f31a1cffdcf"}},{"type":"Message","id":"EID9a2eed71-37c4-46ac-ac4f-33cd59cd2954","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID9a2eed71-37c4-46ac-ac4f-33cd59cd2954"}},{"type":"ServiceEndpoint","id":"EIDa0501a08-0de3-487a-9ec0-6d4072090683","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID9fa5f07e-c33d-4d88-9c16-8544d4281a60","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID9fa5f07e-c33d-4d88-9c16-8544d4281a60"}},{"type":"ServiceResponse","id":"EIDf9dd37b8-c667-495a-b59b-4d9fcf947a0c","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDf9dd37b8-c667-495a-b59b-4d9fcf947a0c"}},{"type":"ServiceEndpoint","id":"EIDa7122141-617c-491b-9e5f-441030e1de0f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID691994f2-38d8-4e0e-825e-1d6b6f12ce2f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID691994f2-38d8-4e0e-825e-1d6b6f12ce2f"}},{"type":"ServiceResponse","id":"EID36dc16d7-0f70-40c3-b61e-5cba6546a725","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID36dc16d7-0f70-40c3-b61e-5cba6546a725"}},{"type":"ServiceResponse","id":"EID74930226-4d3f-49d6-832d-89c7720ad24e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID74930226-4d3f-49d6-832d-89c7720ad24e"}},{"type":"GetParameter","id":"EID24e14f14-6797-4284-b227-6ca2d032ff75","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EID4c293e23-6852-4b01-9797-3745ece16586","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID4c293e23-6852-4b01-9797-3745ece16586"}},{"type":"ServiceResponse","id":"EIDadb5a74c-e5bf-427b-a3bc-7d7675effaa1","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDadb5a74c-e5bf-427b-a3bc-7d7675effaa1"}},{"type":"ServiceResponse","id":"EID94835850-4fc3-4753-bcb4-544c90eda05f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID94835850-4fc3-4753-bcb4-544c90eda05f"}},{"type":"Message","id":"EID9166301a-6d7f-4a10-be3e-bc77f292c740","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID9166301a-6d7f-4a10-be3e-bc77f292c740"}},{"type":"GetParameter","id":"EID59e4481a-50ba-4c48-850f-2d1f9b8c29c6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID3cb759c3-0851-42fc-a80d-d1b45ceee4b0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID458837bf-f609-49bc-b03c-dee5a232208b","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID458837bf-f609-49bc-b03c-dee5a232208b"}},{"type":"Message","id":"EID7d30a90a-577f-4ae1-8c61-31d0bbc96d27","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID7d30a90a-577f-4ae1-8c61-31d0bbc96d27"}},{"type":"ServiceEndpoint","id":"EID5fcef0f8-a839-44f3-9c6d-18f80539abe5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID08d3b84a-277f-488a-b6b2-719b3e93477b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EIDa305cbd5-e433-4f69-a1ac-860e0266e805","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDa305cbd5-e433-4f69-a1ac-860e0266e805"}},{"type":"GetParameter","id":"EIDf13e4336-d111-4caa-a7a1-76c58c8569f8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceEndpoint","id":"EID591bea67-d09e-4bc7-bbef-1c1acffa0dbb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDbf158932-52c4-421e-bccb-28f8dbabc99a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EID24c7e286-9ca3-4c36-a2cf-7567d4e2ee13","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EID64a06daa-8e29-48e0-9833-fc9a13e0e5ab","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDb48b5027-d99e-45ee-a1d9-92c2587c1663","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDb48b5027-d99e-45ee-a1d9-92c2587c1663"}},{"type":"ServiceEndpoint","id":"EID907b816b-b61b-4b78-91c0-1a29f1a2dd7b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID73b2a942-b9b3-4fc5-8e31-516dc8e834d7","label":"Message.20","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID73b2a942-b9b3-4fc5-8e31-516dc8e834d7"}},{"type":"ServiceEndpoint","id":"EIDd5757d50-bf5a-4afa-a332-a08ea86f730b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID117ed1ed-f6ce-4574-a4f7-8428e028f487","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EID91351ca1-cb43-4eae-b833-3e36e240d54e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EID137eff56-ff28-4bd3-a0ea-b9d32311e6c5","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID137eff56-ff28-4bd3-a0ea-b9d32311e6c5"}},{"type":"ServiceResponse","id":"EID70363b00-7d25-491a-98c4-99185bf87c98","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID70363b00-7d25-491a-98c4-99185bf87c98"}},{"type":"ServiceEndpoint","id":"EID98ecd22f-2123-4bc1-bc4a-659440966a81","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID89fc29fb-663c-4d5f-86ba-1ad1e607d023","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID89fc29fb-663c-4d5f-86ba-1ad1e607d023"}},{"type":"Message","id":"EID2ff228f7-e8d3-4857-952a-c129453648fa","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID2ff228f7-e8d3-4857-952a-c129453648fa"}},{"type":"ServiceEndpoint","id":"EID083292bb-033b-4294-9893-ab8de5d17512","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EID9a1147f7-dc1b-4d35-a1e7-63bf879cdbd3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EIDdacfdb19-7928-4789-a1ec-6887faa8da12","label":"Message.19","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDdacfdb19-7928-4789-a1ec-6887faa8da12"}},{"type":"ServiceEndpoint","id":"EID4ad2ffae-2e66-4253-b5b4-baf8d0941c59","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EID8c4a84db-b351-4a05-9300-cb08db25aebb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EIDcc253a25-5a3b-4c2a-b3d5-e122dd136095","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDcc253a25-5a3b-4c2a-b3d5-e122dd136095"}},{"type":"Message","id":"EID1989971a-a0b5-488a-b5d6-f5b64b24882f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID1989971a-a0b5-488a-b5d6-f5b64b24882f"}},{"type":"Message","id":"EID8dd86324-1450-4ddb-a7bc-282499838c43","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID8dd86324-1450-4ddb-a7bc-282499838c43"}},{"type":"ServiceResponse","id":"EIDfd235805-c7f1-4412-b27b-e96aa5e339a8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDfd235805-c7f1-4412-b27b-e96aa5e339a8"}},{"type":"GetParameter","id":"EID7aca0c76-4f20-4477-ab17-c8a036e764e5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID25423b60-0216-4504-8735-eee707e97306","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EID91b78958-1b37-4e8f-9e6f-89636602911d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EIDc790d53c-9a3d-4ee1-9524-ba81bf0e09e3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceResponse","id":"EIDc8fad8d3-b4e8-4f34-9dec-8a4bf0fb2915","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDc8fad8d3-b4e8-4f34-9dec-8a4bf0fb2915"}},{"type":"ServiceResponse","id":"EIDb5dc3d92-1b21-4430-b087-6ceedf986f5f","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDb5dc3d92-1b21-4430-b087-6ceedf986f5f"}},{"type":"GetParameter","id":"EID85d0be4a-44b1-455b-8180-77779d7e87c4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDa4aa9e50-d4ca-4561-a9b6-a7d5ecbb50a7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID2ed3e246-15be-480f-8637-9ea688a0d420","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID2ed3e246-15be-480f-8637-9ea688a0d420"}},{"type":"ServiceResponse","id":"EID23791def-cd42-4232-af45-41bbd246c9be","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID23791def-cd42-4232-af45-41bbd246c9be"}},{"type":"ServiceResponse","id":"EID52f5deb2-ce98-4013-9eca-164d41daf5b7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID52f5deb2-ce98-4013-9eca-164d41daf5b7"}},{"type":"GetParameter","id":"EIDb4d61901-0cd4-4668-b9cd-a6c97609986c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDe68bbeee-4b01-43bb-9e03-79c86c6b3688","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDb47dd6ca-cf46-4a38-9bc9-1f6e2732dad7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19zdHJvb21nZWJpZWRkaXN0cmljdGVuX25sZF9hY3RfZ3BrZy56aXA="},{"type":"Message","id":"EIDd85728ef-279f-475a-a952-aa40669f2c8b","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDd85728ef-279f-475a-a952-aa40669f2c8b"}},{"type":"GetParameter","id":"EIDfc611deb-2ba8-4d9e-a77a-6f6597658cf8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID4b188bfc-2c59-4a45-89cd-f6039a8a1873","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19zdHJvb21nZWJpZWRkaXN0cmljdGVuX25sZF9hY3RfZ3BrZy56aXA="},{"type":"ServiceEndpoint","id":"EID26bc08cc-2a1c-4987-9877-5825a9bbf956","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDab61bbdb-60b1-43b3-8ef8-a561db43ea84","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EIDa4dd49e5-d03f-4059-8e50-3ffd64857868","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDa4dd49e5-d03f-4059-8e50-3ffd64857868"}},{"type":"ServiceResponse","id":"EID69f9ead2-fe59-4a88-9bf1-b6b7370d69cd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID69f9ead2-fe59-4a88-9bf1-b6b7370d69cd"}},{"type":"Message","id":"EID8af0c68d-05d2-455c-9c13-05712b20f94c","label":"Message.16","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID8af0c68d-05d2-455c-9c13-05712b20f94c"}},{"type":"GetParameter","id":"EID9020575b-2ce0-4130-acf0-ea817bc552a3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID6f05a8f3-9a57-4983-90c7-1f517350e022","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID6f05a8f3-9a57-4983-90c7-1f517350e022"}},{"type":"ServiceEndpoint","id":"EID33ebd717-9e6c-4533-8979-acac12b3b441","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EIDa4e20da2-1486-41cd-b7a5-99c0295d635d","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDa4e20da2-1486-41cd-b7a5-99c0295d635d"}},{"type":"ServiceEndpoint","id":"EID012731dd-e7f7-4aef-8fdd-296c0fbf1928","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID02f8e1bd-8aba-4749-81b1-3eb7b2ade085","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDecafa87c-d125-4d4f-9e44-ac789582fe01","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EID88a69dfc-f04e-4224-9751-7fe65fa89fe1","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID88a69dfc-f04e-4224-9751-7fe65fa89fe1"}},{"type":"ServiceResponse","id":"EID7b0f0d33-d4bc-4445-8ec0-79091745c7ec","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID7b0f0d33-d4bc-4445-8ec0-79091745c7ec"}},{"type":"Message","id":"EID603ef8e5-95ee-4105-83d1-19fc9134d90a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID603ef8e5-95ee-4105-83d1-19fc9134d90a"}},{"type":"Message","id":"EID428e308e-91e0-4e66-8e2c-93e81374b420","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID428e308e-91e0-4e66-8e2c-93e81374b420"}},{"type":"Message","id":"EID25dbd2ac-89a7-4d3c-932f-5ef46a32850f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID25dbd2ac-89a7-4d3c-932f-5ef46a32850f"}},{"type":"GetParameter","id":"EID305f0953-ac06-401b-87a2-e07b7d3e3c31","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"Message","id":"EID4c37312f-1975-4045-a670-4f05bb86908f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID4c37312f-1975-4045-a670-4f05bb86908f"}},{"type":"Message","id":"EIDb65b0e91-5fa3-41c3-a1d3-72f8f6ece199","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDb65b0e91-5fa3-41c3-a1d3-72f8f6ece199"}},{"type":"Message","id":"EID895836df-aa04-470b-a499-9242a6a5bf79","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID895836df-aa04-470b-a499-9242a6a5bf79"}},{"type":"ServiceEndpoint","id":"EIDe02ffee4-f4da-4674-a8b1-47c6411cb2f2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID3c798e93-0b47-4b1d-acc5-13123d5c5fd5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID3c798e93-0b47-4b1d-acc5-13123d5c5fd5"}},{"type":"ServiceResponse","id":"EID34090951-0a9b-4914-97b4-6bfa2f123462","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID34090951-0a9b-4914-97b4-6bfa2f123462"}},{"type":"GetParameter","id":"EIDfd181971-00de-460a-a788-42e9c0a7f1b3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID36b3a73b-5cfc-4a3f-90e3-457699fe639b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID36b3a73b-5cfc-4a3f-90e3-457699fe639b"}},{"type":"ServiceResponse","id":"EID34e4e9b1-95f4-4bfe-8bd5-ad31810ca265","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID34e4e9b1-95f4-4bfe-8bd5-ad31810ca265"}},{"type":"LogFile","id":"EID193b2ecb-29d7-47ac-b6f1-05e17185dff4","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID193b2ecb-29d7-47ac-b6f1-05e17185dff4"}},{"type":"ServiceEndpoint","id":"EID03af2874-41bc-4319-82c1-5bb41800af36","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDa7f7ee85-8235-40b6-8c4a-16e383302acf","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDa7f7ee85-8235-40b6-8c4a-16e383302acf"}},{"type":"GetParameter","id":"EIDbaa70175-b185-47ff-b9cb-d6c76e1046bd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDf04cacb5-3894-4743-a372-5717c0438eb4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDf04cacb5-3894-4743-a372-5717c0438eb4"}},{"type":"ServiceEndpoint","id":"EIDa9df6890-1685-45b7-b6b0-aca27a83f1a5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDaecdb147-52f6-4931-b397-bd39ae93d25c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID1cb4be2a-d45f-4853-b465-208e2549c025","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID0dc322ff-97e5-4d25-8b5e-ac360e667630","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kb3dubG9hZA=="},{"type":"ServiceResponse","id":"EID91235c35-5415-4a38-8892-8c9f0942d376","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID91235c35-5415-4a38-8892-8c9f0942d376"}},{"type":"ServiceEndpoint","id":"EIDacb7bec4-72fd-4bfc-9583-8067ef8b0580","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjdlNjFkOC0yNWIxLTQ1ZWUtYTJkZi0wNzEzMTJiYThhNjkvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDff904dd9-cd9c-4f27-a340-ea157f584813","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID6467bf3d-d907-4125-80c6-d6fc68eaf06d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAva3J3X3N0cm9vbWdlYmllZGRpc3RyaWN0ZW5fbmxkX2FjdC54bWw="},{"type":"ServiceEndpoint","id":"EIDcfc84162-773b-4a75-9271-2f1e24b4c675","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EID73f2658d-9f82-4f49-a976-c17871c3ed22","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID73f2658d-9f82-4f49-a976-c17871c3ed22"}},{"type":"GetParameter","id":"EIDa59bb080-fc5a-40b6-83fc-387e4872e836","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDb6bdee79-4ecf-4719-b3ba-bb813f573370","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDebdc8bfc-75b4-4daf-be57-053f47434e17","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDee003149-63a5-4cb9-8413-2151dca85780","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyYWN0dWVlbC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDd94c0f8a-16be-467c-b81e-c1ff447ac13d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EID8600d311-3e59-4889-8765-dc6311a1e00d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EID8600d311-3e59-4889-8765-dc6311a1e00d"}},{"type":"Message","id":"EIDefdcf864-6cb5-41a2-9c2b-dc12ae6ef022","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID8d2df79e-8dda-4de9-bb5c-fb6059cda081/Attachments/EIDefdcf864-6cb5-41a2-9c2b-dc12ae6ef022"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:22:54Z","duration":39290,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:23:47.671 [print] EIDee02792c-0bbb-4f5e-8981-e220c9500c85
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:23:47.672 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:23:47.672 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:23:47.672 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:23:47.672 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/ee02792c-0bbb-4f5e-8981-e220c9500c85.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:23:47.672 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/ee02792c-0bbb-4f5e-8981-e220c9500c85.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:23:47.672 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDee02792c-0bbb-4f5e-8981-e220c9500c85/log
* def embedUrl = 0.006
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.005
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.010
13:23:47.694 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
13:23:47.695 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* print sortedrefs 0.000
13:23:47.695 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
2.079
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.001
* print testRunRequest 0.000
13:17:50.941 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingtypen/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.076
13:17:50.942 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 300
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingtypen/wfs?request=GetCapabilities"}}}

13:17:53.018 response time in milliseconds: 1972.59
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:17:52 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","timestamp":"1603804672843","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingtypen/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:17:53.019 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
3.425
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:17:56.364 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/cbsprovincies/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.425
13:17:56.365 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 280
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/cbsprovincies/wfs?request=GetCapabilities"}}}

13:17:59.789 response time in milliseconds: 3321.20
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:17:59 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804679601","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:17:59.790 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
3.152
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:16:11.233 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/restwarmte/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.149
13:16:11.234 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 277
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/restwarmte/wfs?request=GetCapabilities"}}}

13:16:14.383 response time in milliseconds: 3041.58
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:16:14 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804574202","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.002
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:16:14.386 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1.642
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:19:31.914 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/schelpdierwater/wfs?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.642
13:19:31.915 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 294
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/schelpdierwater/wfs?request=GetCapabilities&service=WFS"}}}

13:19:33.556 response time in milliseconds: 1536.44
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:19:33 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804773379","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:19:33.557 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1.800
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:19:51.364 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/gn/wfs?&request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.798
13:19:51.366 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 290
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/gn/wfs?&request=GetCapabilities&service=WFS"}}}

13:19:53.163 response time in milliseconds: 1691.56
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:19:52 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804792986","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:19:53.163 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
2.878
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:15:36.282 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wko/wfs?request=Getcapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.877
13:15:36.284 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wko/wfs?request=Getcapabilities"}}}

13:15:39.155 response time in milliseconds: 2764.70
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:15:38 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804538966","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:15:39.160 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
36.424
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:20:54.741 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 5.669
13:20:54.742 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

13:21:00.409 response time in milliseconds: 4905.97
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:20:59 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:20:57 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55.json","testRuns":{"TestRun":{"id":"EID0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:20:56.768Z","testTasks":{"TestTask":{"id":"EIDbaf7bb7d-fc05-4108-8d8d-84af7cc58d56","parent":{"ref":"EID0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID108ee300-2f23-4f24-b18a-cbeb8776d385"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID108ee300-2f23-4f24-b18a-cbeb8776d385","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:20:55.178Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:20:56.172Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.003
13:21:00.414 [print] EID0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:21:00.415 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:21:00.415 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:21:00.415 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:21:00.416 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.001
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:21:00.418 [print] statuspath TestRuns/EID0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55
* print 'progresspath ', progresspath 0.000
13:21:00.418 [print] progresspath  TestRuns/EID0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55/progress
Given path progresspath 0.000
When method GET 0.514
13:21:00.420 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:00.933 response time in milliseconds: 512.29
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:21:00 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["27.10.2020 13:20:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:20:56 UTC 2020)","27.10.2020 13:20:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:20:56 - Preparing 1 Test Task:","27.10.2020 13:20:56 -  TestTask 1 (baf7bb7d-fc05-4108-8d8d-84af7cc58d56)","27.10.2020 13:20:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:20:56 -  with parameters: ","27.10.2020 13:20:56 - etf.testcases = *","27.10.2020 13:20:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:20:56 - Setting state to CREATED","27.10.2020 13:20:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:20:57 - Starting TestRun.0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55 at 2020-10-27T13:20:59Z","27.10.2020 13:20:59 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:20:59 - Project Properties: ","27.10.2020 13:20:59 - etf.testcases - * ","27.10.2020 13:20:59 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:20:59 - username -  ","27.10.2020 13:20:59 - authUser -  ","27.10.2020 13:20:59 - authMethod - basic ","27.10.2020 13:20:59 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:21:00.933 [print] {
  "val": "21",
  "max": "22",
  "log": [
    "27.10.2020 13:20:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:20:56 UTC 2020)",
    "27.10.2020 13:20:56 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:20:56 - Preparing 1 Test Task:",
    "27.10.2020 13:20:56 -  TestTask 1 (baf7bb7d-fc05-4108-8d8d-84af7cc58d56)",
    "27.10.2020 13:20:56 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:20:56 -  with parameters: ",
    "27.10.2020 13:20:56 - etf.testcases = *",
    "27.10.2020 13:20:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:20:56 - Setting state to CREATED",
    "27.10.2020 13:20:56 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:20:57 - Starting TestRun.0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55 at 2020-10-27T13:20:59Z",
    "27.10.2020 13:20:59 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:20:59 - Project Properties: ",
    "27.10.2020 13:20:59 - etf.testcases - * ",
    "27.10.2020 13:20:59 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "27.10.2020 13:20:59 - username -  ",
    "27.10.2020 13:20:59 - authUser -  ",
    "27.10.2020 13:20:59 - authMethod - basic ",
    "27.10.2020 13:20:59 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 24.264
13:21:00.934 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:01.483 response time in milliseconds: 548.81
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:21:01 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"25","max":"26","log":["27.10.2020 13:20:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:20:56 UTC 2020)","27.10.2020 13:20:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:20:56 - Preparing 1 Test Task:","27.10.2020 13:20:56 -  TestTask 1 (baf7bb7d-fc05-4108-8d8d-84af7cc58d56)","27.10.2020 13:20:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:20:56 -  with parameters: ","27.10.2020 13:20:56 - etf.testcases = *","27.10.2020 13:20:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:20:56 - Setting state to CREATED","27.10.2020 13:20:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:20:57 - Starting TestRun.0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55 at 2020-10-27T13:20:59Z","27.10.2020 13:20:59 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:20:59 - Project Properties: ","27.10.2020 13:20:59 - etf.testcases - * ","27.10.2020 13:20:59 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:20:59 - username -  ","27.10.2020 13:20:59 - authUser -  ","27.10.2020 13:20:59 - authMethod - basic ","27.10.2020 13:20:59 - TestRunTask initialized"]}

13:21:01.483 retry condition not satisfied: response.val == response.max
13:21:01.484 sleeping before retry #1
13:21:06.484 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:07.000 response time in milliseconds: 515.30
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:21:06 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"73","max":"74","log":["27.10.2020 13:20:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:20:56 UTC 2020)","27.10.2020 13:20:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:20:56 - Preparing 1 Test Task:","27.10.2020 13:20:56 -  TestTask 1 (baf7bb7d-fc05-4108-8d8d-84af7cc58d56)","27.10.2020 13:20:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:20:56 -  with parameters: ","27.10.2020 13:20:56 - etf.testcases = *","27.10.2020 13:20:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:20:56 - Setting state to CREATED","27.10.2020 13:20:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:20:57 - Starting TestRun.0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55 at 2020-10-27T13:20:59Z","27.10.2020 13:20:59 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:20:59 - Project Properties: ","27.10.2020 13:20:59 - etf.testcases - * ","27.10.2020 13:20:59 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:20:59 - username -  ","27.10.2020 13:20:59 - authUser -  ","27.10.2020 13:20:59 - authMethod - basic ","27.10.2020 13:20:59 - TestRunTask initialized","27.10.2020 13:21:02 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:21:02 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:21:05 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027"]}

13:21:07.000 retry condition not satisfied: response.val == response.max
13:21:07.000 sleeping before retry #2
13:21:12.001 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:12.535 response time in milliseconds: 533.07
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:21:12 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"136","max":"137","log":["27.10.2020 13:20:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:20:56 UTC 2020)","27.10.2020 13:20:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:20:56 - Preparing 1 Test Task:","27.10.2020 13:20:56 -  TestTask 1 (baf7bb7d-fc05-4108-8d8d-84af7cc58d56)","27.10.2020 13:20:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:20:56 -  with parameters: ","27.10.2020 13:20:56 - etf.testcases = *","27.10.2020 13:20:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:20:56 - Setting state to CREATED","27.10.2020 13:20:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:20:57 - Starting TestRun.0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55 at 2020-10-27T13:20:59Z","27.10.2020 13:20:59 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:20:59 - Project Properties: ","27.10.2020 13:20:59 - etf.testcases - * ","27.10.2020 13:20:59 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:20:59 - username -  ","27.10.2020 13:20:59 - authUser -  ","27.10.2020 13:20:59 - authMethod - basic ","27.10.2020 13:20:59 - TestRunTask initialized","27.10.2020 13:21:02 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:21:02 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:21:05 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:21:07 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:21:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:21:08 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:08 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:21:08 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:21:08 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:09 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:21:09 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:09 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:21:09 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:09 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:21:09 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:09 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:21:09 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:09 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:21:09 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:09 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:11 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:21:11 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:21:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:11 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:21:12 ERROR Response status code:404 is not in acceptable list of status codes"]}

13:21:12.541 retry condition not satisfied: response.val == response.max
13:21:12.541 sleeping before retry #3
13:21:17.542 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:18.075 response time in milliseconds: 529.49
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:21:17 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["27.10.2020 13:20:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:20:56 UTC 2020)","27.10.2020 13:20:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:20:56 - Preparing 1 Test Task:","27.10.2020 13:20:56 -  TestTask 1 (baf7bb7d-fc05-4108-8d8d-84af7cc58d56)","27.10.2020 13:20:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:20:56 -  with parameters: ","27.10.2020 13:20:56 - etf.testcases = *","27.10.2020 13:20:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:20:56 - Setting state to CREATED","27.10.2020 13:20:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:20:57 - Starting TestRun.0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55 at 2020-10-27T13:20:59Z","27.10.2020 13:20:59 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:20:59 - Project Properties: ","27.10.2020 13:20:59 - etf.testcases - * ","27.10.2020 13:20:59 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:20:59 - username -  ","27.10.2020 13:20:59 - authUser -  ","27.10.2020 13:20:59 - authMethod - basic ","27.10.2020 13:20:59 - TestRunTask initialized","27.10.2020 13:21:02 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:21:02 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:21:05 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:21:07 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:21:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:21:08 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:08 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:21:08 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:21:08 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:09 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:21:09 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:09 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:21:09 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:09 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:21:09 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:09 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:21:09 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:09 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:21:09 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:09 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:11 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:21:11 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:21:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:11 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:21:12 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:14 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:14 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:21:14 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:21:14 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:21:18.076 retry condition not satisfied: response.val == response.max
13:21:18.076 sleeping before retry #4
13:21:23.076 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:25.197 response time in milliseconds: 2120.61
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:21:25 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:21:25.198 retry condition satisfied
* print response 0.000
13:21:25.198 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 5.944
13:21:25.198 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:31.135 response time in milliseconds: 4962.94
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Cache-Control: public, max-age=120
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:21:30 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Last-Modified: Tue, 27 Oct 2020 13:21:24 GMT
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55.json","testRuns":{"TestRun":{"id":"EID0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:20:56.768Z","testTasks":{"TestTask":{"id":"EIDbaf7bb7d-fc05-4108-8d8d-84af7cc58d56","parent":{"ref":"EID0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID108ee300-2f23-4f24-b18a-cbeb8776d385"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EIDc862f648-f2eb-46a9-a504-302ceeb09057"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID108ee300-2f23-4f24-b18a-cbeb8776d385","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:20:55.178Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:20:56.172Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EIDc862f648-f2eb-46a9-a504-302ceeb09057","testObject":{"ref":"EID108ee300-2f23-4f24-b18a-cbeb8776d385"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a380b96-0175-1000-e4a3-0dcc1658ee97","testCaseResults":{"TestCaseResult":[{"id":"EID6a380b96-0175-1000-5522-9cfde1ae7752","testStepResults":{"TestStepResult":[{"id":"EID6a380b96-0175-1000-4421-09a926d0769f","parent":{"ref":"EID6a380b96-0175-1000-5522-9cfde1ae7752"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:20:59Z","duration":51,"status":"PASSED"},{"id":"EID6a380bc9-0175-1000-a17b-f8971f197b8a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a380cbc-0175-1000-176b-d4675e3df5ad","parent":{"ref":"EID6a380bc9-0175-1000-a17b-f8971f197b8a"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:20:59Z","duration":0,"status":"PASSED"},{"id":"EID6a380cbc-0175-1000-fd78-107b62b04b88","parent":{"ref":"EID6a380bc9-0175-1000-a17b-f8971f197b8a"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:20:59Z","duration":0,"status":"PASSED"},{"id":"EID6a380cbc-0175-1000-7c9f-a62dfdb9bec8","parent":{"ref":"EID6a380bc9-0175-1000-a17b-f8971f197b8a"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:20:59Z","duration":0,"status":"PASSED"},{"id":"EID6a380cbc-0175-1000-6194-faa27ea6b57a","parent":{"ref":"EID6a380bc9-0175-1000-a17b-f8971f197b8a"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:20:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2cb43024-ce2b-41c4-9891-b630828f2343"},{"ref":"EIDeedc56ff-8b0d-402f-92e5-260647bb63c9"},{"ref":"EIDba607b41-bfa7-4bf5-9d7e-c9d2f9480eab"}]},"parent":{"ref":"EID6a380b96-0175-1000-5522-9cfde1ae7752"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:20:59Z","duration":118,"status":"PASSED"}]},"parent":{"ref":"EID6a380b96-0175-1000-e4a3-0dcc1658ee97"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:20:59Z","duration":305,"status":"PASSED"},{"id":"EID6a380cd0-0175-1000-fb64-ab5e1fb8aa6b","testStepResults":{"TestStepResult":{"id":"EID6a380cd0-0175-1000-aa5a-2a951d91c452","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a380d83-0175-1000-ecba-27d2e5e93274","parent":{"ref":"EID6a380cd0-0175-1000-aa5a-2a951d91c452"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:20:59Z","duration":0,"status":"PASSED"},{"id":"EID6a380d83-0175-1000-238a-905540afbedd","parent":{"ref":"EID6a380cd0-0175-1000-aa5a-2a951d91c452"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:20:59Z","duration":1,"status":"PASSED"},{"id":"EID6a380d84-0175-1000-6d3a-0a68cc31d962","parent":{"ref":"EID6a380cd0-0175-1000-aa5a-2a951d91c452"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:20:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID91ed5c18-433c-4208-86ce-5b905d2217c3"},{"ref":"EID387016a8-133e-4671-b2e3-afd2b55d3ae0"},{"ref":"EID1477ba7a-4e99-493f-b452-fc7c7bf4757b"}]},"parent":{"ref":"EID6a380cd0-0175-1000-fb64-ab5e1fb8aa6b"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:20:59Z","duration":52,"status":"PASSED"}},"parent":{"ref":"EID6a380b96-0175-1000-e4a3-0dcc1658ee97"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:20:59Z","duration":188,"status":"PASSED"}]},"parent":{"ref":"EIDc862f648-f2eb-46a9-a504-302ceeb09057"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:20:59Z","duration":502,"status":"PASSED"},{"id":"EID6a380d8c-0175-1000-ab1f-417c7dc88413","testCaseResults":{"TestCaseResult":[{"id":"EID6a380d8c-0175-1000-3e03-b4c27cd250bf","testStepResults":{"TestStepResult":[{"id":"EID6a380d8c-0175-1000-d6e1-10a247c6d8b1","parent":{"ref":"EID6a380d8c-0175-1000-3e03-b4c27cd250bf"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:20:59Z","duration":52,"status":"PASSED"},{"id":"EID6a380d8d-0175-1000-4624-fb45bbcc12db","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a380e50-0175-1000-f3f9-b701c6207a05","parent":{"ref":"EID6a380d8d-0175-1000-4624-fb45bbcc12db"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:20:59Z","duration":0,"status":"PASSED"},{"id":"EID6a380e50-0175-1000-fe44-a16af0ce63ba","parent":{"ref":"EID6a380d8d-0175-1000-4624-fb45bbcc12db"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:20:59Z","duration":0,"status":"PASSED"},{"id":"EID6a380e50-0175-1000-423b-745b8a2c0a08","parent":{"ref":"EID6a380d8d-0175-1000-4624-fb45bbcc12db"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:20:59Z","duration":0,"status":"PASSED"},{"id":"EID6a380e50-0175-1000-d2c1-d6367a2ced4f","parent":{"ref":"EID6a380d8d-0175-1000-4624-fb45bbcc12db"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:20:59Z","duration":0,"status":"PASSED"},{"id":"EID6a380e50-0175-1000-ef68-491c5be128b1","parent":{"ref":"EID6a380d8d-0175-1000-4624-fb45bbcc12db"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:20:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDea753a7d-5e65-4041-b311-94aff6aca56b"},{"ref":"EIDc990de00-71d2-436f-b390-57bab4a7864e"},{"ref":"EID324bad00-c426-4d81-8438-01107261352d"}]},"parent":{"ref":"EID6a380d8c-0175-1000-3e03-b4c27cd250bf"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:20:59Z","duration":82,"status":"PASSED"}]},"parent":{"ref":"EID6a380d8c-0175-1000-ab1f-417c7dc88413"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:20:59Z","duration":204,"status":"PASSED"},{"id":"EID6a380e59-0175-1000-19b0-74ffb8276ae9","testStepResults":{"TestStepResult":[{"id":"EID6a380e59-0175-1000-efb0-2eb982704e87","attachments":{"attachment":[{"ref":"EID6f2505da-4943-4782-a5f3-0556f3173c70"},{"ref":"EIDcf231216-50cf-47ae-827d-4a16a8e1663d"}]},"parent":{"ref":"EID6a380e59-0175-1000-19b0-74ffb8276ae9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:20:59Z","duration":93,"status":"PASSED"},{"id":"EID6a380eed-0175-1000-4252-0e7cc93c17ec","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a380ff1-0175-1000-622f-f2644de53c78","parent":{"ref":"EID6a380eed-0175-1000-4252-0e7cc93c17ec"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:21:00Z","duration":0,"status":"PASSED"},{"id":"EID6a380ff1-0175-1000-4f27-fdfa55a5d5c4","parent":{"ref":"EID6a380eed-0175-1000-4252-0e7cc93c17ec"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:21:00Z","duration":0,"status":"PASSED"},{"id":"EID6a380ff1-0175-1000-20b0-95db46e014e9","parent":{"ref":"EID6a380eed-0175-1000-4252-0e7cc93c17ec"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:21:00Z","duration":0,"status":"PASSED"},{"id":"EID6a380ff1-0175-1000-eabb-0ee4d4c23d17","parent":{"ref":"EID6a380eed-0175-1000-4252-0e7cc93c17ec"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:21:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5cd1a34b-86fc-4768-97ab-a26348e334a7"},{"ref":"EIDa7416be2-1a80-4a0e-bf9b-403c67c0b994"},{"ref":"EID52f7b452-c943-4766-a5af-f7b75065f3c0"}]},"parent":{"ref":"EID6a380e59-0175-1000-19b0-74ffb8276ae9"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:21:00Z","duration":75,"status":"PASSED"}]},"parent":{"ref":"EID6a380d8c-0175-1000-ab1f-417c7dc88413"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:20:59Z","duration":417,"status":"PASSED"},{"id":"EID6a380ffa-0175-1000-f381-5a99a59e720e","testStepResults":{"TestStepResult":[{"id":"EID6a380ffa-0175-1000-adf9-76922a2b0e39","attachments":{"attachment":[{"ref":"EIDa8b97dff-31e9-4284-ad11-3dbd0793448e"},{"ref":"EIDf468e1a8-3727-4433-90a4-fd894d46e30a"}]},"parent":{"ref":"EID6a380ffa-0175-1000-f381-5a99a59e720e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:21:00Z","duration":149,"status":"PASSED"},{"id":"EID6a3810be-0175-1000-9344-db3c7b4f0d7a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a381178-0175-1000-b5d4-263bc511b4e4","parent":{"ref":"EID6a3810be-0175-1000-9344-db3c7b4f0d7a"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:21:00Z","duration":0,"status":"PASSED"},{"id":"EID6a381178-0175-1000-bd2b-d71e153fccf9","parent":{"ref":"EID6a3810be-0175-1000-9344-db3c7b4f0d7a"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:21:00Z","duration":0,"status":"PASSED"},{"id":"EID6a381178-0175-1000-e8d0-b948fa22d328","parent":{"ref":"EID6a3810be-0175-1000-9344-db3c7b4f0d7a"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:21:00Z","duration":0,"status":"PASSED"},{"id":"EID6a381178-0175-1000-989e-94436a1f489d","parent":{"ref":"EID6a3810be-0175-1000-9344-db3c7b4f0d7a"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:21:00Z","duration":0,"status":"PASSED"},{"id":"EID6a381178-0175-1000-4cd5-83d0ba2307a0","parent":{"ref":"EID6a3810be-0175-1000-9344-db3c7b4f0d7a"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:21:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID19ead4af-66cb-467e-a360-0ce2a0dd7cfa"},{"ref":"EID593f330d-e838-4291-8e07-80fbfdf5f44f"},{"ref":"EID558d984c-704a-4eed-a897-1f77cd05af30"}]},"parent":{"ref":"EID6a380ffa-0175-1000-f381-5a99a59e720e"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:21:00Z","duration":72,"status":"PASSED"}]},"parent":{"ref":"EID6a380d8c-0175-1000-ab1f-417c7dc88413"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:21:00Z","duration":392,"status":"PASSED"},{"id":"EID6a381183-0175-1000-21ff-fb7803881e16","testStepResults":{"TestStepResult":[{"id":"EID6a381183-0175-1000-4dc9-85601cd562e6","attachments":{"attachment":[{"ref":"EIDadc2048f-2e85-48b1-aeb3-9e1837a55c5b"},{"ref":"EIDfe12a3c9-0a98-4fbd-b958-79fe0bfbe18a"}]},"parent":{"ref":"EID6a381183-0175-1000-21ff-fb7803881e16"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:21:00Z","duration":129,"status":"PASSED"},{"id":"EID6a381230-0175-1000-3b43-d2b7929da547","parent":{"ref":"EID6a381183-0175-1000-21ff-fb7803881e16"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:21:00Z","duration":0,"status":"PASSED"},{"id":"EID6a381230-0175-1000-9efa-43fb3bcf4048","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3812fb-0175-1000-0ac3-b9d0cae6da15","parent":{"ref":"EID6a381230-0175-1000-9efa-43fb3bcf4048"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:21:01Z","duration":0,"status":"PASSED"},{"id":"EID6a3812fb-0175-1000-7fd5-d36142e475bb","parent":{"ref":"EID6a381230-0175-1000-9efa-43fb3bcf4048"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:21:01Z","duration":0,"status":"PASSED"},{"id":"EID6a3812fb-0175-1000-f954-cd45e40d8f81","parent":{"ref":"EID6a381230-0175-1000-9efa-43fb3bcf4048"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:21:01Z","duration":0,"status":"PASSED"},{"id":"EID6a3812fb-0175-1000-30a7-8c9257120f0f","parent":{"ref":"EID6a381230-0175-1000-9efa-43fb3bcf4048"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:21:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID13a6cf75-c37e-4ae7-b9fa-12d0d84e4fc1"},{"ref":"EID2d536d87-0f4f-475c-a741-af04f8342495"},{"ref":"EID545ea5d1-70fe-421c-82de-b9785c2133f6"}]},"parent":{"ref":"EID6a381183-0175-1000-21ff-fb7803881e16"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:21:00Z","duration":97,"status":"PASSED"},{"id":"EID6a3812fb-0175-1000-945a-13773ef53ff8","attachments":{"attachment":{"ref":"EID078459f8-a91c-4282-9ffd-f8dbb0a46991"}},"parent":{"ref":"EID6a381183-0175-1000-21ff-fb7803881e16"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:21:01Z","duration":1,"status":"PASSED"},{"id":"EID6a381324-0175-1000-a1ea-3994607d0864","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a38145f-0175-1000-e5ae-17feadfe0ee9","parent":{"ref":"EID6a381324-0175-1000-a1ea-3994607d0864"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:21:01Z","duration":0,"status":"PASSED"},{"id":"EID6a38145f-0175-1000-38aa-b973f37dbbdc","parent":{"ref":"EID6a381324-0175-1000-a1ea-3994607d0864"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:21:01Z","duration":0,"status":"PASSED"},{"id":"EID6a38145f-0175-1000-2c00-595d307dcf98","parent":{"ref":"EID6a381324-0175-1000-a1ea-3994607d0864"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:21:01Z","duration":0,"status":"PASSED"},{"id":"EID6a38145f-0175-1000-80a2-608a8f07f691","parent":{"ref":"EID6a381324-0175-1000-a1ea-3994607d0864"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:21:01Z","duration":0,"status":"PASSED"},{"id":"EID6a38145f-0175-1000-d8e9-6cd507c22531","parent":{"ref":"EID6a381324-0175-1000-a1ea-3994607d0864"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:21:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDaa5793ab-7dbd-4845-babd-b9807c53b02b"},{"ref":"EIDd15154c2-a618-4f15-ad37-f462b0ace58c"},{"ref":"EIDa3ceaf6d-af16-4ad2-9265-79a95fcbac4a"}]},"parent":{"ref":"EID6a381183-0175-1000-21ff-fb7803881e16"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:21:01Z","duration":95,"status":"PASSED"}]},"parent":{"ref":"EID6a380d8c-0175-1000-ab1f-417c7dc88413"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:21:00Z","duration":732,"status":"PASSED"},{"id":"EID6a381460-0175-1000-f160-9902674ae8c9","testStepResults":{"TestStepResult":[{"id":"EID6a381460-0175-1000-10c2-fc97b58c1020","attachments":{"attachment":[{"ref":"EIDaeb15dfb-6060-484d-a214-a7499f5f6be8"},{"ref":"EIDe89dc0ac-4006-4bb2-b31a-10d4dd01a2b5"}]},"parent":{"ref":"EID6a381460-0175-1000-f160-9902674ae8c9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:21:01Z","duration":188,"status":"PASSED"},{"id":"EID6a38154e-0175-1000-6b4f-8796a9636568","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a381609-0175-1000-b97f-042212267c9f","parent":{"ref":"EID6a38154e-0175-1000-6b4f-8796a9636568"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:21:01Z","duration":0,"status":"PASSED"},{"id":"EID6a381609-0175-1000-abd7-b89ff3ae24a5","parent":{"ref":"EID6a38154e-0175-1000-6b4f-8796a9636568"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:21:01Z","duration":0,"status":"PASSED"},{"id":"EID6a381609-0175-1000-338b-eee3703ea690","parent":{"ref":"EID6a38154e-0175-1000-6b4f-8796a9636568"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:21:01Z","duration":0,"status":"PASSED"},{"id":"EID6a381609-0175-1000-d9a3-194ffceefe00","parent":{"ref":"EID6a38154e-0175-1000-6b4f-8796a9636568"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:21:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID94932554-5e3e-4818-98e4-ccae337ce4a4"},{"ref":"EIDf349f8fb-b4e9-4c2e-bb62-c2749f825409"},{"ref":"EID97727292-38e8-4ca6-9a36-47bb754e0405"}]},"parent":{"ref":"EID6a381460-0175-1000-f160-9902674ae8c9"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:21:01Z","duration":70,"status":"PASSED"}]},"parent":{"ref":"EID6a380d8c-0175-1000-ab1f-417c7dc88413"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:21:01Z","duration":426,"status":"PASSED"},{"id":"EID6a38160a-0175-1000-c889-7d20ffbe668c","testStepResults":{"TestStepResult":[{"id":"EID6a38160a-0175-1000-233f-c1379e5d4d73","attachments":{"attachment":[{"ref":"EIDf705b767-1001-4425-ada2-71446236a2e3"},{"ref":"EID53e13810-80aa-4936-93f9-4cf5be88b941"}]},"parent":{"ref":"EID6a38160a-0175-1000-c889-7d20ffbe668c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:21:01Z","duration":199,"status":"PASSED"},{"id":"EID6a3816ff-0175-1000-796c-931bec55bc3b","parent":{"ref":"EID6a38160a-0175-1000-c889-7d20ffbe668c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:21:02Z","duration":0,"status":"PASSED"},{"id":"EID6a3816ff-0175-1000-af67-500fa8f4f7e7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3817d1-0175-1000-4eee-5672416229e5","parent":{"ref":"EID6a3816ff-0175-1000-af67-500fa8f4f7e7"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:21:02Z","duration":0,"status":"PASSED"},{"id":"EID6a3817d1-0175-1000-4737-e3b6d06ec2e9","parent":{"ref":"EID6a3816ff-0175-1000-af67-500fa8f4f7e7"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:21:02Z","duration":0,"status":"PASSED"},{"id":"EID6a3817d1-0175-1000-7605-3dc570b7b549","parent":{"ref":"EID6a3816ff-0175-1000-af67-500fa8f4f7e7"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:21:02Z","duration":0,"status":"PASSED"},{"id":"EID6a3817d1-0175-1000-ebf7-ea782d39f39d","parent":{"ref":"EID6a3816ff-0175-1000-af67-500fa8f4f7e7"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:21:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4047d1b0-f1b1-4886-b28b-ffcb47f7da8a"},{"ref":"EIDa2af258d-2fbf-4309-a252-fb2b95c5661e"},{"ref":"EID6039286a-3165-4c76-bcd4-5a6f702ab852"}]},"parent":{"ref":"EID6a38160a-0175-1000-c889-7d20ffbe668c"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:21:02Z","duration":104,"status":"PASSED"},{"id":"EID6a3817d1-0175-1000-fcec-f6998db8a1ad","attachments":{"attachment":{"ref":"EID4060b4ac-de99-4f75-a953-e33ec15d7517"}},"parent":{"ref":"EID6a38160a-0175-1000-c889-7d20ffbe668c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:21:02Z","duration":2,"status":"PASSED"},{"id":"EID6a3817de-0175-1000-33ce-558f3dfc68f2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a381944-0175-1000-ce2c-45844f663736","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a3817de-0175-1000-33ce-558f3dfc68f2"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:21:02Z","duration":11,"status":"FAILED"},{"id":"EID6a381950-0175-1000-d76c-efeb37bda517","parent":{"ref":"EID6a3817de-0175-1000-33ce-558f3dfc68f2"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:21:02Z","duration":0,"status":"PASSED"},{"id":"EID6a381950-0175-1000-cc56-4480bbe62b79","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6a3817de-0175-1000-33ce-558f3dfc68f2"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:21:02Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID63645a65-5cf7-4a1f-b5ec-bd0c1b2888f3"},{"ref":"EID25426e10-bc94-4e5e-8df6-e4289ffc82ed"},{"ref":"EID33013c47-2b0e-4ea8-8a82-235d2064a554"}]},"parent":{"ref":"EID6a38160a-0175-1000-c889-7d20ffbe668c"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:21:02Z","duration":291,"status":"FAILED"}]},"parent":{"ref":"EID6a380d8c-0175-1000-ab1f-417c7dc88413"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:21:01Z","duration":856,"status":"FAILED"},{"id":"EID6a381962-0175-1000-5642-dd33dd347a2d","testStepResults":{"TestStepResult":[{"id":"EID6a381962-0175-1000-9536-a3a2d39d7f51","attachments":{"attachment":[{"ref":"EID9dabeb4b-cc47-4dd7-b973-3b051a04cc3c"},{"ref":"EIDea0d7f94-8ed3-4039-b4b0-3a80e35e5a73"}]},"parent":{"ref":"EID6a381962-0175-1000-5642-dd33dd347a2d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:21:02Z","duration":142,"status":"PASSED"},{"id":"EID6a381a31-0175-1000-4ba9-850df8f64e3d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a381b5a-0175-1000-3bee-cff192bae5f2","parent":{"ref":"EID6a381a31-0175-1000-4ba9-850df8f64e3d"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:21:03Z","duration":0,"status":"PASSED"},{"id":"EID6a381b5a-0175-1000-cdde-6e9f1ec22a6b","parent":{"ref":"EID6a381a31-0175-1000-4ba9-850df8f64e3d"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:21:03Z","duration":0,"status":"PASSED"},{"id":"EID6a381b5a-0175-1000-2184-24906b18093e","parent":{"ref":"EID6a381a31-0175-1000-4ba9-850df8f64e3d"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:21:03Z","duration":0,"status":"PASSED"},{"id":"EID6a381b5a-0175-1000-8bc0-d04f2511096b","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a381a31-0175-1000-4ba9-850df8f64e3d"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:21:03Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID1d7a936c-8880-4201-9bce-c2a64cdb8c7e"},{"ref":"EID437e0dbe-d973-49b9-bdb8-a0bd9ec2213f"},{"ref":"EID39e3ef83-d636-4e20-9f1d-50deb27445b2"}]},"parent":{"ref":"EID6a381962-0175-1000-5642-dd33dd347a2d"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:21:03Z","duration":101,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a380d8c-0175-1000-ab1f-417c7dc88413"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:21:02Z","duration":505,"status":"PASSED_MANUAL"},{"id":"EID6a381b5b-0175-1000-48bd-8a1dbefa3f57","testStepResults":{"TestStepResult":{"id":"EID6a381b5b-0175-1000-f071-d7ce2cb81934","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a381c0d-0175-1000-0731-285d8cb08575","parent":{"ref":"EID6a381b5b-0175-1000-f071-d7ce2cb81934"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:21:03Z","duration":0,"status":"PASSED"},{"id":"EID6a381c0d-0175-1000-3862-ee5a5000e3f4","parent":{"ref":"EID6a381b5b-0175-1000-f071-d7ce2cb81934"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:21:03Z","duration":0,"status":"PASSED"},{"id":"EID6a381c0d-0175-1000-a049-0e191c95d3f8","parent":{"ref":"EID6a381b5b-0175-1000-f071-d7ce2cb81934"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:21:03Z","duration":0,"status":"PASSED"},{"id":"EID6a381c0d-0175-1000-7a4d-7d41b0669443","parent":{"ref":"EID6a381b5b-0175-1000-f071-d7ce2cb81934"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:21:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfc7b19d7-c444-4b1e-a517-b382b064d531"},{"ref":"EID9a824c31-9c41-4214-9ce5-dcb83d1707f5"},{"ref":"EIDcf107348-0b20-4376-ac5b-e4b5a9515c42"}]},"parent":{"ref":"EID6a381b5b-0175-1000-48bd-8a1dbefa3f57"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:21:03Z","duration":62,"status":"PASSED"}},"parent":{"ref":"EID6a380d8c-0175-1000-ab1f-417c7dc88413"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:21:03Z","duration":178,"status":"PASSED"},{"id":"EID6a381c0d-0175-1000-220f-f3432bdc1fc0","testStepResults":{"TestStepResult":{"id":"EID6a381c0d-0175-1000-5443-f6a48166c89a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a381cf9-0175-1000-2505-795c5ff59cbc","parent":{"ref":"EID6a381c0d-0175-1000-5443-f6a48166c89a"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:21:03Z","duration":0,"status":"PASSED"},{"id":"EID6a381cf9-0175-1000-59c4-267e82c7aa06","parent":{"ref":"EID6a381c0d-0175-1000-5443-f6a48166c89a"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:21:03Z","duration":0,"status":"PASSED"},{"id":"EID6a381cf9-0175-1000-da4b-8e183db715c1","parent":{"ref":"EID6a381c0d-0175-1000-5443-f6a48166c89a"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:21:03Z","duration":0,"status":"PASSED"},{"id":"EID6a381cf9-0175-1000-f7af-0fe4b49c3a18","parent":{"ref":"EID6a381c0d-0175-1000-5443-f6a48166c89a"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:21:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe2ff9133-2ac5-445d-bc54-4fa6c58684b2"},{"ref":"EIDc163d76f-3f94-4c50-b419-1abd63232bb0"},{"ref":"EIDf3eae5a5-7960-42f1-a860-022f19e391bb"}]},"parent":{"ref":"EID6a381c0d-0175-1000-220f-f3432bdc1fc0"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:21:03Z","duration":84,"status":"PASSED"}},"parent":{"ref":"EID6a380d8c-0175-1000-ab1f-417c7dc88413"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:21:03Z","duration":249,"status":"PASSED"},{"id":"EID6a381d06-0175-1000-0474-d440f5a76d9c","testStepResults":{"TestStepResult":{"id":"EID6a381d06-0175-1000-368a-da8eb66b0c1f","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EIDc4b80ebc-aa8c-4a5c-b7e7-33b011a5cf4d"},{"ref":"EID62acd44c-11a7-4f90-af26-d875b38e52c0"},{"ref":"EIDf9cf20f8-56b5-4e2f-885d-b093864ca931"},{"ref":"EID65d19fcd-7d14-49e5-854e-07622e550258"},{"ref":"EIDea9730e9-e4ba-4fa6-a0e3-31daf736a98f"},{"ref":"EID0ed8f99b-b2ac-4d33-862c-741ac4084f96"},{"ref":"EID213b1bad-c7da-4e77-b99c-8c1cb31455e1"},{"ref":"EID935521fe-b265-4c17-8461-52512de0134b"},{"ref":"EIDe728e050-11be-4866-8ac5-1b8a8cae1872"}]},"parent":{"ref":"EID6a381d06-0175-1000-0474-d440f5a76d9c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:21:03Z","duration":758,"status":"SKIPPED"}},"parent":{"ref":"EID6a380d8c-0175-1000-ab1f-417c7dc88413"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:21:03Z","duration":1363,"status":"SKIPPED"},{"id":"EID6a38225a-0175-1000-1956-36dbf19d9d69","testStepResults":{"TestStepResult":{"id":"EID6a382263-0175-1000-46b7-9497786add99","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a382359-0175-1000-4cbc-0a89a00fc426","parent":{"ref":"EID6a382263-0175-1000-46b7-9497786add99"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:21:05Z","duration":0,"status":"PASSED"},{"id":"EID6a382359-0175-1000-cd87-cc7f9d0bc1e5","parent":{"ref":"EID6a382263-0175-1000-46b7-9497786add99"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:21:05Z","duration":0,"status":"PASSED"},{"id":"EID6a382359-0175-1000-b705-6130c48b1b82","parent":{"ref":"EID6a382263-0175-1000-46b7-9497786add99"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:21:05Z","duration":0,"status":"PASSED"},{"id":"EID6a382359-0175-1000-79ba-4779093ad53d","parent":{"ref":"EID6a382263-0175-1000-46b7-9497786add99"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:21:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID735f8932-ae54-4f71-98e5-9aed8aa7497c"},{"ref":"EIDd1601bdf-fa7b-4832-b455-d846cb534958"},{"ref":"EIDba902cc4-eb8b-47e3-ae03-06e784f5fb2d"}]},"parent":{"ref":"EID6a38225a-0175-1000-1956-36dbf19d9d69"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:21:05Z","duration":100,"status":"PASSED"}},"parent":{"ref":"EID6a380d8c-0175-1000-ab1f-417c7dc88413"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:21:05Z","duration":255,"status":"PASSED"},{"id":"EID6a38235a-0175-1000-25ae-73daf3f5e5fb","testStepResults":{"TestStepResult":{"id":"EID6a38235a-0175-1000-f9e2-57e0c639aae4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a382454-0175-1000-80fd-46dc83b9aa27","parent":{"ref":"EID6a38235a-0175-1000-f9e2-57e0c639aae4"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:21:05Z","duration":0,"status":"PASSED"},{"id":"EID6a382454-0175-1000-4c20-980d0fc1ea9b","parent":{"ref":"EID6a38235a-0175-1000-f9e2-57e0c639aae4"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:21:05Z","duration":0,"status":"PASSED"},{"id":"EID6a382454-0175-1000-8f91-ec3b56054f51","parent":{"ref":"EID6a38235a-0175-1000-f9e2-57e0c639aae4"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:21:05Z","duration":0,"status":"PASSED"},{"id":"EID6a382454-0175-1000-cc66-0d4977c0d158","parent":{"ref":"EID6a38235a-0175-1000-f9e2-57e0c639aae4"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:21:05Z","duration":0,"status":"PASSED"},{"id":"EID6a382454-0175-1000-60ce-084aa83bef47","parent":{"ref":"EID6a38235a-0175-1000-f9e2-57e0c639aae4"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:21:05Z","duration":0,"status":"PASSED"},{"id":"EID6a382454-0175-1000-f197-f71ca57d893a","parent":{"ref":"EID6a38235a-0175-1000-f9e2-57e0c639aae4"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:21:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDeba8cbb0-40c3-4cfe-b4a2-5f5779b1b981"},{"ref":"EID7619c1c3-1f1a-4e43-8388-2abd9ef4079d"},{"ref":"EID6d08a64a-b6d0-4d02-abb4-e44f27f891d8"}]},"parent":{"ref":"EID6a38235a-0175-1000-25ae-73daf3f5e5fb"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:21:05Z","duration":86,"status":"PASSED"}},"parent":{"ref":"EID6a380d8c-0175-1000-ab1f-417c7dc88413"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:21:05Z","duration":250,"status":"PASSED"},{"id":"EID6a382454-0175-1000-d01d-7c96849e7171","testStepResults":{"TestStepResult":{"id":"EID6a38245e-0175-1000-628a-cecfcbb88cb6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a38256f-0175-1000-8f64-5d08328b4325","parent":{"ref":"EID6a38245e-0175-1000-628a-cecfcbb88cb6"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:21:05Z","duration":0,"status":"PASSED"},{"id":"EID6a38256f-0175-1000-c62f-3b315f818916","parent":{"ref":"EID6a38245e-0175-1000-628a-cecfcbb88cb6"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:21:05Z","duration":0,"status":"PASSED"},{"id":"EID6a38256f-0175-1000-8474-933f0a90c13a","parent":{"ref":"EID6a38245e-0175-1000-628a-cecfcbb88cb6"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:21:05Z","duration":0,"status":"PASSED"},{"id":"EID6a38256f-0175-1000-46b3-fc9473647424","parent":{"ref":"EID6a38245e-0175-1000-628a-cecfcbb88cb6"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:21:05Z","duration":0,"status":"PASSED"},{"id":"EID6a38256f-0175-1000-36af-d446524426da","parent":{"ref":"EID6a38245e-0175-1000-628a-cecfcbb88cb6"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:21:05Z","duration":0,"status":"PASSED"},{"id":"EID6a38256f-0175-1000-4a0c-151ae765c922","parent":{"ref":"EID6a38245e-0175-1000-628a-cecfcbb88cb6"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:21:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5beb63c9-7621-4a14-9402-18a3acc68b2b"},{"ref":"EID81967635-9332-4184-abfd-8ee8cafc1886"},{"ref":"EID9db1cad2-8dff-468b-a7b2-d236c6797fc1"}]},"parent":{"ref":"EID6a382454-0175-1000-d01d-7c96849e7171"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:21:05Z","duration":47,"status":"PASSED"}},"parent":{"ref":"EID6a380d8c-0175-1000-ab1f-417c7dc88413"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:21:05Z","duration":283,"status":"PASSED"},{"id":"EID6a38256f-0175-1000-a520-cc673098159c","testStepResults":{"TestStepResult":{"id":"EID6a38256f-0175-1000-0378-b136195120fc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a382638-0175-1000-5ca0-a55bb38b0ad2","parent":{"ref":"EID6a38256f-0175-1000-0378-b136195120fc"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:21:06Z","duration":0,"status":"PASSED"},{"id":"EID6a382638-0175-1000-9daa-946c195c99c0","parent":{"ref":"EID6a38256f-0175-1000-0378-b136195120fc"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:21:06Z","duration":0,"status":"PASSED"},{"id":"EID6a382638-0175-1000-a74c-4aa824b7561e","parent":{"ref":"EID6a38256f-0175-1000-0378-b136195120fc"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:21:06Z","duration":0,"status":"PASSED"},{"id":"EID6a382638-0175-1000-3c07-0e598056c14d","parent":{"ref":"EID6a38256f-0175-1000-0378-b136195120fc"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:21:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID557aca1c-2911-479b-90ba-01c2204b7c88"},{"ref":"EIDc3f86e8c-37d9-489e-854a-6692a86c05cb"},{"ref":"EID3fcbcd5d-f327-489d-94f7-09f3fc076fb4"}]},"parent":{"ref":"EID6a38256f-0175-1000-a520-cc673098159c"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:21:05Z","duration":72,"status":"PASSED"}},"parent":{"ref":"EID6a380d8c-0175-1000-ab1f-417c7dc88413"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:21:05Z","duration":215,"status":"PASSED"},{"id":"EID6a382647-0175-1000-74df-104340d3654b","testStepResults":{"TestStepResult":[{"id":"EID6a382647-0175-1000-9fd8-bbfbb5bbf74a","attachments":{"attachment":[{"ref":"EID36b9b788-7520-4ef7-9aa6-253e7b871df3"},{"ref":"EID5bd549e6-2149-49f4-9802-a1a64156010f"},{"ref":"EID82755d87-86a2-4296-b3aa-68b8db72026a"},{"ref":"EID7f4d0320-13b7-42dc-9456-2f9cc3e820c8"}]},"parent":{"ref":"EID6a382647-0175-1000-74df-104340d3654b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:21:06Z","duration":362,"status":"PASSED"},{"id":"EID6a382829-0175-1000-4cbe-9f7c17ca7959","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3829d6-0175-1000-0bf4-992ac86b7a5a","parent":{"ref":"EID6a382829-0175-1000-4cbe-9f7c17ca7959"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:21:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3829d6-0175-1000-80de-4e1a850318d9","parent":{"ref":"EID6a382829-0175-1000-4cbe-9f7c17ca7959"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:21:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3829d6-0175-1000-02e0-26667383948d","parent":{"ref":"EID6a382829-0175-1000-4cbe-9f7c17ca7959"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:21:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3829d6-0175-1000-a25e-43c502e9d37b","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6a382829-0175-1000-4cbe-9f7c17ca7959"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:21:07Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID133a6f42-674c-437f-8df8-df5276f798f8"},{"ref":"EIDe9aba276-54a3-451e-a045-b31da0134b61"},{"ref":"EIDed907493-501b-4611-ba69-672a3e6531af"}]},"parent":{"ref":"EID6a382647-0175-1000-74df-104340d3654b"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:21:06Z","duration":41,"status":"FAILED"}]},"parent":{"ref":"EID6a380d8c-0175-1000-ab1f-417c7dc88413"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:21:06Z","duration":911,"status":"FAILED"},{"id":"EID6a3829d6-0175-1000-a90d-a6d3b56f9b19","testStepResults":{"TestStepResult":{"id":"EID6a3829d7-0175-1000-382d-11a39f2c2ae5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a382af7-0175-1000-2a8f-ba88a8a9b549","parent":{"ref":"EID6a3829d7-0175-1000-382d-11a39f2c2ae5"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:21:07Z","duration":0,"status":"PASSED"},{"id":"EID6a382af7-0175-1000-2338-a0459f78b4c5","parent":{"ref":"EID6a3829d7-0175-1000-382d-11a39f2c2ae5"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:21:07Z","duration":0,"status":"PASSED"},{"id":"EID6a382af7-0175-1000-41f5-d9086f5d9eb4","parent":{"ref":"EID6a3829d7-0175-1000-382d-11a39f2c2ae5"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:21:07Z","duration":0,"status":"PASSED"},{"id":"EID6a382af7-0175-1000-4d25-97c4e656ca29","parent":{"ref":"EID6a3829d7-0175-1000-382d-11a39f2c2ae5"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:21:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID328699af-da87-4e41-9db3-1daca46541cb"},{"ref":"EID06c04218-d747-458d-aa25-8ae59cc241f6"},{"ref":"EID50b77aad-ceb6-49ea-9d33-57dddcd8b68d"}]},"parent":{"ref":"EID6a3829d6-0175-1000-a90d-a6d3b56f9b19"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:21:07Z","duration":92,"status":"PASSED"}},"parent":{"ref":"EID6a380d8c-0175-1000-ab1f-417c7dc88413"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:21:07Z","duration":353,"status":"PASSED"},{"id":"EID6a382b37-0175-1000-6917-7007cc38d8b2","testStepResults":{"TestStepResult":[{"id":"EID6a382b37-0175-1000-f452-a627ddf9580d","parent":{"ref":"EID6a382b37-0175-1000-6917-7007cc38d8b2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:21:07Z","duration":0,"status":"PASSED"},{"id":"EID6a382b37-0175-1000-dcab-aa79f687ff0c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a382eda-0175-1000-845f-4808f115a535","parent":{"ref":"EID6a382b37-0175-1000-dcab-aa79f687ff0c"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:21:08Z","duration":0,"status":"PASSED"},{"id":"EID6a382eda-0175-1000-3ce8-23cacd8833f2","parent":{"ref":"EID6a382b37-0175-1000-dcab-aa79f687ff0c"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:21:08Z","duration":0,"status":"PASSED"},{"id":"EID6a382eda-0175-1000-b3c3-f776d100213d","parent":{"ref":"EID6a382b37-0175-1000-dcab-aa79f687ff0c"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:21:08Z","duration":0,"status":"PASSED"},{"id":"EID6a382eda-0175-1000-8841-0b6671ced731","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6a382b37-0175-1000-dcab-aa79f687ff0c"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:21:08Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID6edbf9b3-8ada-4c5f-a925-89118b17a787"},{"ref":"EID8687d3fd-102d-4089-9011-a76b1e0c0f06"},{"ref":"EID597b6d0b-5d06-433d-947f-e00117e3e9f1"}]},"parent":{"ref":"EID6a382b37-0175-1000-6917-7007cc38d8b2"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:21:07Z","duration":109,"status":"FAILED"}]},"parent":{"ref":"EID6a380d8c-0175-1000-ab1f-417c7dc88413"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:21:07Z","duration":948,"status":"FAILED"}]},"parent":{"ref":"EIDc862f648-f2eb-46a9-a504-302ceeb09057"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:20:59Z","duration":8543,"status":"FAILED"},{"id":"EID6a382eeb-0175-1000-ff83-e51cb1de90ee","testCaseResults":{"TestCaseResult":[{"id":"EID6a382eeb-0175-1000-8609-7c7b9b18fca4","testStepResults":{"TestStepResult":[{"id":"EID6a382eeb-0175-1000-63de-9fa292e02bd2","parent":{"ref":"EID6a382eeb-0175-1000-8609-7c7b9b18fca4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:21:08Z","duration":0,"status":"PASSED"},{"id":"EID6a382eeb-0175-1000-8d5b-0e068ff755eb","parent":{"ref":"EID6a382eeb-0175-1000-8609-7c7b9b18fca4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:21:08Z","duration":103,"status":"PASSED"},{"id":"EID6a382ef6-0175-1000-ce6a-4d53be617f09","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a382fb3-0175-1000-4597-df0b3ae2835b","parent":{"ref":"EID6a382ef6-0175-1000-ce6a-4d53be617f09"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:21:08Z","duration":0,"status":"PASSED"},{"id":"EID6a382fb3-0175-1000-9165-5c0025eb295e","parent":{"ref":"EID6a382ef6-0175-1000-ce6a-4d53be617f09"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:21:08Z","duration":0,"status":"PASSED"},{"id":"EID6a382fb3-0175-1000-694a-a31e708f0035","parent":{"ref":"EID6a382ef6-0175-1000-ce6a-4d53be617f09"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:21:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID57babcf3-c9b3-43b5-aff6-26451ada6cb2"},{"ref":"EID8f7a9fd5-3776-4a5e-a88e-856b7d7ad072"},{"ref":"EID1c0652a8-19f1-4eeb-90bb-059b0b82e9d4"}]},"parent":{"ref":"EID6a382eeb-0175-1000-8609-7c7b9b18fca4"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:21:08Z","duration":53,"status":"PASSED"},{"id":"EID6a382fb3-0175-1000-9398-cb22a557c494","attachments":{"attachment":{"ref":"EID4e1fc276-c684-4700-935c-185338a7b608"}},"parent":{"ref":"EID6a382eeb-0175-1000-8609-7c7b9b18fca4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:21:08Z","duration":1,"status":"PASSED"},{"id":"EID6a382fbf-0175-1000-5e5c-732a85171e19","parent":{"ref":"EID6a382eeb-0175-1000-8609-7c7b9b18fca4"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:21:08Z","duration":48,"status":"PASSED"}]},"parent":{"ref":"EID6a382eeb-0175-1000-ff83-e51cb1de90ee"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:21:08Z","duration":260,"status":"PASSED"},{"id":"EID6a382ff0-0175-1000-f212-7445b05e9006","testStepResults":{"TestStepResult":[{"id":"EID6a382ff0-0175-1000-47d0-6671ec04c3bc","parent":{"ref":"EID6a382ff0-0175-1000-f212-7445b05e9006"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:21:08Z","duration":52,"status":"PASSED"},{"id":"EID6a382ff0-0175-1000-cb90-f5a56b85b06e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3830f6-0175-1000-f9b1-37d1e9abe2d8","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a382ff0-0175-1000-cb90-f5a56b85b06e"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:21:08Z","duration":15,"status":"FAILED"},{"id":"EID6a383105-0175-1000-5ef1-2310be581904","parent":{"ref":"EID6a382ff0-0175-1000-cb90-f5a56b85b06e"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:21:08Z","duration":0,"status":"PASSED"},{"id":"EID6a383105-0175-1000-5fdd-7b499de1d964","parent":{"ref":"EID6a382ff0-0175-1000-cb90-f5a56b85b06e"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:21:08Z","duration":0,"status":"PASSED"},{"id":"EID6a383105-0175-1000-1087-2116e5e871ca","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6a382ff0-0175-1000-cb90-f5a56b85b06e"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:21:08Z","duration":1,"status":"FAILED"},{"id":"EID6a383106-0175-1000-a823-27bca82d3205","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6a382ff0-0175-1000-cb90-f5a56b85b06e"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:21:08Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID59ae659e-b6cf-4b4e-934a-5457e35ed896"},{"ref":"EID849a77f7-78ac-4ae9-b264-3f55f838562b"},{"ref":"EID9309417e-d35f-403b-8336-d60c26270a74"}]},"parent":{"ref":"EID6a382ff0-0175-1000-f212-7445b05e9006"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:21:08Z","duration":32,"status":"FAILED"}]},"parent":{"ref":"EID6a382eeb-0175-1000-ff83-e51cb1de90ee"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:21:08Z","duration":278,"status":"FAILED"},{"id":"EID6a383106-0175-1000-3c4b-8e62656b8f26","testStepResults":{"TestStepResult":{"id":"EID6a383106-0175-1000-0fe3-78f4c74c77c3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a383160-0175-1000-8667-5f5cac4a4eb0","parent":{"ref":"EID6a383106-0175-1000-0fe3-78f4c74c77c3"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:21:08Z","duration":0,"status":"PASSED"},{"id":"EID6a383160-0175-1000-1184-6de888aa10ff","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a383106-0175-1000-0fe3-78f4c74c77c3"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:21:08Z","duration":29,"status":"FAILED"},{"id":"EID6a38317d-0175-1000-172f-501c3eb3ed4d","parent":{"ref":"EID6a383106-0175-1000-0fe3-78f4c74c77c3"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:21:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf055ad43-7a5c-4685-9e8c-0e0e54f4ea07"},{"ref":"EID1459382a-b02c-4a2b-964b-922ea3971196"},{"ref":"EID54baa6c2-b7b3-438c-b6ab-d90207cc0203"}]},"parent":{"ref":"EID6a383106-0175-1000-3c4b-8e62656b8f26"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:21:08Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6a382eeb-0175-1000-ff83-e51cb1de90ee"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:21:08Z","duration":119,"status":"FAILED"},{"id":"EID6a38317d-0175-1000-d685-6741fb3e55a4","testStepResults":{"TestStepResult":{"id":"EID6a38317d-0175-1000-754a-107bccb72a7c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a383228-0175-1000-0c60-aa1b73c0549d","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a38317d-0175-1000-754a-107bccb72a7c"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:21:09Z","duration":0,"status":"FAILED"},{"id":"EID6a383228-0175-1000-7eca-8e882d79ccef","parent":{"ref":"EID6a38317d-0175-1000-754a-107bccb72a7c"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:21:09Z","duration":0,"status":"PASSED"},{"id":"EID6a383229-0175-1000-4cbb-cb078918fc86","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a38317d-0175-1000-754a-107bccb72a7c"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:21:09Z","duration":11,"status":"FAILED"},{"id":"EID6a383235-0175-1000-faba-031e3d8b5c5d","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6a38317d-0175-1000-754a-107bccb72a7c"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:21:09Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDa6c61e49-05ec-4000-b492-5cd85bd3c683"},{"ref":"EIDf620c180-3c92-4b5e-9f93-7d506de5389a"},{"ref":"EID8e79c059-cd74-40e7-9e91-45cdddf0a8fb"}]},"parent":{"ref":"EID6a38317d-0175-1000-d685-6741fb3e55a4"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:21:08Z","duration":98,"status":"FAILED"}},"parent":{"ref":"EID6a382eeb-0175-1000-ff83-e51cb1de90ee"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:21:08Z","duration":184,"status":"FAILED"},{"id":"EID6a383235-0175-1000-4105-45593f139ba5","testStepResults":{"TestStepResult":{"id":"EID6a383235-0175-1000-e623-a4d0d1c92496","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a383292-0175-1000-16bd-c29fc581eb1b","parent":{"ref":"EID6a383235-0175-1000-e623-a4d0d1c92496"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:21:09Z","duration":0,"status":"PASSED"},{"id":"EID6a383292-0175-1000-a46e-25114916d5d7","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a383235-0175-1000-e623-a4d0d1c92496"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:21:09Z","duration":14,"status":"FAILED"},{"id":"EID6a3832a0-0175-1000-108f-d66ea2b91956","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6a383235-0175-1000-e623-a4d0d1c92496"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:21:09Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID5f3058fa-806f-4e0c-93c7-ae6879a527c5"},{"ref":"EID3a3a2998-b08b-47ae-b0c4-2bdff0f662ff"},{"ref":"EID939c8967-057a-4106-a61d-3bd8e6112d1f"}]},"parent":{"ref":"EID6a383235-0175-1000-4105-45593f139ba5"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:21:09Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6a382eeb-0175-1000-ff83-e51cb1de90ee"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:21:09Z","duration":118,"status":"FAILED"},{"id":"EID6a3832ac-0175-1000-a8ed-5b895790565f","testStepResults":{"TestStepResult":{"id":"EID6a3832ac-0175-1000-5941-3265a4b087c9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a38330d-0175-1000-b958-c3c7d30e9942","parent":{"ref":"EID6a3832ac-0175-1000-5941-3265a4b087c9"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:21:09Z","duration":0,"status":"PASSED"},{"id":"EID6a38330d-0175-1000-54b4-966b93622fdf","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a3832ac-0175-1000-5941-3265a4b087c9"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:21:09Z","duration":16,"status":"FAILED"},{"id":"EID6a38331d-0175-1000-2479-b1230c228e7c","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a3832ac-0175-1000-5941-3265a4b087c9"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:21:09Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDbcb053fe-bc9e-4308-a51e-2aea23dcb596"},{"ref":"EID03e165af-4d2b-476d-a60e-7910bf61201c"},{"ref":"EID65df1e0b-729e-4b54-9785-9f4fb6e5ca64"}]},"parent":{"ref":"EID6a3832ac-0175-1000-a8ed-5b895790565f"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:21:09Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6a382eeb-0175-1000-ff83-e51cb1de90ee"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:21:09Z","duration":113,"status":"FAILED"},{"id":"EID6a38331d-0175-1000-a0e4-013a9497e32c","testStepResults":{"TestStepResult":{"id":"EID6a38331d-0175-1000-f02e-5cd865468048","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3833f9-0175-1000-b12e-e5222c4fdae5","parent":{"ref":"EID6a38331d-0175-1000-f02e-5cd865468048"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:21:09Z","duration":0,"status":"PASSED"},{"id":"EID6a3833f9-0175-1000-340d-3275c53771b2","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a38331d-0175-1000-f02e-5cd865468048"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:21:09Z","duration":12,"status":"FAILED"},{"id":"EID6a383406-0175-1000-51d0-650628964a92","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6a38331d-0175-1000-f02e-5cd865468048"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:21:09Z","duration":0,"status":"FAILED"},{"id":"EID6a383406-0175-1000-54c5-fe7c666d526b","parent":{"ref":"EID6a38331d-0175-1000-f02e-5cd865468048"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:21:09Z","duration":0,"status":"PASSED"},{"id":"EID6a383406-0175-1000-9c0d-dda8eb58ea01","parent":{"ref":"EID6a38331d-0175-1000-f02e-5cd865468048"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:21:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd1977300-9f12-498a-82ed-fe34642b94ec"},{"ref":"EIDe4c0472c-db27-469e-a437-ac1ba1196cd4"},{"ref":"EID58cd091c-9489-471a-88d1-51e61bb0bc83"}]},"parent":{"ref":"EID6a38331d-0175-1000-a0e4-013a9497e32c"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:21:09Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6a382eeb-0175-1000-ff83-e51cb1de90ee"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:21:09Z","duration":290,"status":"FAILED"},{"id":"EID6a383440-0175-1000-4614-e33fadc21bdc","testStepResults":{"TestStepResult":{"id":"EID6a383440-0175-1000-a5ee-3f2df394aa7d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a383498-0175-1000-27f5-3811bac52b7d","parent":{"ref":"EID6a383440-0175-1000-a5ee-3f2df394aa7d"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:21:09Z","duration":0,"status":"PASSED"},{"id":"EID6a383498-0175-1000-f64e-fadc408d0b40","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a383440-0175-1000-a5ee-3f2df394aa7d"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:21:09Z","duration":17,"status":"FAILED"},{"id":"EID6a3834a9-0175-1000-ae00-b6a17e396e66","parent":{"ref":"EID6a383440-0175-1000-a5ee-3f2df394aa7d"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:21:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdf662a42-c8ee-47ce-96bc-347867e766e8"},{"ref":"EID5ca73184-7c88-4c70-9c79-2e7bc96a1458"},{"ref":"EIDe7f07a46-2be8-4ee1-90ba-c331e6d305ac"}]},"parent":{"ref":"EID6a383440-0175-1000-4614-e33fadc21bdc"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:21:09Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6a382eeb-0175-1000-ff83-e51cb1de90ee"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:21:09Z","duration":105,"status":"FAILED"},{"id":"EID6a3834a9-0175-1000-f833-8920e0bfc125","testStepResults":{"TestStepResult":{"id":"EID6a3834a9-0175-1000-97c9-9a9c54123225","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3834fd-0175-1000-0a78-cbda5a3ea5a1","parent":{"ref":"EID6a3834a9-0175-1000-97c9-9a9c54123225"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:21:09Z","duration":0,"status":"PASSED"},{"id":"EID6a3834fd-0175-1000-ccc4-979c7f2baed2","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a3834a9-0175-1000-97c9-9a9c54123225"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:21:09Z","duration":115,"status":"FAILED"},{"id":"EID6a383570-0175-1000-9be5-d0d1764520f4","parent":{"ref":"EID6a3834a9-0175-1000-97c9-9a9c54123225"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:21:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID017fd047-b5b8-46f7-9ede-1687f7617c12"},{"ref":"EIDdd1106ea-1e03-429b-b87a-008da4510591"},{"ref":"EID87f9f6a8-ad7e-4717-a4c7-54577115ab44"}]},"parent":{"ref":"EID6a3834a9-0175-1000-f833-8920e0bfc125"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:21:09Z","duration":25,"status":"FAILED"}},"parent":{"ref":"EID6a382eeb-0175-1000-ff83-e51cb1de90ee"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:21:09Z","duration":199,"status":"FAILED"},{"id":"EID6a383570-0175-1000-4841-c93fe3399e61","testStepResults":{"TestStepResult":{"id":"EID6a383570-0175-1000-0b27-b886a57d839b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3839ac-0175-1000-2842-0198f6377537","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a383570-0175-1000-0b27-b886a57d839b"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:21:11Z","duration":85,"status":"FAILED"},{"id":"EID6a383a02-0175-1000-c6de-c531b0be0308","parent":{"ref":"EID6a383570-0175-1000-0b27-b886a57d839b"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:21:11Z","duration":0,"status":"PASSED"},{"id":"EID6a383a02-0175-1000-c6e8-19c8f34b0fff","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a383570-0175-1000-0b27-b886a57d839b"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:21:11Z","duration":0,"status":"FAILED"},{"id":"EID6a383a02-0175-1000-b7be-d607b24c4d94","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6a383570-0175-1000-0b27-b886a57d839b"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:21:11Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID849829d3-2b44-4e75-bbec-b290810ab548"},{"ref":"EIDd5a7c0bd-869c-4299-803a-758e769b4048"},{"ref":"EID625ca1df-4184-4dc3-97f9-603c74d7c4aa"}]},"parent":{"ref":"EID6a383570-0175-1000-4841-c93fe3399e61"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:21:10Z","duration":27,"status":"FAILED"}},"parent":{"ref":"EID6a382eeb-0175-1000-ff83-e51cb1de90ee"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:21:10Z","duration":1179,"status":"FAILED"},{"id":"EID6a383a0b-0175-1000-901c-28e5c6c3eabd","testStepResults":{"TestStepResult":{"id":"EID6a383a0b-0175-1000-2625-d2bd9131e9b4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a383b05-0175-1000-2df0-c52332ee3522","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a383a0b-0175-1000-2625-d2bd9131e9b4"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:21:11Z","duration":33,"status":"FAILED"},{"id":"EID6a383b26-0175-1000-a1ae-cb4b0a1ad46a","parent":{"ref":"EID6a383a0b-0175-1000-2625-d2bd9131e9b4"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:21:11Z","duration":0,"status":"PASSED"},{"id":"EID6a383b26-0175-1000-fcb8-b33121125822","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a383a0b-0175-1000-2625-d2bd9131e9b4"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:21:11Z","duration":0,"status":"FAILED"},{"id":"EID6a383b26-0175-1000-8c70-cff10adb12ff","parent":{"ref":"EID6a383a0b-0175-1000-2625-d2bd9131e9b4"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:21:11Z","duration":1,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID42746dc1-4793-4ad1-9ae7-9e3217b75665"},{"ref":"EID1b25dd19-3825-4887-8a11-fd35be1a67b5"},{"ref":"EID7e055c18-6623-4371-a321-fd829fc13fa0"}]},"parent":{"ref":"EID6a383a0b-0175-1000-901c-28e5c6c3eabd"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:21:11Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6a382eeb-0175-1000-ff83-e51cb1de90ee"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:21:11Z","duration":284,"status":"FAILED"},{"id":"EID6a383b28-0175-1000-6dbd-a7e1966ec0c3","testStepResults":{"TestStepResult":[{"id":"EID6a383b28-0175-1000-a904-c57d0e4f2bee","parent":{"ref":"EID6a383b28-0175-1000-6dbd-a7e1966ec0c3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:21:11Z","duration":0,"status":"PASSED"},{"id":"EID6a383b28-0175-1000-eb6f-001013830438","parent":{"ref":"EID6a383b28-0175-1000-6dbd-a7e1966ec0c3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:21:11Z","duration":134,"status":"PASSED"},{"id":"EID6a383b28-0175-1000-ca5d-b9cbb916bb23","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a383c93-0175-1000-ede9-92bc49e0b12e","parent":{"ref":"EID6a383b28-0175-1000-ca5d-b9cbb916bb23"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:21:11Z","duration":0,"status":"PASSED"},{"id":"EID6a383c93-0175-1000-ab33-7c9123e79565","parent":{"ref":"EID6a383b28-0175-1000-ca5d-b9cbb916bb23"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:21:11Z","duration":0,"status":"PASSED"},{"id":"EID6a383c93-0175-1000-9928-0178b3276264","parent":{"ref":"EID6a383b28-0175-1000-ca5d-b9cbb916bb23"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:21:11Z","duration":0,"status":"PASSED"},{"id":"EID6a383c93-0175-1000-2877-8055a92b2f0f","parent":{"ref":"EID6a383b28-0175-1000-ca5d-b9cbb916bb23"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:21:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe380c1ec-80a5-47a0-9e0a-3ac668bf3e4b"},{"ref":"EID4100f40b-263c-4f4b-bd11-b210ffabf8d2"},{"ref":"EID7e2de86b-53a9-4bb1-9a9b-d3d6e002b9a6"}]},"parent":{"ref":"EID6a383b28-0175-1000-6dbd-a7e1966ec0c3"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:21:11Z","duration":207,"status":"PASSED"},{"id":"EID6a383ca0-0175-1000-793d-2b0a2016e681","attachments":{"attachment":{"ref":"EID5e5a4145-347f-48f0-b3c9-78dd39b180f3"}},"parent":{"ref":"EID6a383b28-0175-1000-6dbd-a7e1966ec0c3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:21:11Z","duration":5,"status":"PASSED"},{"id":"EID6a383ce2-0175-1000-0b48-47c0487f3a06","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a383da4-0175-1000-a2f0-a44a59fb9121","parent":{"ref":"EID6a383ce2-0175-1000-0b48-47c0487f3a06"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:21:12Z","duration":0,"status":"PASSED"},{"id":"EID6a383da4-0175-1000-2b57-e3158ecdaee6","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a383ce2-0175-1000-0b48-47c0487f3a06"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:21:12Z","duration":87,"status":"FAILED"},{"id":"EID6a383dfb-0175-1000-b22f-5b4c48660930","parent":{"ref":"EID6a383ce2-0175-1000-0b48-47c0487f3a06"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:21:12Z","duration":0,"status":"PASSED"},{"id":"EID6a383dfb-0175-1000-aefe-4202ac3fb57e","parent":{"ref":"EID6a383ce2-0175-1000-0b48-47c0487f3a06"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:21:12Z","duration":0,"status":"PASSED"},{"id":"EID6a383dfb-0175-1000-4240-c8c22a61287b","parent":{"ref":"EID6a383ce2-0175-1000-0b48-47c0487f3a06"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:21:12Z","duration":0,"status":"PASSED"},{"id":"EID6a383dfb-0175-1000-4278-5d9aed92207e","parent":{"ref":"EID6a383ce2-0175-1000-0b48-47c0487f3a06"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:21:12Z","duration":0,"status":"PASSED"},{"id":"EID6a383dfb-0175-1000-9fd3-53a19a6dc084","parent":{"ref":"EID6a383ce2-0175-1000-0b48-47c0487f3a06"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:21:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID456b4344-189a-491b-b53c-98e20a24fdcf"},{"ref":"EID861aa438-5bba-4224-a003-08d7cd66ff02"},{"ref":"EIDc74ce99d-7003-439a-8e8e-ec4fe7d12614"}]},"parent":{"ref":"EID6a383b28-0175-1000-6dbd-a7e1966ec0c3"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:21:11Z","duration":26,"status":"FAILED"}]},"parent":{"ref":"EID6a382eeb-0175-1000-ff83-e51cb1de90ee"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:21:11Z","duration":724,"status":"FAILED"},{"id":"EID6a383dfc-0175-1000-4861-7e9b1389706e","testStepResults":{"TestStepResult":[{"id":"EID6a383dfc-0175-1000-90f8-cb05a0b55895","parent":{"ref":"EID6a383dfc-0175-1000-4861-7e9b1389706e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:21:12Z","duration":0,"status":"PASSED"},{"id":"EID6a383dfc-0175-1000-c284-23f41cae91e2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a383f34-0175-1000-3d56-1a52b4623917","parent":{"ref":"EID6a383dfc-0175-1000-c284-23f41cae91e2"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:21:12Z","duration":0,"status":"PASSED"},{"id":"EID6a383f34-0175-1000-47f4-4d89925ccaec","parent":{"ref":"EID6a383dfc-0175-1000-c284-23f41cae91e2"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:21:12Z","duration":0,"status":"PASSED"},{"id":"EID6a383f34-0175-1000-ff57-9b9d7d1c5823","parent":{"ref":"EID6a383dfc-0175-1000-c284-23f41cae91e2"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:21:12Z","duration":0,"status":"PASSED"},{"id":"EID6a383f34-0175-1000-143d-2f378dbc8bd1","parent":{"ref":"EID6a383dfc-0175-1000-c284-23f41cae91e2"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:21:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5b8bdae2-4fd7-475e-987f-948b86a87ab7"},{"ref":"EID6f786c51-ec5d-4abd-8365-2f7fb0c8a9dc"},{"ref":"EID45748129-6d16-4a31-a597-5283b95eedf9"}]},"parent":{"ref":"EID6a383dfc-0175-1000-4861-7e9b1389706e"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:21:12Z","duration":147,"status":"PASSED"},{"id":"EID6a383f34-0175-1000-586d-ac4a7d8ffb59","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a383f4b-0175-1000-1150-0c26a76a849b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3841f5-0175-1000-4ad3-c49eb292488d","parent":{"ref":"EID6a383f4b-0175-1000-1150-0c26a76a849b"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:21:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3841f5-0175-1000-6627-a9c0b38b22e4","parent":{"ref":"EID6a383f4b-0175-1000-1150-0c26a76a849b"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:21:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3841f5-0175-1000-410a-caf10efde03e","parent":{"ref":"EID6a383f4b-0175-1000-1150-0c26a76a849b"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:21:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID166d42cf-79c3-49d3-a43c-c46d40cc1a6e"},{"ref":"EID26e694a0-7d79-499c-8394-4d9abe90ca75"},{"ref":"EID97fb2766-c524-46b7-b693-845cadaeb7d9"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:21:12Z","duration":150,"status":"PASSED"},{"id":"EID6a3843fc-0175-1000-b281-b7044a725324","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a384597-0175-1000-f747-71ceb5a5b09d","parent":{"ref":"EID6a3843fc-0175-1000-b281-b7044a725324"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:21:14Z","duration":0,"status":"PASSED"},{"id":"EID6a384597-0175-1000-a6e8-f0967a7c764e","parent":{"ref":"EID6a3843fc-0175-1000-b281-b7044a725324"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:21:14Z","duration":0,"status":"PASSED"},{"id":"EID6a384597-0175-1000-bff7-b3aa25329504","parent":{"ref":"EID6a3843fc-0175-1000-b281-b7044a725324"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:21:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf7fe4371-40f5-43ec-a87c-17a1c4517fcc"},{"ref":"EID69954b64-fbeb-499a-81ef-8fc8e4397dee"},{"ref":"EID54cb5220-66b4-44dc-943c-bf67266b9d20"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:21:13Z","duration":300,"status":"PASSED"},{"id":"EID6a384598-0175-1000-90a9-9d9069cfd505","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a384644-0175-1000-7399-a46ba9bacf6f","parent":{"ref":"EID6a384598-0175-1000-90a9-9d9069cfd505"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:21:14Z","duration":0,"status":"PASSED"},{"id":"EID6a384644-0175-1000-6ff8-c444eb166c3b","parent":{"ref":"EID6a384598-0175-1000-90a9-9d9069cfd505"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:21:14Z","duration":0,"status":"PASSED"},{"id":"EID6a384644-0175-1000-22ea-4ae4422caa12","parent":{"ref":"EID6a384598-0175-1000-90a9-9d9069cfd505"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:21:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDef2221ad-46ac-4dbc-84ad-fb3db6e65659"},{"ref":"EID779d8ca5-0fc9-4268-b744-40cb81b441a6"},{"ref":"EID7ec9e4fd-c246-495b-ab79-95297626552a"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:21:14Z","duration":40,"status":"PASSED"}]},"parent":{"ref":"EID6a383dfc-0175-1000-4861-7e9b1389706e"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:21:12Z","duration":1809,"status":"PASSED"},{"id":"EID6a384645-0175-1000-9f88-9016aace16fe","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a38471e-0175-1000-6c6b-67f3b8dc22f0","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a384645-0175-1000-9f88-9016aace16fe"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:21:14Z","duration":13,"status":"FAILED"},{"id":"EID6a38472b-0175-1000-5146-5a006a62343c","parent":{"ref":"EID6a384645-0175-1000-9f88-9016aace16fe"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:21:14Z","duration":0,"status":"PASSED"},{"id":"EID6a38472b-0175-1000-755b-ad945c14120e","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a384645-0175-1000-9f88-9016aace16fe"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:21:14Z","duration":0,"status":"FAILED"},{"id":"EID6a38472b-0175-1000-923f-1d4df70e6322","parent":{"ref":"EID6a384645-0175-1000-9f88-9016aace16fe"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:21:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID683c8337-e259-4835-a1fa-2cd252303fb1"},{"ref":"EID21771e31-8225-4163-9b59-d3874c4112f3"},{"ref":"EID27d42090-bdc4-45fa-b0d2-ac862b82efd2"}]},"parent":{"ref":"EID6a383dfc-0175-1000-4861-7e9b1389706e"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:21:14Z","duration":34,"status":"FAILED"}]},"parent":{"ref":"EID6a382eeb-0175-1000-ff83-e51cb1de90ee"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:21:12Z","duration":2351,"status":"FAILED"},{"id":"EID6a38472b-0175-1000-1fbe-d2db8be0885a","testStepResults":{"TestStepResult":{"id":"EID6a38472b-0175-1000-a064-8ce8700d40cb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a38479f-0175-1000-e165-a9e2920280ce","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a38472b-0175-1000-a064-8ce8700d40cb"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:21:14Z","duration":11,"status":"FAILED"},{"id":"EID6a3847aa-0175-1000-2a5f-367e4ed314c9","parent":{"ref":"EID6a38472b-0175-1000-a064-8ce8700d40cb"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:21:14Z","duration":0,"status":"PASSED"},{"id":"EID6a3847aa-0175-1000-3944-bd06c04289d1","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a38472b-0175-1000-a064-8ce8700d40cb"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:21:14Z","duration":0,"status":"FAILED"},{"id":"EID6a3847aa-0175-1000-8308-fb10ec29b959","parent":{"ref":"EID6a38472b-0175-1000-a064-8ce8700d40cb"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:21:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd2f0b32d-bbdd-41eb-97a5-42c43e58e4ae"},{"ref":"EID780d2d81-e2c6-4ce2-a58f-ea05e101f988"},{"ref":"EID1e50362b-ca2d-4515-a4b9-fbc5706908bd"}]},"parent":{"ref":"EID6a38472b-0175-1000-1fbe-d2db8be0885a"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:21:14Z","duration":42,"status":"FAILED"}},"parent":{"ref":"EID6a382eeb-0175-1000-ff83-e51cb1de90ee"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:21:14Z","duration":170,"status":"FAILED"}]},"parent":{"ref":"EIDc862f648-f2eb-46a9-a504-302ceeb09057"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:21:08Z","duration":6378,"status":"FAILED"},{"id":"EID6a3847d5-0175-1000-96e4-e50dc3750a84","testCaseResults":{"TestCaseResult":[{"id":"EID6a3847d5-0175-1000-91f8-0bb8c72652d7","testStepResults":{"TestStepResult":{"id":"EID6a3847d5-0175-1000-0ac4-9d8db2ed095c","parent":{"ref":"EID6a3847d5-0175-1000-91f8-0bb8c72652d7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:21:14Z","duration":595,"status":"SKIPPED"}},"parent":{"ref":"EID6a3847d5-0175-1000-96e4-e50dc3750a84"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:21:14Z","duration":0,"status":"SKIPPED"},{"id":"EID6a3847d5-0175-1000-ee36-6ea1de7e8a74","testStepResults":{"TestStepResult":{"id":"EID6a3847d5-0175-1000-184f-bb8e9c3c47f0","parent":{"ref":"EID6a3847d5-0175-1000-ee36-6ea1de7e8a74"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:21:14Z","duration":595,"status":"SKIPPED"}},"parent":{"ref":"EID6a3847d5-0175-1000-96e4-e50dc3750a84"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:21:14Z","duration":0,"status":"SKIPPED"},{"id":"EID6a3847d5-0175-1000-777e-505702ea4025","testStepResults":{"TestStepResult":{"id":"EID6a3847d5-0175-1000-3449-6a6e69b8c813","parent":{"ref":"EID6a3847d5-0175-1000-777e-505702ea4025"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:21:14Z","duration":595,"status":"SKIPPED"}},"parent":{"ref":"EID6a3847d5-0175-1000-96e4-e50dc3750a84"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:21:14Z","duration":0,"status":"SKIPPED"},{"id":"EID6a3847d5-0175-1000-7913-a5419299e7de","testStepResults":{"TestStepResult":{"id":"EID6a3847d5-0175-1000-f1de-9302e92d0e25","parent":{"ref":"EID6a3847d5-0175-1000-7913-a5419299e7de"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:21:14Z","duration":595,"status":"SKIPPED"}},"parent":{"ref":"EID6a3847d5-0175-1000-96e4-e50dc3750a84"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:21:14Z","duration":0,"status":"SKIPPED"},{"id":"EID6a3847d6-0175-1000-dbd7-df7309990600","testStepResults":{"TestStepResult":{"id":"EID6a3847d6-0175-1000-4b55-11061899b4a6","parent":{"ref":"EID6a3847d6-0175-1000-dbd7-df7309990600"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:21:14Z","duration":595,"status":"SKIPPED"}},"parent":{"ref":"EID6a3847d5-0175-1000-96e4-e50dc3750a84"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:21:14Z","duration":0,"status":"SKIPPED"},{"id":"EID6a3847d6-0175-1000-23bc-bca074777f0f","testStepResults":{"TestStepResult":{"id":"EID6a3847d6-0175-1000-23ae-5aae3e44250b","parent":{"ref":"EID6a3847d6-0175-1000-23bc-bca074777f0f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:21:14Z","duration":595,"status":"SKIPPED"}},"parent":{"ref":"EID6a3847d5-0175-1000-96e4-e50dc3750a84"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:21:14Z","duration":0,"status":"SKIPPED"},{"id":"EID6a3847d6-0175-1000-2387-706c410baea7","testStepResults":{"TestStepResult":{"id":"EID6a3847d6-0175-1000-4ada-7e9a48b789d4","parent":{"ref":"EID6a3847d6-0175-1000-2387-706c410baea7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:21:14Z","duration":595,"status":"SKIPPED"}},"parent":{"ref":"EID6a3847d5-0175-1000-96e4-e50dc3750a84"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:21:14Z","duration":0,"status":"SKIPPED"}]},"parent":{"ref":"EIDc862f648-f2eb-46a9-a504-302ceeb09057"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:21:14Z","duration":1,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"ServiceResponse","id":"EID2d536d87-0f4f-475c-a741-af04f8342495","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID2d536d87-0f4f-475c-a741-af04f8342495"}},{"type":"Message","id":"EID82755d87-86a2-4296-b3aa-68b8db72026a","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID82755d87-86a2-4296-b3aa-68b8db72026a"}},{"type":"Message","id":"EIDa8b97dff-31e9-4284-ad11-3dbd0793448e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDa8b97dff-31e9-4284-ad11-3dbd0793448e"}},{"type":"Error","id":"EID948cba53-1ca3-4657-8e02-8def0f6b8f47","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID948cba53-1ca3-4657-8e02-8def0f6b8f47"}},{"type":"Message","id":"EIDea0d7f94-8ed3-4039-b4b0-3a80e35e5a73","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDea0d7f94-8ed3-4039-b4b0-3a80e35e5a73"}},{"type":"ServiceResponse","id":"EID780d2d81-e2c6-4ce2-a58f-ea05e101f988","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID780d2d81-e2c6-4ce2-a58f-ea05e101f988"}},{"type":"GetParameter","id":"EIDba607b41-bfa7-4bf5-9d7e-c9d2f9480eab","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID017fd047-b5b8-46f7-9ede-1687f7617c12","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDba902cc4-eb8b-47e3-ae03-06e784f5fb2d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID1b25dd19-3825-4887-8a11-fd35be1a67b5","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID1b25dd19-3825-4887-8a11-fd35be1a67b5"}},{"type":"Message","id":"EIDf705b767-1001-4425-ada2-71446236a2e3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDf705b767-1001-4425-ada2-71446236a2e3"}},{"type":"ServiceResponse","id":"EIDc990de00-71d2-436f-b390-57bab4a7864e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDc990de00-71d2-436f-b390-57bab4a7864e"}},{"type":"Message","id":"EID5e5a4145-347f-48f0-b3c9-78dd39b180f3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID5e5a4145-347f-48f0-b3c9-78dd39b180f3"}},{"type":"Message","id":"EIDe728e050-11be-4866-8ac5-1b8a8cae1872","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDe728e050-11be-4866-8ac5-1b8a8cae1872"}},{"type":"ServiceEndpoint","id":"EID59ae659e-b6cf-4b4e-934a-5457e35ed896","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID5f3058fa-806f-4e0c-93c7-ae6879a527c5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID57babcf3-c9b3-43b5-aff6-26451ada6cb2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"LogFile","id":"EIDc86aeaea-f270-47b0-83e1-27a5eca76385","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDc86aeaea-f270-47b0-83e1-27a5eca76385"}},{"type":"Error","id":"EIDc56e0f81-3d36-4b28-8222-ad31263c4426","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDc56e0f81-3d36-4b28-8222-ad31263c4426"}},{"type":"ServiceResponse","id":"EIDa7416be2-1a80-4a0e-bf9b-403c67c0b994","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDa7416be2-1a80-4a0e-bf9b-403c67c0b994"}},{"type":"Message","id":"EIDaeb15dfb-6060-484d-a214-a7499f5f6be8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDaeb15dfb-6060-484d-a214-a7499f5f6be8"}},{"type":"GetParameter","id":"EID1c0652a8-19f1-4eeb-90bb-059b0b82e9d4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDc779c9f8-7319-462a-8c1d-9b10c6bc4229","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDc779c9f8-7319-462a-8c1d-9b10c6bc4229"}},{"type":"GetParameter","id":"EID27d42090-bdc4-45fa-b0d2-ac862b82efd2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID33013c47-2b0e-4ea8-8a82-235d2064a554","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID5b8bdae2-4fd7-475e-987f-948b86a87ab7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EIDd2f0b32d-bbdd-41eb-97a5-42c43e58e4ae","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDbcb053fe-bc9e-4308-a51e-2aea23dcb596","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID5cd1a34b-86fc-4768-97ab-a26348e334a7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID437e0dbe-d973-49b9-bdb8-a0bd9ec2213f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID437e0dbe-d973-49b9-bdb8-a0bd9ec2213f"}},{"type":"GetParameter","id":"EID9db1cad2-8dff-468b-a7b2-d236c6797fc1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID13a6cf75-c37e-4ae7-b9fa-12d0d84e4fc1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDf349f8fb-b4e9-4c2e-bb62-c2749f825409","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDf349f8fb-b4e9-4c2e-bb62-c2749f825409"}},{"type":"ServiceResponse","id":"EIDd1601bdf-fa7b-4832-b455-d846cb534958","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDd1601bdf-fa7b-4832-b455-d846cb534958"}},{"type":"ServiceResponse","id":"EID8687d3fd-102d-4089-9011-a76b1e0c0f06","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID8687d3fd-102d-4089-9011-a76b1e0c0f06"}},{"type":"ServiceEndpoint","id":"EID456b4344-189a-491b-b53c-98e20a24fdcf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID6edbf9b3-8ada-4c5f-a925-89118b17a787","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID58cd091c-9489-471a-88d1-51e61bb0bc83","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID2cb43024-ce2b-41c4-9891-b630828f2343","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDe9aba276-54a3-451e-a045-b31da0134b61","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDe9aba276-54a3-451e-a045-b31da0134b61"}},{"type":"GetParameter","id":"EID939c8967-057a-4106-a61d-3bd8e6112d1f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EID3139fead-52a5-4ade-9590-1b48be535f56","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID3139fead-52a5-4ade-9590-1b48be535f56"}},{"type":"GetParameter","id":"EIDa3ceaf6d-af16-4ad2-9265-79a95fcbac4a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"Error","id":"EID77384747-1266-4fde-b9f9-441ff86e1b81","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID77384747-1266-4fde-b9f9-441ff86e1b81"}},{"type":"ServiceEndpoint","id":"EID735f8932-ae54-4f71-98e5-9aed8aa7497c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID7f4d0320-13b7-42dc-9456-2f9cc3e820c8","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID7f4d0320-13b7-42dc-9456-2f9cc3e820c8"}},{"type":"GetParameter","id":"EID65df1e0b-729e-4b54-9785-9f4fb6e5ca64","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID9309417e-d35f-403b-8336-d60c26270a74","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID625ca1df-4184-4dc3-97f9-603c74d7c4aa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID078459f8-a91c-4282-9ffd-f8dbb0a46991","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID078459f8-a91c-4282-9ffd-f8dbb0a46991"}},{"type":"Error","id":"EID73f762b2-3300-4daf-b5c6-543fad24d340","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID73f762b2-3300-4daf-b5c6-543fad24d340"}},{"type":"ServiceEndpoint","id":"EID42746dc1-4793-4ad1-9ae7-9e3217b75665","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID4047d1b0-f1b1-4886-b28b-ffcb47f7da8a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDc74ce99d-7003-439a-8e8e-ec4fe7d12614","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID324bad00-c426-4d81-8438-01107261352d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDcf107348-0b20-4376-ac5b-e4b5a9515c42","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID7e055c18-6623-4371-a321-fd829fc13fa0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID9a824c31-9c41-4214-9ce5-dcb83d1707f5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID9a824c31-9c41-4214-9ce5-dcb83d1707f5"}},{"type":"ServiceEndpoint","id":"EIDea753a7d-5e65-4041-b311-94aff6aca56b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID328699af-da87-4e41-9db3-1daca46541cb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID54baa6c2-b7b3-438c-b6ab-d90207cc0203","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EIDe39525c6-0f7f-4e9e-ab2b-1e3e3f596007","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDe39525c6-0f7f-4e9e-ab2b-1e3e3f596007"}},{"type":"ServiceResponse","id":"EID1459382a-b02c-4a2b-964b-922ea3971196","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID1459382a-b02c-4a2b-964b-922ea3971196"}},{"type":"GetParameter","id":"EID54cb5220-66b4-44dc-943c-bf67266b9d20","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EIDfc7b19d7-c444-4b1e-a517-b382b064d531","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID97fb2766-c524-46b7-b693-845cadaeb7d9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Error","id":"EIDdfb02730-fdb8-4928-bc78-a0278c87b193","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDdfb02730-fdb8-4928-bc78-a0278c87b193"}},{"type":"Message","id":"EIDadc2048f-2e85-48b1-aeb3-9e1837a55c5b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDadc2048f-2e85-48b1-aeb3-9e1837a55c5b"}},{"type":"GetParameter","id":"EIDf3eae5a5-7960-42f1-a860-022f19e391bb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID65d19fcd-7d14-49e5-854e-07622e550258","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID65d19fcd-7d14-49e5-854e-07622e550258"}},{"type":"ServiceEndpoint","id":"EIDd1977300-9f12-498a-82ed-fe34642b94ec","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID387016a8-133e-4671-b2e3-afd2b55d3ae0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID387016a8-133e-4671-b2e3-afd2b55d3ae0"}},{"type":"ServiceEndpoint","id":"EID5beb63c9-7621-4a14-9402-18a3acc68b2b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID861aa438-5bba-4224-a003-08d7cd66ff02","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID861aa438-5bba-4224-a003-08d7cd66ff02"}},{"type":"ServiceResponse","id":"EIDe4c0472c-db27-469e-a437-ac1ba1196cd4","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDe4c0472c-db27-469e-a437-ac1ba1196cd4"}},{"type":"Message","id":"EIDf9cf20f8-56b5-4e2f-885d-b093864ca931","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDf9cf20f8-56b5-4e2f-885d-b093864ca931"}},{"type":"GetParameter","id":"EID6d08a64a-b6d0-4d02-abb4-e44f27f891d8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID3a3a2998-b08b-47ae-b0c4-2bdff0f662ff","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID3a3a2998-b08b-47ae-b0c4-2bdff0f662ff"}},{"type":"GetParameter","id":"EIDe7f07a46-2be8-4ee1-90ba-c331e6d305ac","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EIDfe12a3c9-0a98-4fbd-b958-79fe0bfbe18a","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDfe12a3c9-0a98-4fbd-b958-79fe0bfbe18a"}},{"type":"Message","id":"EIDea9730e9-e4ba-4fa6-a0e3-31daf736a98f","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDea9730e9-e4ba-4fa6-a0e3-31daf736a98f"}},{"type":"ServiceResponse","id":"EID06c04218-d747-458d-aa25-8ae59cc241f6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID06c04218-d747-458d-aa25-8ae59cc241f6"}},{"type":"ServiceEndpoint","id":"EID63645a65-5cf7-4a1f-b5ec-bd0c1b2888f3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID3fcbcd5d-f327-489d-94f7-09f3fc076fb4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID4060b4ac-de99-4f75-a953-e33ec15d7517","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID4060b4ac-de99-4f75-a953-e33ec15d7517"}},{"type":"Error","id":"EID0e52a69b-0ac2-4857-96fa-80344aa55c6a","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID0e52a69b-0ac2-4857-96fa-80344aa55c6a"}},{"type":"Message","id":"EIDf468e1a8-3727-4433-90a4-fd894d46e30a","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDf468e1a8-3727-4433-90a4-fd894d46e30a"}},{"type":"ServiceResponse","id":"EID6f786c51-ec5d-4abd-8365-2f7fb0c8a9dc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID6f786c51-ec5d-4abd-8365-2f7fb0c8a9dc"}},{"type":"ServiceResponse","id":"EID03e165af-4d2b-476d-a60e-7910bf61201c","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID03e165af-4d2b-476d-a60e-7910bf61201c"}},{"type":"GetParameter","id":"EID45748129-6d16-4a31-a597-5283b95eedf9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EIDeba8cbb0-40c3-4cfe-b4a2-5f5779b1b981","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID21771e31-8225-4163-9b59-d3874c4112f3","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID21771e31-8225-4163-9b59-d3874c4112f3"}},{"type":"ServiceResponse","id":"EID4100f40b-263c-4f4b-bd11-b210ffabf8d2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID4100f40b-263c-4f4b-bd11-b210ffabf8d2"}},{"type":"ServiceEndpoint","id":"EIDe2ff9133-2ac5-445d-bc54-4fa6c58684b2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID597b6d0b-5d06-433d-947f-e00117e3e9f1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID558d984c-704a-4eed-a897-1f77cd05af30","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDf055ad43-7a5c-4685-9e8c-0e0e54f4ea07","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID7e2de86b-53a9-4bb1-9a9b-d3d6e002b9a6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID91ed5c18-433c-4208-86ce-5b905d2217c3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID25426e10-bc94-4e5e-8df6-e4289ffc82ed","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID25426e10-bc94-4e5e-8df6-e4289ffc82ed"}},{"type":"ServiceEndpoint","id":"EID683c8337-e259-4835-a1fa-2cd252303fb1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID545ea5d1-70fe-421c-82de-b9785c2133f6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID39e3ef83-d636-4e20-9f1d-50deb27445b2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDe3ad842e-c9cb-4390-b70f-563909499ab1","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDe3ad842e-c9cb-4390-b70f-563909499ab1"}},{"type":"GetParameter","id":"EID1477ba7a-4e99-493f-b452-fc7c7bf4757b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID213b1bad-c7da-4e77-b99c-8c1cb31455e1","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID213b1bad-c7da-4e77-b99c-8c1cb31455e1"}},{"type":"Message","id":"EID9dabeb4b-cc47-4dd7-b973-3b051a04cc3c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID9dabeb4b-cc47-4dd7-b973-3b051a04cc3c"}},{"type":"Error","id":"EIDacdb76ab-fba8-4bef-a81e-c0b5b9183911","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDacdb76ab-fba8-4bef-a81e-c0b5b9183911"}},{"type":"Message","id":"EID0ed8f99b-b2ac-4d33-862c-741ac4084f96","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID0ed8f99b-b2ac-4d33-862c-741ac4084f96"}},{"type":"GetParameter","id":"EID7ec9e4fd-c246-495b-ab79-95297626552a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EIDcf231216-50cf-47ae-827d-4a16a8e1663d","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDcf231216-50cf-47ae-827d-4a16a8e1663d"}},{"type":"ServiceEndpoint","id":"EID94932554-5e3e-4818-98e4-ccae337ce4a4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID52f7b452-c943-4766-a5af-f7b75065f3c0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDd15154c2-a618-4f15-ad37-f462b0ace58c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDd15154c2-a618-4f15-ad37-f462b0ace58c"}},{"type":"ServiceResponse","id":"EIDc3f86e8c-37d9-489e-854a-6692a86c05cb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDc3f86e8c-37d9-489e-854a-6692a86c05cb"}},{"type":"GetParameter","id":"EID50b77aad-ceb6-49ea-9d33-57dddcd8b68d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID935521fe-b265-4c17-8461-52512de0134b","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID935521fe-b265-4c17-8461-52512de0134b"}},{"type":"ServiceEndpoint","id":"EIDf7fe4371-40f5-43ec-a87c-17a1c4517fcc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EID779d8ca5-0fc9-4268-b744-40cb81b441a6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID779d8ca5-0fc9-4268-b744-40cb81b441a6"}},{"type":"Message","id":"EID4e1fc276-c684-4700-935c-185338a7b608","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID4e1fc276-c684-4700-935c-185338a7b608"}},{"type":"Error","id":"EIDce2a1e26-d671-47b6-8b21-09ec949378eb","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDce2a1e26-d671-47b6-8b21-09ec949378eb"}},{"type":"ServiceResponse","id":"EID5ca73184-7c88-4c70-9c79-2e7bc96a1458","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID5ca73184-7c88-4c70-9c79-2e7bc96a1458"}},{"type":"Message","id":"EID5bd549e6-2149-49f4-9802-a1a64156010f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID5bd549e6-2149-49f4-9802-a1a64156010f"}},{"type":"ServiceEndpoint","id":"EID557aca1c-2911-479b-90ba-01c2204b7c88","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDa6c61e49-05ec-4000-b492-5cd85bd3c683","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID81967635-9332-4184-abfd-8ee8cafc1886","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID81967635-9332-4184-abfd-8ee8cafc1886"}},{"type":"Error","id":"EID85351621-bbfd-42de-ac35-565dbb653d1b","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID85351621-bbfd-42de-ac35-565dbb653d1b"}},{"type":"ServiceResponse","id":"EIDdd1106ea-1e03-429b-b87a-008da4510591","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDdd1106ea-1e03-429b-b87a-008da4510591"}},{"type":"ServiceResponse","id":"EIDc163d76f-3f94-4c50-b419-1abd63232bb0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDc163d76f-3f94-4c50-b419-1abd63232bb0"}},{"type":"Error","id":"EID582bd1b6-1a73-41c3-96cb-cf23c28b502a","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID582bd1b6-1a73-41c3-96cb-cf23c28b502a"}},{"type":"ServiceResponse","id":"EID849a77f7-78ac-4ae9-b264-3f55f838562b","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID849a77f7-78ac-4ae9-b264-3f55f838562b"}},{"type":"ServiceResponse","id":"EID69954b64-fbeb-499a-81ef-8fc8e4397dee","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID69954b64-fbeb-499a-81ef-8fc8e4397dee"}},{"type":"ServiceEndpoint","id":"EIDdf662a42-c8ee-47ce-96bc-347867e766e8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID593f330d-e838-4291-8e07-80fbfdf5f44f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID593f330d-e838-4291-8e07-80fbfdf5f44f"}},{"type":"ServiceResponse","id":"EIDd5a7c0bd-869c-4299-803a-758e769b4048","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDd5a7c0bd-869c-4299-803a-758e769b4048"}},{"type":"ServiceEndpoint","id":"EID19ead4af-66cb-467e-a360-0ce2a0dd7cfa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDeedc56ff-8b0d-402f-92e5-260647bb63c9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDeedc56ff-8b0d-402f-92e5-260647bb63c9"}},{"type":"ServiceEndpoint","id":"EID133a6f42-674c-437f-8df8-df5276f798f8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID97727292-38e8-4ca6-9a36-47bb754e0405","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDaa5793ab-7dbd-4845-babd-b9807c53b02b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDe380c1ec-80a5-47a0-9e0a-3ac668bf3e4b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDef2221ad-46ac-4dbc-84ad-fb3db6e65659","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EIDa2af258d-2fbf-4309-a252-fb2b95c5661e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDa2af258d-2fbf-4309-a252-fb2b95c5661e"}},{"type":"Message","id":"EIDc4b80ebc-aa8c-4a5c-b7e7-33b011a5cf4d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDc4b80ebc-aa8c-4a5c-b7e7-33b011a5cf4d"}},{"type":"GetParameter","id":"EID8e79c059-cd74-40e7-9e91-45cdddf0a8fb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID36b9b788-7520-4ef7-9aa6-253e7b871df3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID36b9b788-7520-4ef7-9aa6-253e7b871df3"}},{"type":"ServiceResponse","id":"EID8f7a9fd5-3776-4a5e-a88e-856b7d7ad072","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID8f7a9fd5-3776-4a5e-a88e-856b7d7ad072"}},{"type":"Message","id":"EID6f2505da-4943-4782-a5f3-0556f3173c70","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID6f2505da-4943-4782-a5f3-0556f3173c70"}},{"type":"GetParameter","id":"EID1e50362b-ca2d-4515-a4b9-fbc5706908bd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID7619c1c3-1f1a-4e43-8388-2abd9ef4079d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID7619c1c3-1f1a-4e43-8388-2abd9ef4079d"}},{"type":"ServiceEndpoint","id":"EID1d7a936c-8880-4201-9bce-c2a64cdb8c7e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDe89dc0ac-4006-4bb2-b31a-10d4dd01a2b5","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDe89dc0ac-4006-4bb2-b31a-10d4dd01a2b5"}},{"type":"Message","id":"EID53e13810-80aa-4936-93f9-4cf5be88b941","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID53e13810-80aa-4936-93f9-4cf5be88b941"}},{"type":"GetParameter","id":"EIDed907493-501b-4611-ba69-672a3e6531af","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDf620c180-3c92-4b5e-9f93-7d506de5389a","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EIDf620c180-3c92-4b5e-9f93-7d506de5389a"}},{"type":"GetParameter","id":"EID6039286a-3165-4c76-bcd4-5a6f702ab852","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID62acd44c-11a7-4f90-af26-d875b38e52c0","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID62acd44c-11a7-4f90-af26-d875b38e52c0"}},{"type":"ServiceEndpoint","id":"EID166d42cf-79c3-49d3-a43c-c46d40cc1a6e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EID26e694a0-7d79-499c-8394-4d9abe90ca75","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc862f648-f2eb-46a9-a504-302ceeb09057/Attachments/EID26e694a0-7d79-499c-8394-4d9abe90ca75"}},{"type":"GetParameter","id":"EID87f9f6a8-ad7e-4717-a4c7-54577115ab44","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID849829d3-2b44-4e75-bbec-b290810ab548","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:20:59Z","duration":15470,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.007
13:21:31.150 [print] EID0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:21:31.151 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:21:31.151 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:21:31.151 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:21:31.151 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:21:31.151 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:21:31.151 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID0c20cbe6-1d64-4ec6-bfab-7fc8434e1a55/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.004
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
13:21:31.157 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.002
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
13:21:31.160 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
13:21:31.160 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.006
33.864
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:18:33.213 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 6.589
13:18:33.214 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

13:18:39.801 response time in milliseconds: 5819.25
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:18:38 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:18:37 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/4ecd119e-f512-482b-a5d1-5ed3d7cf376c.json","testRuns":{"TestRun":{"id":"EID4ecd119e-f512-482b-a5d1-5ed3d7cf376c","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:18:36.613Z","testTasks":{"TestTask":{"id":"EID753c5c98-10d6-4eea-96f8-ec0eeae3ff3b","parent":{"ref":"EID4ecd119e-f512-482b-a5d1-5ed3d7cf376c"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDef92c95c-b75e-4d2a-8014-5a4ce6eb7eac"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID4ecd119e-f512-482b-a5d1-5ed3d7cf376c/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDef92c95c-b75e-4d2a-8014-5a4ce6eb7eac","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:18:33.651Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:18:34.622Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:18:39.805 [print] EID4ecd119e-f512-482b-a5d1-5ed3d7cf376c
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:18:39.805 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:18:39.805 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:18:39.805 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/4ecd119e-f512-482b-a5d1-5ed3d7cf376c.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:18:39.805 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID4ecd119e-f512-482b-a5d1-5ed3d7cf376c/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:18:39.806 [print] statuspath TestRuns/EID4ecd119e-f512-482b-a5d1-5ed3d7cf376c
* print 'progresspath ', progresspath 0.000
13:18:39.806 [print] progresspath  TestRuns/EID4ecd119e-f512-482b-a5d1-5ed3d7cf376c/progress
Given path progresspath 0.000
When method GET 0.557
13:18:39.814 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4ecd119e-f512-482b-a5d1-5ed3d7cf376c/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:40.363 response time in milliseconds: 548.62
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:18:40 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["27.10.2020 13:18:36 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:36 UTC 2020)","27.10.2020 13:18:36 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:36 - Preparing 1 Test Task:","27.10.2020 13:18:36 -  TestTask 1 (753c5c98-10d6-4eea-96f8-ec0eeae3ff3b)","27.10.2020 13:18:36 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:36 -  with parameters: ","27.10.2020 13:18:36 - etf.testcases = *","27.10.2020 13:18:36 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:36 - Setting state to CREATED","27.10.2020 13:18:36 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:37 - Starting TestRun.4ecd119e-f512-482b-a5d1-5ed3d7cf376c at 2020-10-27T13:18:38Z","27.10.2020 13:18:38 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:38 - Project Properties: ","27.10.2020 13:18:38 - etf.testcases - * ","27.10.2020 13:18:38 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:18:38 - username -  ","27.10.2020 13:18:38 - authUser -  ","27.10.2020 13:18:38 - authMethod - basic ","27.10.2020 13:18:38 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:18:40.364 [print] {
  "val": "16",
  "max": "17",
  "log": [
    "27.10.2020 13:18:36 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:36 UTC 2020)",
    "27.10.2020 13:18:36 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:18:36 - Preparing 1 Test Task:",
    "27.10.2020 13:18:36 -  TestTask 1 (753c5c98-10d6-4eea-96f8-ec0eeae3ff3b)",
    "27.10.2020 13:18:36 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:18:36 -  with parameters: ",
    "27.10.2020 13:18:36 - etf.testcases = *",
    "27.10.2020 13:18:36 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:18:36 - Setting state to CREATED",
    "27.10.2020 13:18:36 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:18:37 - Starting TestRun.4ecd119e-f512-482b-a5d1-5ed3d7cf376c at 2020-10-27T13:18:38Z",
    "27.10.2020 13:18:38 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:18:38 - Project Properties: ",
    "27.10.2020 13:18:38 - etf.testcases - * ",
    "27.10.2020 13:18:38 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "27.10.2020 13:18:38 - username -  ",
    "27.10.2020 13:18:38 - authUser -  ",
    "27.10.2020 13:18:38 - authMethod - basic ",
    "27.10.2020 13:18:38 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 19.175
13:18:40.364 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4ecd119e-f512-482b-a5d1-5ed3d7cf376c/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:40.880 response time in milliseconds: 514.71
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:18:40 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["27.10.2020 13:18:36 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:36 UTC 2020)","27.10.2020 13:18:36 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:36 - Preparing 1 Test Task:","27.10.2020 13:18:36 -  TestTask 1 (753c5c98-10d6-4eea-96f8-ec0eeae3ff3b)","27.10.2020 13:18:36 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:36 -  with parameters: ","27.10.2020 13:18:36 - etf.testcases = *","27.10.2020 13:18:36 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:36 - Setting state to CREATED","27.10.2020 13:18:36 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:37 - Starting TestRun.4ecd119e-f512-482b-a5d1-5ed3d7cf376c at 2020-10-27T13:18:38Z","27.10.2020 13:18:38 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:38 - Project Properties: ","27.10.2020 13:18:38 - etf.testcases - * ","27.10.2020 13:18:38 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:18:38 - username -  ","27.10.2020 13:18:38 - authUser -  ","27.10.2020 13:18:38 - authMethod - basic ","27.10.2020 13:18:38 - TestRunTask initialized"]}

13:18:40.880 retry condition not satisfied: response.val == response.max
13:18:40.880 sleeping before retry #1
13:18:45.881 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4ecd119e-f512-482b-a5d1-5ed3d7cf376c/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:46.395 response time in milliseconds: 513.74
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:18:46 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"69","max":"70","log":["27.10.2020 13:18:36 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:36 UTC 2020)","27.10.2020 13:18:36 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:36 - Preparing 1 Test Task:","27.10.2020 13:18:36 -  TestTask 1 (753c5c98-10d6-4eea-96f8-ec0eeae3ff3b)","27.10.2020 13:18:36 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:36 -  with parameters: ","27.10.2020 13:18:36 - etf.testcases = *","27.10.2020 13:18:36 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:36 - Setting state to CREATED","27.10.2020 13:18:36 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:37 - Starting TestRun.4ecd119e-f512-482b-a5d1-5ed3d7cf376c at 2020-10-27T13:18:38Z","27.10.2020 13:18:38 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:38 - Project Properties: ","27.10.2020 13:18:38 - etf.testcases - * ","27.10.2020 13:18:38 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:18:38 - username -  ","27.10.2020 13:18:38 - authUser -  ","27.10.2020 13:18:38 - authMethod - basic ","27.10.2020 13:18:38 - TestRunTask initialized","27.10.2020 13:18:43 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:18:43 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:18:45 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027"]}

13:18:46.395 retry condition not satisfied: response.val == response.max
13:18:46.395 sleeping before retry #2
13:18:51.396 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4ecd119e-f512-482b-a5d1-5ed3d7cf376c/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:51.912 response time in milliseconds: 514.16
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:18:51 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"144","max":"145","log":["27.10.2020 13:18:36 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:36 UTC 2020)","27.10.2020 13:18:36 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:36 - Preparing 1 Test Task:","27.10.2020 13:18:36 -  TestTask 1 (753c5c98-10d6-4eea-96f8-ec0eeae3ff3b)","27.10.2020 13:18:36 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:36 -  with parameters: ","27.10.2020 13:18:36 - etf.testcases = *","27.10.2020 13:18:36 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:36 - Setting state to CREATED","27.10.2020 13:18:36 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:37 - Starting TestRun.4ecd119e-f512-482b-a5d1-5ed3d7cf376c at 2020-10-27T13:18:38Z","27.10.2020 13:18:38 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:38 - Project Properties: ","27.10.2020 13:18:38 - etf.testcases - * ","27.10.2020 13:18:38 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:18:38 - username -  ","27.10.2020 13:18:38 - authUser -  ","27.10.2020 13:18:38 - authMethod - basic ","27.10.2020 13:18:38 - TestRunTask initialized","27.10.2020 13:18:43 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:18:43 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:18:45 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:18:47 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:18:48 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:18:48 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:48 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:48 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:48 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:49 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:49 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:49 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:18:49 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:49 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:49 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:49 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:49 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:49 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:18:49 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:49 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:49 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:49 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:18:49 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:18:50 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:50 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:18:50 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:51 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:51 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:18:51.919 retry condition not satisfied: response.val == response.max
13:18:51.919 sleeping before retry #3
13:18:56.919 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4ecd119e-f512-482b-a5d1-5ed3d7cf376c/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:59.539 response time in milliseconds: 2618.54
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:18:59 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:18:59.539 retry condition satisfied
* print response 0.000
13:18:59.539 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 7.517
13:18:59.540 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4ecd119e-f512-482b-a5d1-5ed3d7cf376c
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:07.053 response time in milliseconds: 6423.53
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Cache-Control: public, max-age=120
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:19:05 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Last-Modified: Tue, 27 Oct 2020 13:18:46 GMT
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/4ecd119e-f512-482b-a5d1-5ed3d7cf376c.json","testRuns":{"TestRun":{"id":"EID4ecd119e-f512-482b-a5d1-5ed3d7cf376c","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:18:36.613Z","testTasks":{"TestTask":{"id":"EID753c5c98-10d6-4eea-96f8-ec0eeae3ff3b","parent":{"ref":"EID4ecd119e-f512-482b-a5d1-5ed3d7cf376c"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDef92c95c-b75e-4d2a-8014-5a4ce6eb7eac"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID32f37227-248b-4bc1-be72-ad8c5f32a259"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID4ecd119e-f512-482b-a5d1-5ed3d7cf376c/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDef92c95c-b75e-4d2a-8014-5a4ce6eb7eac","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:18:33.651Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:18:34.622Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID32f37227-248b-4bc1-be72-ad8c5f32a259","testObject":{"ref":"EIDef92c95c-b75e-4d2a-8014-5a4ce6eb7eac"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a35e65b-0175-1000-114e-d5eb6988c51d","testCaseResults":{"TestCaseResult":[{"id":"EID6a35e65b-0175-1000-024d-0d7253138d3b","testStepResults":{"TestStepResult":[{"id":"EID6a35e665-0175-1000-69ca-80d6c6097872","parent":{"ref":"EID6a35e65b-0175-1000-024d-0d7253138d3b"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:18:38Z","duration":18,"status":"PASSED"},{"id":"EID6a35e677-0175-1000-df96-bc5ec2e1607f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35e7c5-0175-1000-21ac-08311283761d","parent":{"ref":"EID6a35e677-0175-1000-df96-bc5ec2e1607f"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:18:39Z","duration":0,"status":"PASSED"},{"id":"EID6a35e7c5-0175-1000-4f6e-4e21a81fe3d3","parent":{"ref":"EID6a35e677-0175-1000-df96-bc5ec2e1607f"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:18:39Z","duration":0,"status":"PASSED"},{"id":"EID6a35e7c5-0175-1000-071c-f5fbb4cfe571","parent":{"ref":"EID6a35e677-0175-1000-df96-bc5ec2e1607f"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:18:39Z","duration":0,"status":"PASSED"},{"id":"EID6a35e7c5-0175-1000-3dad-104c802eff88","parent":{"ref":"EID6a35e677-0175-1000-df96-bc5ec2e1607f"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:18:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8266a003-84d9-4d38-b406-2ae3315f6293"},{"ref":"EIDf32dadbe-3924-4e3b-b1fd-3340732e1a31"},{"ref":"EID6516452c-ecc1-4729-a323-754de4d16e18"}]},"parent":{"ref":"EID6a35e65b-0175-1000-024d-0d7253138d3b"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:18:38Z","duration":81,"status":"PASSED"}]},"parent":{"ref":"EID6a35e65b-0175-1000-114e-d5eb6988c51d"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:18:38Z","duration":362,"status":"PASSED"},{"id":"EID6a35e7c5-0175-1000-375d-3b191359b49d","testStepResults":{"TestStepResult":{"id":"EID6a35e7df-0175-1000-a199-10dbbcd5b1f2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35e8c2-0175-1000-b8c3-f9b81848040e","parent":{"ref":"EID6a35e7df-0175-1000-a199-10dbbcd5b1f2"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:18:39Z","duration":0,"status":"PASSED"},{"id":"EID6a35e8c2-0175-1000-2ba0-afccce5a036f","parent":{"ref":"EID6a35e7df-0175-1000-a199-10dbbcd5b1f2"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:18:39Z","duration":0,"status":"PASSED"},{"id":"EID6a35e8c2-0175-1000-b7de-030a96596412","parent":{"ref":"EID6a35e7df-0175-1000-a199-10dbbcd5b1f2"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:18:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcd6f1de9-90c2-49c9-b830-ccd770e707a1"},{"ref":"EIDee9c9e7d-743a-4fab-ba9b-316b107678c4"},{"ref":"EID048e25d1-adb3-4fad-80a3-8142dc3f5cc4"}]},"parent":{"ref":"EID6a35e7c5-0175-1000-375d-3b191359b49d"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:18:39Z","duration":84,"status":"PASSED"}},"parent":{"ref":"EID6a35e65b-0175-1000-114e-d5eb6988c51d"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:18:39Z","duration":253,"status":"PASSED"}]},"parent":{"ref":"EID32f37227-248b-4bc1-be72-ad8c5f32a259"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:18:38Z","duration":616,"status":"PASSED"},{"id":"EID6a35e8c3-0175-1000-3b45-35f67f55b6a8","testCaseResults":{"TestCaseResult":[{"id":"EID6a35e8c3-0175-1000-2e09-fc3c2b82c8bd","testStepResults":{"TestStepResult":[{"id":"EID6a35e8c3-0175-1000-ba17-8511e2ef3917","parent":{"ref":"EID6a35e8c3-0175-1000-2e09-fc3c2b82c8bd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:18:39Z","duration":84,"status":"PASSED"},{"id":"EID6a35e8c3-0175-1000-a97d-5ea1312f5810","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35ea6c-0175-1000-fb47-351bfa9297c8","parent":{"ref":"EID6a35e8c3-0175-1000-a97d-5ea1312f5810"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:18:39Z","duration":0,"status":"PASSED"},{"id":"EID6a35ea6c-0175-1000-a59c-c72d882c7656","parent":{"ref":"EID6a35e8c3-0175-1000-a97d-5ea1312f5810"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:18:39Z","duration":0,"status":"PASSED"},{"id":"EID6a35ea6c-0175-1000-c675-b2df87be7c63","parent":{"ref":"EID6a35e8c3-0175-1000-a97d-5ea1312f5810"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:18:39Z","duration":0,"status":"PASSED"},{"id":"EID6a35ea6c-0175-1000-c245-492a591fb4d1","parent":{"ref":"EID6a35e8c3-0175-1000-a97d-5ea1312f5810"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:18:39Z","duration":0,"status":"PASSED"},{"id":"EID6a35ea6c-0175-1000-7584-33ce65357669","parent":{"ref":"EID6a35e8c3-0175-1000-a97d-5ea1312f5810"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:18:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf3d1fdcf-9620-466d-af33-3eed92f35c9e"},{"ref":"EIDa85595cd-c8f4-4ac8-ab04-48c087d39771"},{"ref":"EIDb954b6a6-3de0-4100-a86d-279cc7ff208c"}]},"parent":{"ref":"EID6a35e8c3-0175-1000-2e09-fc3c2b82c8bd"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:18:39Z","duration":97,"status":"PASSED"}]},"parent":{"ref":"EID6a35e8c3-0175-1000-3b45-35f67f55b6a8"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:18:39Z","duration":425,"status":"PASSED"},{"id":"EID6a35ea6c-0175-1000-884b-b825e01a8696","testStepResults":{"TestStepResult":[{"id":"EID6a35ea6c-0175-1000-d12c-930ff12414bc","attachments":{"attachment":[{"ref":"EIDfba39f43-072b-4e8e-af27-2680d283407f"},{"ref":"EID2acf247d-7965-4fd8-aff0-d9f560394e04"}]},"parent":{"ref":"EID6a35ea6c-0175-1000-884b-b825e01a8696"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:18:39Z","duration":135,"status":"PASSED"},{"id":"EID6a35eb19-0175-1000-d452-1d28d4b9dfb5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35ec39-0175-1000-bca2-6bdefbd09365","parent":{"ref":"EID6a35eb19-0175-1000-d452-1d28d4b9dfb5"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:18:40Z","duration":0,"status":"PASSED"},{"id":"EID6a35ec39-0175-1000-7662-cb30267e229c","parent":{"ref":"EID6a35eb19-0175-1000-d452-1d28d4b9dfb5"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:18:40Z","duration":0,"status":"PASSED"},{"id":"EID6a35ec39-0175-1000-f67b-0511cc712191","parent":{"ref":"EID6a35eb19-0175-1000-d452-1d28d4b9dfb5"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:18:40Z","duration":0,"status":"PASSED"},{"id":"EID6a35ec39-0175-1000-c7c3-c6d568e9ffbc","parent":{"ref":"EID6a35eb19-0175-1000-d452-1d28d4b9dfb5"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:18:40Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4740060e-7fc2-4041-a8b8-327d5505b0ea"},{"ref":"EIDbcd7f304-ddc8-4374-bcab-694b017e502c"},{"ref":"EIDc4962722-6319-4191-ac71-0aa19c864ec6"}]},"parent":{"ref":"EID6a35ea6c-0175-1000-884b-b825e01a8696"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:18:39Z","duration":133,"status":"PASSED"}]},"parent":{"ref":"EID6a35e8c3-0175-1000-3b45-35f67f55b6a8"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:18:39Z","duration":461,"status":"PASSED"},{"id":"EID6a35ec39-0175-1000-41ef-e1f6dc1203dd","testStepResults":{"TestStepResult":[{"id":"EID6a35ec39-0175-1000-906c-754d22bd2b6c","attachments":{"attachment":[{"ref":"EID978a9219-d33e-437a-9a9b-2d98a72ecd9e"},{"ref":"EIDc769ec98-6aaa-48a6-a55f-a288b271e4df"}]},"parent":{"ref":"EID6a35ec39-0175-1000-41ef-e1f6dc1203dd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:18:40Z","duration":227,"status":"PASSED"},{"id":"EID6a35ed4d-0175-1000-4879-0c66254516d3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35eeab-0175-1000-6db2-c697198a0e0e","parent":{"ref":"EID6a35ed4d-0175-1000-4879-0c66254516d3"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:18:40Z","duration":0,"status":"PASSED"},{"id":"EID6a35eeab-0175-1000-ddf9-6c125ae875b3","parent":{"ref":"EID6a35ed4d-0175-1000-4879-0c66254516d3"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:18:40Z","duration":0,"status":"PASSED"},{"id":"EID6a35eeab-0175-1000-5364-4ef0e533d26f","parent":{"ref":"EID6a35ed4d-0175-1000-4879-0c66254516d3"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:18:40Z","duration":0,"status":"PASSED"},{"id":"EID6a35eeab-0175-1000-0a88-bf2208ea4975","parent":{"ref":"EID6a35ed4d-0175-1000-4879-0c66254516d3"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:18:40Z","duration":0,"status":"PASSED"},{"id":"EID6a35eeab-0175-1000-bad3-038e77d47673","parent":{"ref":"EID6a35ed4d-0175-1000-4879-0c66254516d3"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:18:40Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8d538ff5-be3d-45cc-8d77-e6b53e128e95"},{"ref":"EID1f46e562-86e0-42fb-b291-51d754b1749e"},{"ref":"EID544b81c6-d9ae-44e2-9c57-f5d7e1a51f44"}]},"parent":{"ref":"EID6a35ec39-0175-1000-41ef-e1f6dc1203dd"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:18:40Z","duration":177,"status":"PASSED"}]},"parent":{"ref":"EID6a35e8c3-0175-1000-3b45-35f67f55b6a8"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:18:40Z","duration":634,"status":"PASSED"},{"id":"EID6a35eeb3-0175-1000-298c-07fedbcc040e","testStepResults":{"TestStepResult":[{"id":"EID6a35eeb4-0175-1000-97a4-8e859c60c1f1","attachments":{"attachment":[{"ref":"EIDc1e1e821-0adc-45c9-952b-6237e5223611"},{"ref":"EID75cdfb79-36e6-4e77-a3a4-1a6542db1de2"}]},"parent":{"ref":"EID6a35eeb3-0175-1000-298c-07fedbcc040e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:18:40Z","duration":189,"status":"PASSED"},{"id":"EID6a35ef99-0175-1000-7786-846edf078bf2","parent":{"ref":"EID6a35eeb3-0175-1000-298c-07fedbcc040e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:18:41Z","duration":0,"status":"PASSED"},{"id":"EID6a35ef99-0175-1000-63ae-6e0da35a47dc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35f078-0175-1000-cc1a-81e3039d1bda","parent":{"ref":"EID6a35ef99-0175-1000-63ae-6e0da35a47dc"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:18:41Z","duration":0,"status":"PASSED"},{"id":"EID6a35f078-0175-1000-2118-52e7d73dd5a2","parent":{"ref":"EID6a35ef99-0175-1000-63ae-6e0da35a47dc"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:18:41Z","duration":0,"status":"PASSED"},{"id":"EID6a35f078-0175-1000-cd52-a30c4738dac6","parent":{"ref":"EID6a35ef99-0175-1000-63ae-6e0da35a47dc"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:18:41Z","duration":0,"status":"PASSED"},{"id":"EID6a35f078-0175-1000-67a1-721bd45ef4d8","parent":{"ref":"EID6a35ef99-0175-1000-63ae-6e0da35a47dc"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:18:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcd557e34-6728-43e2-896f-9f0d4199c17f"},{"ref":"EID7d36d79a-4994-4560-aacb-80100e30b763"},{"ref":"EID219438f7-edb3-4cfa-8657-99ab6abbbb5e"}]},"parent":{"ref":"EID6a35eeb3-0175-1000-298c-07fedbcc040e"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:18:41Z","duration":99,"status":"PASSED"},{"id":"EID6a35f078-0175-1000-49c1-6ab33dcb7045","attachments":{"attachment":{"ref":"EID1d9fd39e-fa0c-4cc5-bafd-69ba72a1e7a4"}},"parent":{"ref":"EID6a35eeb3-0175-1000-298c-07fedbcc040e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:18:41Z","duration":1,"status":"PASSED"},{"id":"EID6a35f087-0175-1000-b67c-bde857c76316","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35f188-0175-1000-518e-1fc9eb6118f4","parent":{"ref":"EID6a35f087-0175-1000-b67c-bde857c76316"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:18:41Z","duration":0,"status":"PASSED"},{"id":"EID6a35f188-0175-1000-d303-39f380bba41f","parent":{"ref":"EID6a35f087-0175-1000-b67c-bde857c76316"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:18:41Z","duration":0,"status":"PASSED"},{"id":"EID6a35f188-0175-1000-2863-5ebceeb6ff43","parent":{"ref":"EID6a35f087-0175-1000-b67c-bde857c76316"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:18:41Z","duration":0,"status":"PASSED"},{"id":"EID6a35f188-0175-1000-e4ba-dec936f41245","parent":{"ref":"EID6a35f087-0175-1000-b67c-bde857c76316"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:18:41Z","duration":0,"status":"PASSED"},{"id":"EID6a35f188-0175-1000-e4a4-ec0d1ec6dc7f","parent":{"ref":"EID6a35f087-0175-1000-b67c-bde857c76316"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:18:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDac02231c-a584-4df7-9ef5-cfa92ed01d28"},{"ref":"EID399e50bf-3f17-4497-a842-30c4523343e0"},{"ref":"EID107a10d9-72fb-4e1a-bdd0-fc1efada65ee"}]},"parent":{"ref":"EID6a35eeb3-0175-1000-298c-07fedbcc040e"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:18:41Z","duration":32,"status":"PASSED"}]},"parent":{"ref":"EID6a35e8c3-0175-1000-3b45-35f67f55b6a8"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:18:40Z","duration":725,"status":"PASSED"},{"id":"EID6a35f188-0175-1000-e423-c0846eac110b","testStepResults":{"TestStepResult":[{"id":"EID6a35f188-0175-1000-f897-9c205a7d260b","attachments":{"attachment":[{"ref":"EID130b409a-494c-4767-ab1c-22d26f0502fa"},{"ref":"EID48d2c2bf-cd13-41b8-8796-34d59ab014da"}]},"parent":{"ref":"EID6a35f188-0175-1000-e423-c0846eac110b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:18:41Z","duration":125,"status":"PASSED"},{"id":"EID6a35f244-0175-1000-6aa4-6cc6419f460b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35f3ea-0175-1000-817f-6452524e4af1","parent":{"ref":"EID6a35f244-0175-1000-6aa4-6cc6419f460b"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:18:42Z","duration":0,"status":"PASSED"},{"id":"EID6a35f3ea-0175-1000-ca09-b3ee5326fc1a","parent":{"ref":"EID6a35f244-0175-1000-6aa4-6cc6419f460b"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:18:42Z","duration":0,"status":"PASSED"},{"id":"EID6a35f3ea-0175-1000-ec64-e94f3ba3c599","parent":{"ref":"EID6a35f244-0175-1000-6aa4-6cc6419f460b"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:18:42Z","duration":0,"status":"PASSED"},{"id":"EID6a35f3ea-0175-1000-c89d-518a242814a9","parent":{"ref":"EID6a35f244-0175-1000-6aa4-6cc6419f460b"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:18:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8a8302bf-07ea-4f12-9fc1-f0c411170fb1"},{"ref":"EID5482cac1-aad3-4d3b-b877-4ff7c612553a"},{"ref":"EIDbdddd861-5f9c-4462-a462-89ab33db3537"}]},"parent":{"ref":"EID6a35f188-0175-1000-e423-c0846eac110b"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:18:41Z","duration":135,"status":"PASSED"}]},"parent":{"ref":"EID6a35e8c3-0175-1000-3b45-35f67f55b6a8"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:18:41Z","duration":610,"status":"PASSED"},{"id":"EID6a35f3eb-0175-1000-b975-1ea35e6205d7","testStepResults":{"TestStepResult":[{"id":"EID6a35f3eb-0175-1000-671a-2809eba42b6e","attachments":{"attachment":[{"ref":"EIDa0fec34a-2887-43df-bcc3-678a39f7aa2f"},{"ref":"EID010d523b-2aa4-438c-af31-52d8cb75f168"}]},"parent":{"ref":"EID6a35f3eb-0175-1000-b975-1ea35e6205d7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:18:42Z","duration":164,"status":"PASSED"},{"id":"EID6a35f4bf-0175-1000-2b02-cb924154772a","parent":{"ref":"EID6a35f3eb-0175-1000-b975-1ea35e6205d7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:18:42Z","duration":0,"status":"PASSED"},{"id":"EID6a35f4bf-0175-1000-96fc-03b630c6d042","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35f601-0175-1000-d55b-0924635d2742","parent":{"ref":"EID6a35f4bf-0175-1000-96fc-03b630c6d042"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:18:42Z","duration":0,"status":"PASSED"},{"id":"EID6a35f601-0175-1000-dd14-18e0dd71fb4c","parent":{"ref":"EID6a35f4bf-0175-1000-96fc-03b630c6d042"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:18:42Z","duration":0,"status":"PASSED"},{"id":"EID6a35f601-0175-1000-fe1b-0d843119d0c2","parent":{"ref":"EID6a35f4bf-0175-1000-96fc-03b630c6d042"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:18:42Z","duration":0,"status":"PASSED"},{"id":"EID6a35f601-0175-1000-152a-b15e4adb1f5f","parent":{"ref":"EID6a35f4bf-0175-1000-96fc-03b630c6d042"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:18:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4b47c98e-646c-490b-a8d6-e806544120ab"},{"ref":"EID82b5291a-8948-47c8-afa7-eb182b85c577"},{"ref":"EID281c5ed5-a495-4183-8c5a-140ccc5c05d8"}]},"parent":{"ref":"EID6a35f3eb-0175-1000-b975-1ea35e6205d7"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:18:42Z","duration":76,"status":"PASSED"},{"id":"EID6a35f601-0175-1000-c5c6-d88989884e47","attachments":{"attachment":{"ref":"EID7e6385c0-652a-48fd-886c-32ce4a618582"}},"parent":{"ref":"EID6a35f3eb-0175-1000-b975-1ea35e6205d7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:18:42Z","duration":3,"status":"PASSED"},{"id":"EID6a35f610-0175-1000-2b09-bd3306fc7ea1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35f7aa-0175-1000-4a45-95963450b9a9","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a35f610-0175-1000-2b09-bd3306fc7ea1"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:18:43Z","duration":23,"status":"FAILED"},{"id":"EID6a35f7c1-0175-1000-dad3-3a8bc7b4a56c","parent":{"ref":"EID6a35f610-0175-1000-2b09-bd3306fc7ea1"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:18:43Z","duration":0,"status":"PASSED"},{"id":"EID6a35f7c1-0175-1000-75e1-c69f39fbbb80","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6a35f610-0175-1000-2b09-bd3306fc7ea1"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:18:43Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDe06df9dd-0e49-4b4f-922f-7ba03fb83802"},{"ref":"EID621e7ecb-efe9-4800-9f85-d769a278445e"},{"ref":"EID4c1fd6e0-bad0-4b92-9220-f407418471a8"}]},"parent":{"ref":"EID6a35f3eb-0175-1000-b975-1ea35e6205d7"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:18:42Z","duration":318,"status":"FAILED"}]},"parent":{"ref":"EID6a35e8c3-0175-1000-3b45-35f67f55b6a8"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:18:42Z","duration":982,"status":"FAILED"},{"id":"EID6a35f7c1-0175-1000-d141-a8f259a82f78","testStepResults":{"TestStepResult":[{"id":"EID6a35f7c1-0175-1000-81b8-8c8aedbfcee9","attachments":{"attachment":[{"ref":"EIDbfdad827-2e06-4dff-a7d4-6623ad25222c"},{"ref":"EID327758f8-8b29-425b-9698-fcf88d026f47"}]},"parent":{"ref":"EID6a35f7c1-0175-1000-d141-a8f259a82f78"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:18:43Z","duration":116,"status":"PASSED"},{"id":"EID6a35f86b-0175-1000-b39f-fbbbe3983b39","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35fa43-0175-1000-6564-a0bf81f87d8a","parent":{"ref":"EID6a35f86b-0175-1000-b39f-fbbbe3983b39"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:18:43Z","duration":0,"status":"PASSED"},{"id":"EID6a35fa43-0175-1000-4229-bfc4c5222f85","parent":{"ref":"EID6a35f86b-0175-1000-b39f-fbbbe3983b39"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:18:43Z","duration":0,"status":"PASSED"},{"id":"EID6a35fa43-0175-1000-6566-d3fa5006d7d2","parent":{"ref":"EID6a35f86b-0175-1000-b39f-fbbbe3983b39"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:18:43Z","duration":0,"status":"PASSED"},{"id":"EID6a35fa43-0175-1000-755b-685ec003b779","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a35f86b-0175-1000-b39f-fbbbe3983b39"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:18:43Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID5890c9fd-10e4-4dd6-b8fa-09b749e245c1"},{"ref":"EIDbcb71023-04d3-493c-b790-96a3d174c390"},{"ref":"EID5c19bd81-53a4-4864-a2c6-68ff9cf0f948"}]},"parent":{"ref":"EID6a35f7c1-0175-1000-d141-a8f259a82f78"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:18:43Z","duration":139,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a35e8c3-0175-1000-3b45-35f67f55b6a8"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:18:43Z","duration":649,"status":"PASSED_MANUAL"},{"id":"EID6a35fa4b-0175-1000-a797-265f328aad85","testStepResults":{"TestStepResult":{"id":"EID6a35fa4b-0175-1000-e2c5-f7863748189d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35fb2c-0175-1000-7606-cccfd1d84a77","parent":{"ref":"EID6a35fa4b-0175-1000-e2c5-f7863748189d"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:18:44Z","duration":0,"status":"PASSED"},{"id":"EID6a35fb2c-0175-1000-0f78-7557be724746","parent":{"ref":"EID6a35fa4b-0175-1000-e2c5-f7863748189d"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:18:44Z","duration":0,"status":"PASSED"},{"id":"EID6a35fb2c-0175-1000-866c-b780f686bb97","parent":{"ref":"EID6a35fa4b-0175-1000-e2c5-f7863748189d"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:18:44Z","duration":0,"status":"PASSED"},{"id":"EID6a35fb2c-0175-1000-8044-eac436095d3b","parent":{"ref":"EID6a35fa4b-0175-1000-e2c5-f7863748189d"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:18:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID213c200f-a289-4bb4-bdb8-496b0fb1c82a"},{"ref":"EIDe4b22a54-65fd-4c43-8e52-b5e343c5b62a"},{"ref":"EIDd1d6e79b-ea7d-4c9a-822c-3793baff2486"}]},"parent":{"ref":"EID6a35fa4b-0175-1000-a797-265f328aad85"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:18:43Z","duration":57,"status":"PASSED"}},"parent":{"ref":"EID6a35e8c3-0175-1000-3b45-35f67f55b6a8"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:18:43Z","duration":225,"status":"PASSED"},{"id":"EID6a35fb2c-0175-1000-ebbb-6dca892ee02f","testStepResults":{"TestStepResult":{"id":"EID6a35fb2c-0175-1000-2a4d-d3817123569b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35fbe6-0175-1000-1218-53400933cb69","parent":{"ref":"EID6a35fb2c-0175-1000-2a4d-d3817123569b"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:18:44Z","duration":0,"status":"PASSED"},{"id":"EID6a35fbe6-0175-1000-6ba4-3b4222e438fd","parent":{"ref":"EID6a35fb2c-0175-1000-2a4d-d3817123569b"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:18:44Z","duration":0,"status":"PASSED"},{"id":"EID6a35fbe6-0175-1000-6859-a9feeaf13a14","parent":{"ref":"EID6a35fb2c-0175-1000-2a4d-d3817123569b"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:18:44Z","duration":0,"status":"PASSED"},{"id":"EID6a35fbe6-0175-1000-6b8d-fa2749a608d9","parent":{"ref":"EID6a35fb2c-0175-1000-2a4d-d3817123569b"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:18:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf7e3a4fc-69b1-4eff-99a4-8578b907721f"},{"ref":"EID972ef67d-22e5-4776-9ebe-7374945f224c"},{"ref":"EIDeb43d60a-2e0f-4a97-8ab8-30d62d1248c1"}]},"parent":{"ref":"EID6a35fb2c-0175-1000-ebbb-6dca892ee02f"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:18:44Z","duration":34,"status":"PASSED"}},"parent":{"ref":"EID6a35e8c3-0175-1000-3b45-35f67f55b6a8"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:18:44Z","duration":188,"status":"PASSED"},{"id":"EID6a35fbe8-0175-1000-d6b1-e64a703520a8","testStepResults":{"TestStepResult":{"id":"EID6a35fbe8-0175-1000-df8e-c475c9e03125","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EIDd3c42431-a2fa-411e-994a-96055c2f6816"},{"ref":"EIDf23bd819-e9b0-428b-a6df-120754da6308"},{"ref":"EID5fe4cbed-3935-4438-9590-2a16267493ca"},{"ref":"EID52eca7a9-0391-475b-9379-16dd19206a5b"},{"ref":"EID47b1d7e2-b735-4947-9867-e1830b614b21"},{"ref":"EID39e76db7-14c3-40d4-a38e-b090228ed54f"},{"ref":"EIDac28b4e2-9442-43d1-8277-8997f85c7368"},{"ref":"EID99622573-f919-4ad8-86e4-1cc4b0b183fd"},{"ref":"EID2f10fa41-57e6-4076-8b2c-a8f7bb33455b"}]},"parent":{"ref":"EID6a35fbe8-0175-1000-d6b1-e64a703520a8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:18:44Z","duration":765,"status":"SKIPPED"}},"parent":{"ref":"EID6a35e8c3-0175-1000-3b45-35f67f55b6a8"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:18:44Z","duration":941,"status":"SKIPPED"},{"id":"EID6a35ff96-0175-1000-5d84-275568b59587","testStepResults":{"TestStepResult":{"id":"EID6a35ff96-0175-1000-dcc6-0189a32b4143","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a360196-0175-1000-cac6-e95f9b849b85","parent":{"ref":"EID6a35ff96-0175-1000-dcc6-0189a32b4143"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:18:45Z","duration":0,"status":"PASSED"},{"id":"EID6a360196-0175-1000-efde-9e0b7828251a","parent":{"ref":"EID6a35ff96-0175-1000-dcc6-0189a32b4143"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:18:45Z","duration":0,"status":"PASSED"},{"id":"EID6a360196-0175-1000-4d17-4506ea9790aa","parent":{"ref":"EID6a35ff96-0175-1000-dcc6-0189a32b4143"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:18:45Z","duration":0,"status":"PASSED"},{"id":"EID6a360196-0175-1000-ffed-4d5ec4e03b81","parent":{"ref":"EID6a35ff96-0175-1000-dcc6-0189a32b4143"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:18:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID300b02e3-92a1-4b69-82cc-2a5beee13f36"},{"ref":"EIDc939f1fc-25a9-4b05-ba8a-2d98aad43405"},{"ref":"EID30401e85-f708-4cf1-a110-72afaaf8844b"}]},"parent":{"ref":"EID6a35ff96-0175-1000-5d84-275568b59587"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:18:45Z","duration":169,"status":"PASSED"}},"parent":{"ref":"EID6a35e8c3-0175-1000-3b45-35f67f55b6a8"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:18:45Z","duration":512,"status":"PASSED"},{"id":"EID6a360196-0175-1000-4af0-4fd816904536","testStepResults":{"TestStepResult":{"id":"EID6a360196-0175-1000-056c-ee5f78a5eee4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a360281-0175-1000-9f9f-72262f51fee4","parent":{"ref":"EID6a360196-0175-1000-056c-ee5f78a5eee4"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:18:45Z","duration":0,"status":"PASSED"},{"id":"EID6a360281-0175-1000-d550-074cfed3b421","parent":{"ref":"EID6a360196-0175-1000-056c-ee5f78a5eee4"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:18:45Z","duration":0,"status":"PASSED"},{"id":"EID6a360281-0175-1000-9fc7-c61b85ccec73","parent":{"ref":"EID6a360196-0175-1000-056c-ee5f78a5eee4"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:18:45Z","duration":0,"status":"PASSED"},{"id":"EID6a360281-0175-1000-d419-8d067f4193b3","parent":{"ref":"EID6a360196-0175-1000-056c-ee5f78a5eee4"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:18:45Z","duration":0,"status":"PASSED"},{"id":"EID6a360281-0175-1000-c9d3-d414710ecd61","parent":{"ref":"EID6a360196-0175-1000-056c-ee5f78a5eee4"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:18:45Z","duration":0,"status":"PASSED"},{"id":"EID6a360281-0175-1000-755e-69731227a111","parent":{"ref":"EID6a360196-0175-1000-056c-ee5f78a5eee4"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:18:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9207b1bc-fc1b-443e-bc0b-9fbb852a9d52"},{"ref":"EID666700f0-5b6f-411f-9b7e-7afdbfca53ba"},{"ref":"EID504f993d-8784-4245-855f-3c58a88a7ce0"}]},"parent":{"ref":"EID6a360196-0175-1000-4af0-4fd816904536"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:18:45Z","duration":92,"status":"PASSED"}},"parent":{"ref":"EID6a35e8c3-0175-1000-3b45-35f67f55b6a8"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:18:45Z","duration":235,"status":"PASSED"},{"id":"EID6a360281-0175-1000-1cd6-4028844fd1f9","testStepResults":{"TestStepResult":{"id":"EID6a360281-0175-1000-cc34-75453da60458","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a360380-0175-1000-df4f-3d0a499ef790","parent":{"ref":"EID6a360281-0175-1000-cc34-75453da60458"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:18:46Z","duration":0,"status":"PASSED"},{"id":"EID6a360380-0175-1000-e82a-d8e0ab917a27","parent":{"ref":"EID6a360281-0175-1000-cc34-75453da60458"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:18:46Z","duration":0,"status":"PASSED"},{"id":"EID6a360380-0175-1000-6055-d8111541650a","parent":{"ref":"EID6a360281-0175-1000-cc34-75453da60458"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:18:46Z","duration":0,"status":"PASSED"},{"id":"EID6a360380-0175-1000-43b3-089716ad6dc9","parent":{"ref":"EID6a360281-0175-1000-cc34-75453da60458"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:18:46Z","duration":0,"status":"PASSED"},{"id":"EID6a360380-0175-1000-7e01-7292b50c8ba3","parent":{"ref":"EID6a360281-0175-1000-cc34-75453da60458"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:18:46Z","duration":0,"status":"PASSED"},{"id":"EID6a360380-0175-1000-93a0-d019d56b1199","parent":{"ref":"EID6a360281-0175-1000-cc34-75453da60458"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:18:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID510ae890-2295-4ca8-9572-b9e9a59665f8"},{"ref":"EID4a13c0df-6c0e-4a18-b8fe-111529831ccc"},{"ref":"EIDfe9af7ec-e332-4137-bc1c-1384ace88dca"}]},"parent":{"ref":"EID6a360281-0175-1000-1cd6-4028844fd1f9"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:18:45Z","duration":92,"status":"PASSED"}},"parent":{"ref":"EID6a35e8c3-0175-1000-3b45-35f67f55b6a8"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:18:45Z","duration":255,"status":"PASSED"},{"id":"EID6a360380-0175-1000-9ce0-fc79453b0fec","testStepResults":{"TestStepResult":{"id":"EID6a360380-0175-1000-f6db-212ba7d719a2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a360506-0175-1000-3312-c40f3db8bf12","parent":{"ref":"EID6a360380-0175-1000-f6db-212ba7d719a2"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:18:46Z","duration":0,"status":"PASSED"},{"id":"EID6a360506-0175-1000-f0be-9997ecd5fc85","parent":{"ref":"EID6a360380-0175-1000-f6db-212ba7d719a2"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:18:46Z","duration":0,"status":"PASSED"},{"id":"EID6a360506-0175-1000-1f68-ef1b47e21466","parent":{"ref":"EID6a360380-0175-1000-f6db-212ba7d719a2"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:18:46Z","duration":0,"status":"PASSED"},{"id":"EID6a360506-0175-1000-0b4d-f464aa68de9f","parent":{"ref":"EID6a360380-0175-1000-f6db-212ba7d719a2"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:18:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2df549d3-9299-40ba-8666-84644a4ccb84"},{"ref":"EID87cb13d2-628e-44db-abcd-9dcbcb569249"},{"ref":"EIDf4e55e9d-f671-4279-8078-aa820c4e0211"}]},"parent":{"ref":"EID6a360380-0175-1000-9ce0-fc79453b0fec"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:18:46Z","duration":104,"status":"PASSED"}},"parent":{"ref":"EID6a35e8c3-0175-1000-3b45-35f67f55b6a8"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:18:46Z","duration":390,"status":"PASSED"},{"id":"EID6a360507-0175-1000-1733-f130d1781318","testStepResults":{"TestStepResult":[{"id":"EID6a360507-0175-1000-375b-da47d3b38b6a","attachments":{"attachment":[{"ref":"EIDbc56285e-caa5-4476-8a3c-750c954888ba"},{"ref":"EID0bb27ebd-3ea2-4f7c-9eed-87be6dfb07c8"},{"ref":"EID6f912451-f392-4c82-95c8-11f8dd48ab3b"},{"ref":"EIDc0c20a00-ad55-4fc2-b463-7ab9e8e7c68b"}]},"parent":{"ref":"EID6a360507-0175-1000-1733-f130d1781318"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:18:46Z","duration":413,"status":"PASSED"},{"id":"EID6a360748-0175-1000-750d-9345d6517846","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a360920-0175-1000-739c-c559801e2124","parent":{"ref":"EID6a360748-0175-1000-750d-9345d6517846"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:18:47Z","duration":0,"status":"PASSED"},{"id":"EID6a360920-0175-1000-6594-60827b5e8935","parent":{"ref":"EID6a360748-0175-1000-750d-9345d6517846"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:18:47Z","duration":0,"status":"PASSED"},{"id":"EID6a360920-0175-1000-5746-ec09cf7352ad","parent":{"ref":"EID6a360748-0175-1000-750d-9345d6517846"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:18:47Z","duration":0,"status":"PASSED"},{"id":"EID6a360920-0175-1000-adb0-8c58d32501dd","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6a360748-0175-1000-750d-9345d6517846"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:18:47Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDf4660924-3ad7-4d39-817b-5cd9b2f2f43a"},{"ref":"EIDb4472655-9c5a-42f1-a627-88106fefb06b"},{"ref":"EID70cd5aac-e00a-42fd-8644-b08c0949b5c1"}]},"parent":{"ref":"EID6a360507-0175-1000-1733-f130d1781318"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:18:47Z","duration":73,"status":"FAILED"}]},"parent":{"ref":"EID6a35e8c3-0175-1000-3b45-35f67f55b6a8"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:18:46Z","duration":1049,"status":"FAILED"},{"id":"EID6a360920-0175-1000-6cd1-6753998663b5","testStepResults":{"TestStepResult":{"id":"EID6a360920-0175-1000-3df8-a5dc422de7aa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3609fd-0175-1000-e4c3-0831c2fa4316","parent":{"ref":"EID6a360920-0175-1000-3df8-a5dc422de7aa"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:18:47Z","duration":0,"status":"PASSED"},{"id":"EID6a3609fd-0175-1000-395d-ac4b41374480","parent":{"ref":"EID6a360920-0175-1000-3df8-a5dc422de7aa"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:18:47Z","duration":0,"status":"PASSED"},{"id":"EID6a3609fd-0175-1000-d294-9052c675677d","parent":{"ref":"EID6a360920-0175-1000-3df8-a5dc422de7aa"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:18:47Z","duration":0,"status":"PASSED"},{"id":"EID6a3609fd-0175-1000-97ab-58eeb7980e00","parent":{"ref":"EID6a360920-0175-1000-3df8-a5dc422de7aa"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:18:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf571bffe-1541-427a-bde8-0cd16044929a"},{"ref":"EID21796a48-fbea-49cb-9e90-5f012d6b182b"},{"ref":"EID29da623a-9ea7-47aa-b2c5-42b33b8ce85b"}]},"parent":{"ref":"EID6a360920-0175-1000-6cd1-6753998663b5"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:18:47Z","duration":49,"status":"PASSED"}},"parent":{"ref":"EID6a35e8c3-0175-1000-3b45-35f67f55b6a8"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:18:47Z","duration":221,"status":"PASSED"},{"id":"EID6a3609fd-0175-1000-95b1-420a38245250","testStepResults":{"TestStepResult":[{"id":"EID6a3609fd-0175-1000-c7e2-b2266a64bd09","parent":{"ref":"EID6a3609fd-0175-1000-95b1-420a38245250"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:18:47Z","duration":0,"status":"PASSED"},{"id":"EID6a3609fd-0175-1000-31db-fb886b26dccb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a360bc3-0175-1000-a842-3bbf58c75981","parent":{"ref":"EID6a3609fd-0175-1000-31db-fb886b26dccb"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360bc3-0175-1000-8bee-514dfba2b36c","parent":{"ref":"EID6a3609fd-0175-1000-31db-fb886b26dccb"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360bc3-0175-1000-6330-5886abe5fe55","parent":{"ref":"EID6a3609fd-0175-1000-31db-fb886b26dccb"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360bc3-0175-1000-d54a-5bdb86f7a391","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6a3609fd-0175-1000-31db-fb886b26dccb"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID7385a138-af13-4d23-9f3b-1f30d4cab180"},{"ref":"EIDa3026f8b-61b8-4451-9ed2-38cb74d4de24"},{"ref":"EID00b87769-392b-4ffc-b127-e480d429fc0b"}]},"parent":{"ref":"EID6a3609fd-0175-1000-95b1-420a38245250"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:18:47Z","duration":77,"status":"FAILED"}]},"parent":{"ref":"EID6a35e8c3-0175-1000-3b45-35f67f55b6a8"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:18:47Z","duration":454,"status":"FAILED"}]},"parent":{"ref":"EID32f37227-248b-4bc1-be72-ad8c5f32a259"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:18:39Z","duration":8960,"status":"FAILED"},{"id":"EID6a360bc3-0175-1000-a671-b123bcdf19bd","testCaseResults":{"TestCaseResult":[{"id":"EID6a360bc3-0175-1000-f0af-2cade4389f5e","testStepResults":{"TestStepResult":[{"id":"EID6a360bc3-0175-1000-b65e-b41fbe12edc4","parent":{"ref":"EID6a360bc3-0175-1000-f0af-2cade4389f5e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360bc3-0175-1000-81ab-1e6873d69be4","parent":{"ref":"EID6a360bc3-0175-1000-f0af-2cade4389f5e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:18:48Z","duration":57,"status":"PASSED"},{"id":"EID6a360bcb-0175-1000-de68-8347b2661507","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a360c99-0175-1000-53e6-744ebc98ad7f","parent":{"ref":"EID6a360bcb-0175-1000-de68-8347b2661507"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360c99-0175-1000-146e-e23775a10fbc","parent":{"ref":"EID6a360bcb-0175-1000-de68-8347b2661507"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360c99-0175-1000-3c33-fcfb47cf067f","parent":{"ref":"EID6a360bcb-0175-1000-de68-8347b2661507"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID66ccd191-778f-45c4-9127-13b119985ed1"},{"ref":"EIDcdc58505-22d8-4191-9c24-3a3cb5ed98e3"},{"ref":"EIDcd68090d-4fa6-4137-8b96-f34fb4953e68"}]},"parent":{"ref":"EID6a360bc3-0175-1000-f0af-2cade4389f5e"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:18:48Z","duration":54,"status":"PASSED"},{"id":"EID6a360c99-0175-1000-826d-fa2cd8cd1cf6","attachments":{"attachment":{"ref":"EIDf30e58c0-b574-45cc-96cc-7f7ef5ac48b5"}},"parent":{"ref":"EID6a360bc3-0175-1000-f0af-2cade4389f5e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360ca8-0175-1000-d9fc-ac4a2d64bc09","parent":{"ref":"EID6a360bc3-0175-1000-f0af-2cade4389f5e"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:18:48Z","duration":24,"status":"PASSED"}]},"parent":{"ref":"EID6a360bc3-0175-1000-a671-b123bcdf19bd"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:18:48Z","duration":254,"status":"PASSED"},{"id":"EID6a360cc5-0175-1000-5b24-0723ecaee426","testStepResults":{"TestStepResult":[{"id":"EID6a360cc5-0175-1000-3f76-6097cc4e753f","parent":{"ref":"EID6a360cc5-0175-1000-5b24-0723ecaee426"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:18:48Z","duration":84,"status":"PASSED"},{"id":"EID6a360cc5-0175-1000-7fbc-4224f783b2e5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a360d5a-0175-1000-8165-472bf312689e","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a360cc5-0175-1000-7fbc-4224f783b2e5"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:18:48Z","duration":65,"status":"FAILED"},{"id":"EID6a360d9b-0175-1000-3f8d-9cd6ba2e52ef","parent":{"ref":"EID6a360cc5-0175-1000-7fbc-4224f783b2e5"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360d9b-0175-1000-372a-93f411084ba8","parent":{"ref":"EID6a360cc5-0175-1000-7fbc-4224f783b2e5"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360d9b-0175-1000-e4d1-2258504cbc72","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6a360cc5-0175-1000-7fbc-4224f783b2e5"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"FAILED"},{"id":"EID6a360d9b-0175-1000-b0da-8074a1b618c2","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6a360cc5-0175-1000-7fbc-4224f783b2e5"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDe506d9a2-881b-46a8-9fb7-faa9b426af88"},{"ref":"EIDefb98bc3-ea45-4ae4-8868-fced3442156b"},{"ref":"EID70bfca94-212c-4066-9f56-aed576a31644"}]},"parent":{"ref":"EID6a360cc5-0175-1000-5b24-0723ecaee426"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:18:48Z","duration":31,"status":"FAILED"}]},"parent":{"ref":"EID6a360bc3-0175-1000-a671-b123bcdf19bd"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:18:48Z","duration":214,"status":"FAILED"},{"id":"EID6a360d9c-0175-1000-eb1d-114f5e802889","testStepResults":{"TestStepResult":{"id":"EID6a360d9c-0175-1000-f63e-c5fbba98cf5e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a360e06-0175-1000-13af-03416ec54802","parent":{"ref":"EID6a360d9c-0175-1000-f63e-c5fbba98cf5e"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360e06-0175-1000-ce4a-0718b6f6925c","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a360d9c-0175-1000-f63e-c5fbba98cf5e"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:18:48Z","duration":72,"status":"FAILED"},{"id":"EID6a360e4e-0175-1000-1160-b5245452a267","parent":{"ref":"EID6a360d9c-0175-1000-f63e-c5fbba98cf5e"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdad7a07c-2d3c-4303-bc25-b354cf26c880"},{"ref":"EIDe34a16ad-d875-43d2-b6c2-450639c668b7"},{"ref":"EID6cc47296-a0ca-492c-89dd-3fcdd065ddd4"}]},"parent":{"ref":"EID6a360d9c-0175-1000-eb1d-114f5e802889"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:18:48Z","duration":27,"status":"FAILED"}},"parent":{"ref":"EID6a360bc3-0175-1000-a671-b123bcdf19bd"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:18:48Z","duration":178,"status":"FAILED"},{"id":"EID6a360e4e-0175-1000-1dd3-dc4d4f49c8ad","testStepResults":{"TestStepResult":{"id":"EID6a360e4e-0175-1000-0fc8-4530834f613c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a360ef0-0175-1000-d5bc-7801c0ab2439","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a360e4e-0175-1000-0fc8-4530834f613c"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"FAILED"},{"id":"EID6a360ef0-0175-1000-cfbd-f9fe45150b84","parent":{"ref":"EID6a360e4e-0175-1000-0fc8-4530834f613c"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a360ef0-0175-1000-9712-15baee9ab303","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a360e4e-0175-1000-0fc8-4530834f613c"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:18:49Z","duration":12,"status":"FAILED"},{"id":"EID6a360efc-0175-1000-b48e-e6cb2bd2f58a","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6a360e4e-0175-1000-0fc8-4530834f613c"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDdea4f72d-529e-4b23-ade9-2702bf458edc"},{"ref":"EID0740c2b6-5895-461f-ba49-096eea0a0ec2"},{"ref":"EID700f564e-4468-46b7-bdf2-29119edf1994"}]},"parent":{"ref":"EID6a360e4e-0175-1000-1dd3-dc4d4f49c8ad"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:18:48Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6a360bc3-0175-1000-a671-b123bcdf19bd"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:18:48Z","duration":175,"status":"FAILED"},{"id":"EID6a360efd-0175-1000-c6c1-a88aece65e89","testStepResults":{"TestStepResult":{"id":"EID6a360efd-0175-1000-b9c5-011ab89268dd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a360f55-0175-1000-54ff-7ccb126e7d70","parent":{"ref":"EID6a360efd-0175-1000-b9c5-011ab89268dd"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a360f55-0175-1000-86e2-7b85a906c89b","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a360efd-0175-1000-b9c5-011ab89268dd"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:18:49Z","duration":39,"status":"FAILED"},{"id":"EID6a360f7c-0175-1000-462b-c1066e6f5b60","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6a360efd-0175-1000-b9c5-011ab89268dd"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDb27e2eb9-1db7-4a96-8dd6-bdad6b7c7761"},{"ref":"EID1f454342-8586-4914-b392-13ce006b2965"},{"ref":"EID3cd74a7a-48d2-4a37-b223-bb35faf70cd4"}]},"parent":{"ref":"EID6a360efd-0175-1000-c6c1-a88aece65e89"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:18:49Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6a360bc3-0175-1000-a671-b123bcdf19bd"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:18:49Z","duration":127,"status":"FAILED"},{"id":"EID6a360f7c-0175-1000-6df7-79cd378535f2","testStepResults":{"TestStepResult":{"id":"EID6a360f7c-0175-1000-8ec2-2a383300db2d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a360fcf-0175-1000-20d6-722ee33378e4","parent":{"ref":"EID6a360f7c-0175-1000-8ec2-2a383300db2d"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a360fcf-0175-1000-0123-2737beeb9736","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a360f7c-0175-1000-8ec2-2a383300db2d"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:18:49Z","duration":14,"status":"FAILED"},{"id":"EID6a360fdd-0175-1000-f01c-cffa41363149","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a360f7c-0175-1000-8ec2-2a383300db2d"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDb4809a7a-7003-45de-994a-3c5035e90c47"},{"ref":"EID0d7663fd-37ab-4503-87a9-4403abf01584"},{"ref":"EIDf8a596ff-0f2d-4864-aefc-c99a8180ec46"}]},"parent":{"ref":"EID6a360f7c-0175-1000-6df7-79cd378535f2"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:18:49Z","duration":25,"status":"FAILED"}},"parent":{"ref":"EID6a360bc3-0175-1000-a671-b123bcdf19bd"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:18:49Z","duration":97,"status":"FAILED"},{"id":"EID6a360fdd-0175-1000-85f8-577169052412","testStepResults":{"TestStepResult":{"id":"EID6a360fdd-0175-1000-ec8a-ab644da2941a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36106f-0175-1000-35dd-38d7ee3b5968","parent":{"ref":"EID6a360fdd-0175-1000-ec8a-ab644da2941a"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a36106f-0175-1000-cf7d-aa99a47838eb","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a360fdd-0175-1000-ec8a-ab644da2941a"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:18:49Z","duration":13,"status":"FAILED"},{"id":"EID6a36107c-0175-1000-f810-41197390c51d","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6a360fdd-0175-1000-ec8a-ab644da2941a"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"FAILED"},{"id":"EID6a36107c-0175-1000-0010-6018ac2bbbb9","parent":{"ref":"EID6a360fdd-0175-1000-ec8a-ab644da2941a"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a36107c-0175-1000-457f-d612dccaacb5","parent":{"ref":"EID6a360fdd-0175-1000-ec8a-ab644da2941a"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf142a7d6-22bc-4b3f-af43-477abc85ccf2"},{"ref":"EID53c999a7-e873-4eac-b2d0-0bae4e5ac0bb"},{"ref":"EID213659db-5ad1-4733-997c-91c7add21e24"}]},"parent":{"ref":"EID6a360fdd-0175-1000-85f8-577169052412"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:18:49Z","duration":24,"status":"FAILED"}},"parent":{"ref":"EID6a360bc3-0175-1000-a671-b123bcdf19bd"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:18:49Z","duration":159,"status":"FAILED"},{"id":"EID6a36107c-0175-1000-d0a0-ba3cc49336e6","testStepResults":{"TestStepResult":{"id":"EID6a36107c-0175-1000-8cc9-d985d9b340f2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3610d2-0175-1000-7195-5816fa91d980","parent":{"ref":"EID6a36107c-0175-1000-8cc9-d985d9b340f2"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a3610d2-0175-1000-59fb-bc0b74d8e7c1","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a36107c-0175-1000-8cc9-d985d9b340f2"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:18:49Z","duration":12,"status":"FAILED"},{"id":"EID6a3610de-0175-1000-6b62-d78312f01dc9","parent":{"ref":"EID6a36107c-0175-1000-8cc9-d985d9b340f2"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb0a96bc8-bf48-4fe3-bba1-f48b5e8ee21f"},{"ref":"EID409187ef-b304-4507-b12b-6bae32919255"},{"ref":"EIDc3054234-aa88-401a-8fe9-90c72a33d4a5"}]},"parent":{"ref":"EID6a36107c-0175-1000-d0a0-ba3cc49336e6"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:18:49Z","duration":24,"status":"FAILED"}},"parent":{"ref":"EID6a360bc3-0175-1000-a671-b123bcdf19bd"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:18:49Z","duration":98,"status":"FAILED"},{"id":"EID6a3610de-0175-1000-ef4c-4b4439ddc056","testStepResults":{"TestStepResult":{"id":"EID6a3610de-0175-1000-684f-707839a263f3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361165-0175-1000-f9e7-af52b4f8c595","parent":{"ref":"EID6a3610de-0175-1000-684f-707839a263f3"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a361165-0175-1000-ef84-71a08e97f52b","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a3610de-0175-1000-684f-707839a263f3"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:18:49Z","duration":58,"status":"FAILED"},{"id":"EID6a36119f-0175-1000-c279-4b8f3b7c32b3","parent":{"ref":"EID6a3610de-0175-1000-684f-707839a263f3"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID595aad06-7f8a-4bc3-9f9a-aea5df31e5b2"},{"ref":"EID500f8092-1da9-459e-8c30-5a694edccb81"},{"ref":"EIDcf47643d-04fc-48ec-8a3c-dc64744759d2"}]},"parent":{"ref":"EID6a3610de-0175-1000-ef4c-4b4439ddc056"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:18:49Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6a360bc3-0175-1000-a671-b123bcdf19bd"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:18:49Z","duration":193,"status":"FAILED"},{"id":"EID6a36119f-0175-1000-83e2-722cb248b2d8","testStepResults":{"TestStepResult":{"id":"EID6a36119f-0175-1000-dba6-7674a44b0e1d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361221-0175-1000-8b06-4ce26ad7f624","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a36119f-0175-1000-dba6-7674a44b0e1d"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:18:49Z","duration":14,"status":"FAILED"},{"id":"EID6a361230-0175-1000-4c68-3cdc0161fe98","parent":{"ref":"EID6a36119f-0175-1000-dba6-7674a44b0e1d"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a361230-0175-1000-f13a-3878530763ba","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a36119f-0175-1000-dba6-7674a44b0e1d"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"FAILED"},{"id":"EID6a361230-0175-1000-6861-a46c1735cea9","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6a36119f-0175-1000-dba6-7674a44b0e1d"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID017ccb31-0220-4401-8e61-8d75a61d6cc6"},{"ref":"EID75213b47-2454-4373-b1c4-a37d11b752d8"},{"ref":"EIDd21363a7-47ac-4979-972d-51b41d765857"}]},"parent":{"ref":"EID6a36119f-0175-1000-83e2-722cb248b2d8"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:18:49Z","duration":32,"status":"FAILED"}},"parent":{"ref":"EID6a360bc3-0175-1000-a671-b123bcdf19bd"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:18:49Z","duration":159,"status":"FAILED"},{"id":"EID6a36123e-0175-1000-beef-9124169cb7d1","testStepResults":{"TestStepResult":{"id":"EID6a36123e-0175-1000-8833-21506dec4236","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3612a1-0175-1000-a913-27722889ce69","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a36123e-0175-1000-8833-21506dec4236"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:18:50Z","duration":84,"status":"FAILED"},{"id":"EID6a3612f5-0175-1000-26a3-3329819a226d","parent":{"ref":"EID6a36123e-0175-1000-8833-21506dec4236"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3612f5-0175-1000-0857-2856be566bd5","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a36123e-0175-1000-8833-21506dec4236"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"FAILED"},{"id":"EID6a3612f5-0175-1000-487f-5d4703fba3e4","parent":{"ref":"EID6a36123e-0175-1000-8833-21506dec4236"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcac9223d-1df3-4436-90ce-a30a059726b6"},{"ref":"EID67b70c83-eeff-4f98-b17d-be189a6b309e"},{"ref":"EIDb6137b57-ea3e-4764-b22b-33096f70886a"}]},"parent":{"ref":"EID6a36123e-0175-1000-beef-9124169cb7d1"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:18:49Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6a360bc3-0175-1000-a671-b123bcdf19bd"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:18:49Z","duration":183,"status":"FAILED"},{"id":"EID6a3612f5-0175-1000-e1aa-f285963f8978","testStepResults":{"TestStepResult":[{"id":"EID6a3612f5-0175-1000-b397-ee12f1ca8b00","parent":{"ref":"EID6a3612f5-0175-1000-e1aa-f285963f8978"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3612f5-0175-1000-a4ca-6d020a782ad3","parent":{"ref":"EID6a3612f5-0175-1000-e1aa-f285963f8978"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:18:50Z","duration":181,"status":"PASSED"},{"id":"EID6a3612f5-0175-1000-386c-49ceb227b29b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3613e7-0175-1000-b253-b2f3e033febe","parent":{"ref":"EID6a3612f5-0175-1000-386c-49ceb227b29b"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3613e7-0175-1000-0944-ac7fb5c3d8e1","parent":{"ref":"EID6a3612f5-0175-1000-386c-49ceb227b29b"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3613e7-0175-1000-626b-28be4ce450f5","parent":{"ref":"EID6a3612f5-0175-1000-386c-49ceb227b29b"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3613e7-0175-1000-d3d1-972a5fcdd67a","parent":{"ref":"EID6a3612f5-0175-1000-386c-49ceb227b29b"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDeb7b8584-e734-48e0-9a29-c561f429abd0"},{"ref":"EID39a87670-01d7-43e4-9095-c713498dbe69"},{"ref":"EID276354bf-5f89-4b95-8b52-4b6303b14618"}]},"parent":{"ref":"EID6a3612f5-0175-1000-e1aa-f285963f8978"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:18:50Z","duration":101,"status":"PASSED"},{"id":"EID6a36141d-0175-1000-44e3-4e4ecb940fd6","attachments":{"attachment":{"ref":"EID35dff911-3d4f-46d2-9082-6ddea205fe79"}},"parent":{"ref":"EID6a3612f5-0175-1000-e1aa-f285963f8978"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:18:50Z","duration":3,"status":"PASSED"},{"id":"EID6a361443-0175-1000-8f38-5c3e1a6aa3ed","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3614a8-0175-1000-5d5e-e2b787d7ea68","parent":{"ref":"EID6a361443-0175-1000-8f38-5c3e1a6aa3ed"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3614a8-0175-1000-e2f7-7f4fa5ddd143","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a361443-0175-1000-8f38-5c3e1a6aa3ed"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:18:50Z","duration":10,"status":"FAILED"},{"id":"EID6a3614b2-0175-1000-b639-2cfe9793ca9f","parent":{"ref":"EID6a361443-0175-1000-8f38-5c3e1a6aa3ed"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3614b2-0175-1000-da84-dc0c2acf53ea","parent":{"ref":"EID6a361443-0175-1000-8f38-5c3e1a6aa3ed"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3614b2-0175-1000-6569-7e32b9272fdd","parent":{"ref":"EID6a361443-0175-1000-8f38-5c3e1a6aa3ed"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3614b2-0175-1000-a132-c869b785cedc","parent":{"ref":"EID6a361443-0175-1000-8f38-5c3e1a6aa3ed"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3614b2-0175-1000-f454-40c054a62dbc","parent":{"ref":"EID6a361443-0175-1000-8f38-5c3e1a6aa3ed"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6f42bda8-a049-40c8-a987-2c26f0b55869"},{"ref":"EID25d14011-c5c2-45d6-b41b-c41dcffa4555"},{"ref":"EID2706ed9b-c27a-4425-a140-666c01261559"}]},"parent":{"ref":"EID6a3612f5-0175-1000-e1aa-f285963f8978"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:18:50Z","duration":25,"status":"FAILED"}]},"parent":{"ref":"EID6a360bc3-0175-1000-a671-b123bcdf19bd"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:18:50Z","duration":445,"status":"FAILED"},{"id":"EID6a3614b2-0175-1000-1108-a62053bab900","testStepResults":{"TestStepResult":[{"id":"EID6a3614b2-0175-1000-87cd-29039cdd130a","parent":{"ref":"EID6a3614b2-0175-1000-1108-a62053bab900"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3614b2-0175-1000-790e-9758212005d0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36161a-0175-1000-7db3-5b20ac38fd14","parent":{"ref":"EID6a3614b2-0175-1000-790e-9758212005d0"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a36161a-0175-1000-9b53-4aa35605343b","parent":{"ref":"EID6a3614b2-0175-1000-790e-9758212005d0"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a36161a-0175-1000-e2c9-9a13aa8fdb27","parent":{"ref":"EID6a3614b2-0175-1000-790e-9758212005d0"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a36161a-0175-1000-2bee-122bae03e7cc","parent":{"ref":"EID6a3614b2-0175-1000-790e-9758212005d0"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID486ce770-bff5-4254-8549-450205e142c8"},{"ref":"EID74946b3a-35ac-451f-aa63-f18995aab522"},{"ref":"EIDcdc18924-9857-4aeb-afa1-9950888f9244"}]},"parent":{"ref":"EID6a3614b2-0175-1000-1108-a62053bab900"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:18:50Z","duration":142,"status":"PASSED"},{"id":"EID6a36161a-0175-1000-e2f9-d4067f66a653","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a36162a-0175-1000-a99d-0dcad461d2bd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36172e-0175-1000-7f77-a34d4719ca5c","parent":{"ref":"EID6a36162a-0175-1000-a99d-0dcad461d2bd"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a36172e-0175-1000-a040-aa9d8820d023","parent":{"ref":"EID6a36162a-0175-1000-a99d-0dcad461d2bd"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a36172e-0175-1000-3e00-7fd359e0b93e","parent":{"ref":"EID6a36162a-0175-1000-a99d-0dcad461d2bd"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd62ca2a0-920a-421d-b2a6-8bf37bb66865"},{"ref":"EID6456af39-fe39-4160-a035-984bcf51de6a"},{"ref":"EID59365b78-7d61-42b4-9ac0-2e19125d2cdc"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:18:50Z","duration":151,"status":"PASSED"},{"id":"EID6a361730-0175-1000-21bd-64e474cd8119","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3617f8-0175-1000-0a1a-6d9a05b2e49e","parent":{"ref":"EID6a361730-0175-1000-21bd-64e474cd8119"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a3617f8-0175-1000-b08c-4c1b23e3e44f","parent":{"ref":"EID6a361730-0175-1000-21bd-64e474cd8119"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a3617f8-0175-1000-a60f-d75e08bb066f","parent":{"ref":"EID6a361730-0175-1000-21bd-64e474cd8119"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDadf919b4-551e-46ee-ac1a-a91cd4131240"},{"ref":"EID51e77557-bce3-454b-97d0-6c49f2810b53"},{"ref":"EIDa73277f2-1eb6-4931-9b38-801467660df1"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:18:51Z","duration":155,"status":"PASSED"},{"id":"EID6a3617fa-0175-1000-caa7-5b0646331594","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36187d-0175-1000-5a32-2ed9020d7e1d","parent":{"ref":"EID6a3617fa-0175-1000-caa7-5b0646331594"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a36187d-0175-1000-a6e4-07b8a4a83000","parent":{"ref":"EID6a3617fa-0175-1000-caa7-5b0646331594"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a36187d-0175-1000-73fb-3d5ec513beda","parent":{"ref":"EID6a3617fa-0175-1000-caa7-5b0646331594"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3e298500-e816-40d9-ba55-a05a67fd0a0b"},{"ref":"EIDf13a81aa-97c8-4271-ac4b-3fd023e00636"},{"ref":"EID70fc4a10-93d1-48af-9163-7795c3b2a7dc"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:18:51Z","duration":42,"status":"PASSED"}]},"parent":{"ref":"EID6a3614b2-0175-1000-1108-a62053bab900"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:18:50Z","duration":612,"status":"PASSED"},{"id":"EID6a36187e-0175-1000-2fae-ba30007a700a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3618f3-0175-1000-7954-9fe268fcd172","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a36187e-0175-1000-2fae-ba30007a700a"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:18:51Z","duration":46,"status":"FAILED"},{"id":"EID6a361921-0175-1000-4e4f-d2ad781ce222","parent":{"ref":"EID6a36187e-0175-1000-2fae-ba30007a700a"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a361921-0175-1000-5112-80275f503568","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a36187e-0175-1000-2fae-ba30007a700a"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"FAILED"},{"id":"EID6a361921-0175-1000-4817-6058c04ba8c3","parent":{"ref":"EID6a36187e-0175-1000-2fae-ba30007a700a"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDddf24bf5-8b89-4bc0-80a4-76f2b0924caa"},{"ref":"EID70b94307-5099-48f7-af19-8c7c35fdda2e"},{"ref":"EIDf449f22a-9f62-4c56-81b8-8b882a4cea4d"}]},"parent":{"ref":"EID6a3614b2-0175-1000-1108-a62053bab900"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:18:51Z","duration":31,"status":"FAILED"}]},"parent":{"ref":"EID6a360bc3-0175-1000-a671-b123bcdf19bd"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:18:50Z","duration":1136,"status":"FAILED"},{"id":"EID6a361922-0175-1000-36e5-feff53bcfdab","testStepResults":{"TestStepResult":{"id":"EID6a361922-0175-1000-3d1d-28d4de68ae49","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361a08-0175-1000-374a-f78ec6115905","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a361922-0175-1000-3d1d-28d4de68ae49"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:18:51Z","duration":11,"status":"FAILED"},{"id":"EID6a361a13-0175-1000-c42d-0e223552851d","parent":{"ref":"EID6a361922-0175-1000-3d1d-28d4de68ae49"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a361a13-0175-1000-b470-a08f7724f298","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a361922-0175-1000-3d1d-28d4de68ae49"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"FAILED"},{"id":"EID6a361a13-0175-1000-13af-2d53e1bf325a","parent":{"ref":"EID6a361922-0175-1000-3d1d-28d4de68ae49"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID875f5d92-b78d-4016-a6b9-cd7aedc02126"},{"ref":"EIDefd6309c-d847-4faa-b7c8-77ab70860654"},{"ref":"EIDb8c15274-f91c-4045-aa07-a39dc2503dd8"}]},"parent":{"ref":"EID6a361922-0175-1000-36e5-feff53bcfdab"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:18:51Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6a360bc3-0175-1000-a671-b123bcdf19bd"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:18:51Z","duration":241,"status":"FAILED"}]},"parent":{"ref":"EID32f37227-248b-4bc1-be72-ad8c5f32a259"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:18:48Z","duration":3664,"status":"FAILED"},{"id":"EID6a361a13-0175-1000-5221-2c1d23807723","testCaseResults":{"TestCaseResult":[{"id":"EID6a361a13-0175-1000-cf66-b4839da67eb4","testStepResults":{"TestStepResult":{"id":"EID6a361a13-0175-1000-98e3-10cd96a1aa82","parent":{"ref":"EID6a361a13-0175-1000-cf66-b4839da67eb4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:18:51Z","duration":561,"status":"SKIPPED"}},"parent":{"ref":"EID6a361a13-0175-1000-5221-2c1d23807723"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"SKIPPED"},{"id":"EID6a361a14-0175-1000-b573-a40a3185f195","testStepResults":{"TestStepResult":{"id":"EID6a361a14-0175-1000-00bd-5006452cd17b","parent":{"ref":"EID6a361a14-0175-1000-b573-a40a3185f195"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:18:51Z","duration":561,"status":"SKIPPED"}},"parent":{"ref":"EID6a361a13-0175-1000-5221-2c1d23807723"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"SKIPPED"},{"id":"EID6a361a14-0175-1000-2312-eeec1a46da88","testStepResults":{"TestStepResult":{"id":"EID6a361a14-0175-1000-a0c9-4d892a2473b7","parent":{"ref":"EID6a361a14-0175-1000-2312-eeec1a46da88"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:18:51Z","duration":561,"status":"SKIPPED"}},"parent":{"ref":"EID6a361a13-0175-1000-5221-2c1d23807723"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"SKIPPED"},{"id":"EID6a361a14-0175-1000-b15b-ae9004310cda","testStepResults":{"TestStepResult":{"id":"EID6a361a14-0175-1000-d052-0c515d4cba0d","parent":{"ref":"EID6a361a14-0175-1000-b15b-ae9004310cda"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:18:51Z","duration":561,"status":"SKIPPED"}},"parent":{"ref":"EID6a361a13-0175-1000-5221-2c1d23807723"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"SKIPPED"},{"id":"EID6a361a14-0175-1000-62ef-5db884db317e","testStepResults":{"TestStepResult":{"id":"EID6a361a14-0175-1000-71e9-e4a0bf6fed06","parent":{"ref":"EID6a361a14-0175-1000-62ef-5db884db317e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:18:51Z","duration":561,"status":"SKIPPED"}},"parent":{"ref":"EID6a361a13-0175-1000-5221-2c1d23807723"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"SKIPPED"},{"id":"EID6a361a14-0175-1000-a07e-4eafb1b3d331","testStepResults":{"TestStepResult":{"id":"EID6a361a14-0175-1000-95dd-0759f08dd79d","parent":{"ref":"EID6a361a14-0175-1000-a07e-4eafb1b3d331"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:18:51Z","duration":561,"status":"SKIPPED"}},"parent":{"ref":"EID6a361a13-0175-1000-5221-2c1d23807723"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"SKIPPED"},{"id":"EID6a361a14-0175-1000-a260-d0c0cccc88de","testStepResults":{"TestStepResult":{"id":"EID6a361a14-0175-1000-60f8-628c54581246","parent":{"ref":"EID6a361a14-0175-1000-a260-d0c0cccc88de"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:18:51Z","duration":603,"status":"SKIPPED"}},"parent":{"ref":"EID6a361a13-0175-1000-5221-2c1d23807723"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:18:51Z","duration":42,"status":"SKIPPED"}]},"parent":{"ref":"EID32f37227-248b-4bc1-be72-ad8c5f32a259"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:18:51Z","duration":43,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"ServiceEndpoint","id":"EID875f5d92-b78d-4016-a6b9-cd7aedc02126","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDf7e3a4fc-69b1-4eff-99a4-8578b907721f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID3cd74a7a-48d2-4a37-b223-bb35faf70cd4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID5fe4cbed-3935-4438-9590-2a16267493ca","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID5fe4cbed-3935-4438-9590-2a16267493ca"}},{"type":"Message","id":"EID75cdfb79-36e6-4e77-a3a4-1a6542db1de2","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID75cdfb79-36e6-4e77-a3a4-1a6542db1de2"}},{"type":"ServiceResponse","id":"EID399e50bf-3f17-4497-a842-30c4523343e0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID399e50bf-3f17-4497-a842-30c4523343e0"}},{"type":"ServiceResponse","id":"EID25d14011-c5c2-45d6-b41b-c41dcffa4555","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID25d14011-c5c2-45d6-b41b-c41dcffa4555"}},{"type":"GetParameter","id":"EID00b87769-392b-4ffc-b127-e480d429fc0b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDa4150cdd-f40b-4889-a2a6-48bb848f4c19","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDa4150cdd-f40b-4889-a2a6-48bb848f4c19"}},{"type":"ServiceResponse","id":"EID7d36d79a-4994-4560-aacb-80100e30b763","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID7d36d79a-4994-4560-aacb-80100e30b763"}},{"type":"GetParameter","id":"EID70bfca94-212c-4066-9f56-aed576a31644","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDd21363a7-47ac-4979-972d-51b41d765857","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EIDac28b4e2-9442-43d1-8277-8997f85c7368","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDac28b4e2-9442-43d1-8277-8997f85c7368"}},{"type":"GetParameter","id":"EID30401e85-f708-4cf1-a110-72afaaf8844b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDa3026f8b-61b8-4451-9ed2-38cb74d4de24","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDa3026f8b-61b8-4451-9ed2-38cb74d4de24"}},{"type":"ServiceEndpoint","id":"EIDe506d9a2-881b-46a8-9fb7-faa9b426af88","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EIDe64728af-25d0-4df4-b112-a689dede3878","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDe64728af-25d0-4df4-b112-a689dede3878"}},{"type":"GetParameter","id":"EID59365b78-7d61-42b4-9ac0-2e19125d2cdc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EID47b1d7e2-b735-4947-9867-e1830b614b21","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID47b1d7e2-b735-4947-9867-e1830b614b21"}},{"type":"ServiceResponse","id":"EIDe34a16ad-d875-43d2-b6c2-450639c668b7","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDe34a16ad-d875-43d2-b6c2-450639c668b7"}},{"type":"GetParameter","id":"EIDc4962722-6319-4191-ac71-0aa19c864ec6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDd33a85c8-7659-4e09-b1c6-1ec3f810b1f9","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDd33a85c8-7659-4e09-b1c6-1ec3f810b1f9"}},{"type":"ServiceEndpoint","id":"EID017ccb31-0220-4401-8e61-8d75a61d6cc6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID1d9fd39e-fa0c-4cc5-bafd-69ba72a1e7a4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID1d9fd39e-fa0c-4cc5-bafd-69ba72a1e7a4"}},{"type":"Message","id":"EIDfba39f43-072b-4e8e-af27-2680d283407f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDfba39f43-072b-4e8e-af27-2680d283407f"}},{"type":"ServiceResponse","id":"EID53c999a7-e873-4eac-b2d0-0bae4e5ac0bb","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID53c999a7-e873-4eac-b2d0-0bae4e5ac0bb"}},{"type":"ServiceResponse","id":"EID67b70c83-eeff-4f98-b17d-be189a6b309e","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID67b70c83-eeff-4f98-b17d-be189a6b309e"}},{"type":"ServiceResponse","id":"EIDc939f1fc-25a9-4b05-ba8a-2d98aad43405","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDc939f1fc-25a9-4b05-ba8a-2d98aad43405"}},{"type":"GetParameter","id":"EID107a10d9-72fb-4e1a-bdd0-fc1efada65ee","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID213c200f-a289-4bb4-bdb8-496b0fb1c82a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID29da623a-9ea7-47aa-b2c5-42b33b8ce85b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDc1e1e821-0adc-45c9-952b-6237e5223611","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDc1e1e821-0adc-45c9-952b-6237e5223611"}},{"type":"ServiceEndpoint","id":"EIDddf24bf5-8b89-4bc0-80a4-76f2b0924caa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EIDfd06bb26-7911-4d19-bda5-4d038c25155d","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDfd06bb26-7911-4d19-bda5-4d038c25155d"}},{"type":"GetParameter","id":"EIDa73277f2-1eb6-4931-9b38-801467660df1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EID4c1fd6e0-bad0-4b92-9220-f407418471a8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDcd557e34-6728-43e2-896f-9f0d4199c17f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID70b94307-5099-48f7-af19-8c7c35fdda2e","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID70b94307-5099-48f7-af19-8c7c35fdda2e"}},{"type":"ServiceEndpoint","id":"EIDf142a7d6-22bc-4b3f-af43-477abc85ccf2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDadf919b4-551e-46ee-ac1a-a91cd4131240","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EID39e76db7-14c3-40d4-a38e-b090228ed54f","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID39e76db7-14c3-40d4-a38e-b090228ed54f"}},{"type":"ServiceEndpoint","id":"EID8266a003-84d9-4d38-b406-2ae3315f6293","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDbdddd861-5f9c-4462-a462-89ab33db3537","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID010d523b-2aa4-438c-af31-52d8cb75f168","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID010d523b-2aa4-438c-af31-52d8cb75f168"}},{"type":"Message","id":"EIDc0c20a00-ad55-4fc2-b463-7ab9e8e7c68b","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDc0c20a00-ad55-4fc2-b463-7ab9e8e7c68b"}},{"type":"Error","id":"EID424178a6-2a9a-4167-9ec4-02846028c001","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID424178a6-2a9a-4167-9ec4-02846028c001"}},{"type":"ServiceResponse","id":"EID1f454342-8586-4914-b392-13ce006b2965","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID1f454342-8586-4914-b392-13ce006b2965"}},{"type":"Error","id":"EID53fa0229-4b08-498e-abae-371b017ef2cb","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID53fa0229-4b08-498e-abae-371b017ef2cb"}},{"type":"GetParameter","id":"EID213659db-5ad1-4733-997c-91c7add21e24","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID300b02e3-92a1-4b69-82cc-2a5beee13f36","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID8a8302bf-07ea-4f12-9fc1-f0c411170fb1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID2df549d3-9299-40ba-8666-84644a4ccb84","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDf8a596ff-0f2d-4864-aefc-c99a8180ec46","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID595aad06-7f8a-4bc3-9f9a-aea5df31e5b2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDa85595cd-c8f4-4ac8-ab04-48c087d39771","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDa85595cd-c8f4-4ac8-ab04-48c087d39771"}},{"type":"ServiceResponse","id":"EIDbcb71023-04d3-493c-b790-96a3d174c390","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDbcb71023-04d3-493c-b790-96a3d174c390"}},{"type":"Error","id":"EID55a37de6-707c-4a2b-a76e-2cea5fbf97d3","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID55a37de6-707c-4a2b-a76e-2cea5fbf97d3"}},{"type":"Message","id":"EID130b409a-494c-4767-ab1c-22d26f0502fa","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID130b409a-494c-4767-ab1c-22d26f0502fa"}},{"type":"ServiceResponse","id":"EIDe4b22a54-65fd-4c43-8e52-b5e343c5b62a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDe4b22a54-65fd-4c43-8e52-b5e343c5b62a"}},{"type":"ServiceResponse","id":"EIDbcd7f304-ddc8-4374-bcab-694b017e502c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDbcd7f304-ddc8-4374-bcab-694b017e502c"}},{"type":"ServiceEndpoint","id":"EID4740060e-7fc2-4041-a8b8-327d5505b0ea","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDefb98bc3-ea45-4ae4-8868-fced3442156b","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDefb98bc3-ea45-4ae4-8868-fced3442156b"}},{"type":"ServiceResponse","id":"EID4a13c0df-6c0e-4a18-b8fe-111529831ccc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID4a13c0df-6c0e-4a18-b8fe-111529831ccc"}},{"type":"ServiceResponse","id":"EID1f46e562-86e0-42fb-b291-51d754b1749e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID1f46e562-86e0-42fb-b291-51d754b1749e"}},{"type":"Message","id":"EID978a9219-d33e-437a-9a9b-2d98a72ecd9e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID978a9219-d33e-437a-9a9b-2d98a72ecd9e"}},{"type":"GetParameter","id":"EIDd1d6e79b-ea7d-4c9a-822c-3793baff2486","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDbfdad827-2e06-4dff-a7d4-6623ad25222c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDbfdad827-2e06-4dff-a7d4-6623ad25222c"}},{"type":"Message","id":"EID6f912451-f392-4c82-95c8-11f8dd48ab3b","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID6f912451-f392-4c82-95c8-11f8dd48ab3b"}},{"type":"ServiceResponse","id":"EID0d7663fd-37ab-4503-87a9-4403abf01584","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID0d7663fd-37ab-4503-87a9-4403abf01584"}},{"type":"ServiceEndpoint","id":"EIDf3d1fdcf-9620-466d-af33-3eed92f35c9e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID409187ef-b304-4507-b12b-6bae32919255","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID409187ef-b304-4507-b12b-6bae32919255"}},{"type":"ServiceEndpoint","id":"EIDd62ca2a0-920a-421d-b2a6-8bf37bb66865","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EID5c19bd81-53a4-4864-a2c6-68ff9cf0f948","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID219438f7-edb3-4cfa-8657-99ab6abbbb5e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDb4472655-9c5a-42f1-a627-88106fefb06b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDb4472655-9c5a-42f1-a627-88106fefb06b"}},{"type":"ServiceEndpoint","id":"EIDe06df9dd-0e49-4b4f-922f-7ba03fb83802","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"LogFile","id":"EIDace53292-e5db-4d4e-a5d0-c50cf7ff261c","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDace53292-e5db-4d4e-a5d0-c50cf7ff261c"}},{"type":"GetParameter","id":"EID048e25d1-adb3-4fad-80a3-8142dc3f5cc4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDa0fec34a-2887-43df-bcc3-678a39f7aa2f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDa0fec34a-2887-43df-bcc3-678a39f7aa2f"}},{"type":"GetParameter","id":"EID504f993d-8784-4245-855f-3c58a88a7ce0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID52eca7a9-0391-475b-9379-16dd19206a5b","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID52eca7a9-0391-475b-9379-16dd19206a5b"}},{"type":"GetParameter","id":"EID544b81c6-d9ae-44e2-9c57-f5d7e1a51f44","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDd3c42431-a2fa-411e-994a-96055c2f6816","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDd3c42431-a2fa-411e-994a-96055c2f6816"}},{"type":"ServiceResponse","id":"EID75213b47-2454-4373-b1c4-a37d11b752d8","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID75213b47-2454-4373-b1c4-a37d11b752d8"}},{"type":"ServiceResponse","id":"EIDee9c9e7d-743a-4fab-ba9b-316b107678c4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDee9c9e7d-743a-4fab-ba9b-316b107678c4"}},{"type":"ServiceResponse","id":"EID500f8092-1da9-459e-8c30-5a694edccb81","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID500f8092-1da9-459e-8c30-5a694edccb81"}},{"type":"Message","id":"EID48d2c2bf-cd13-41b8-8796-34d59ab014da","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID48d2c2bf-cd13-41b8-8796-34d59ab014da"}},{"type":"ServiceResponse","id":"EID6456af39-fe39-4160-a035-984bcf51de6a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID6456af39-fe39-4160-a035-984bcf51de6a"}},{"type":"ServiceEndpoint","id":"EIDdad7a07c-2d3c-4303-bc25-b354cf26c880","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID327758f8-8b29-425b-9698-fcf88d026f47","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID327758f8-8b29-425b-9698-fcf88d026f47"}},{"type":"ServiceResponse","id":"EID87cb13d2-628e-44db-abcd-9dcbcb569249","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID87cb13d2-628e-44db-abcd-9dcbcb569249"}},{"type":"ServiceResponse","id":"EIDf13a81aa-97c8-4271-ac4b-3fd023e00636","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDf13a81aa-97c8-4271-ac4b-3fd023e00636"}},{"type":"GetParameter","id":"EID6516452c-ecc1-4729-a323-754de4d16e18","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDcac9223d-1df3-4436-90ce-a30a059726b6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID7e6385c0-652a-48fd-886c-32ce4a618582","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID7e6385c0-652a-48fd-886c-32ce4a618582"}},{"type":"ServiceResponse","id":"EIDcdc58505-22d8-4191-9c24-3a3cb5ed98e3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDcdc58505-22d8-4191-9c24-3a3cb5ed98e3"}},{"type":"GetParameter","id":"EIDcf47643d-04fc-48ec-8a3c-dc64744759d2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID486ce770-bff5-4254-8549-450205e142c8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EID82b5291a-8948-47c8-afa7-eb182b85c577","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID82b5291a-8948-47c8-afa7-eb182b85c577"}},{"type":"GetParameter","id":"EID6cc47296-a0ca-492c-89dd-3fcdd065ddd4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID70cd5aac-e00a-42fd-8644-b08c0949b5c1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID66ccd191-778f-45c4-9127-13b119985ed1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID15367409-746a-4d7f-b2b2-8b52e6594ee1","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID15367409-746a-4d7f-b2b2-8b52e6594ee1"}},{"type":"GetParameter","id":"EIDfe9af7ec-e332-4137-bc1c-1384ace88dca","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDf30e58c0-b574-45cc-96cc-7f7ef5ac48b5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDf30e58c0-b574-45cc-96cc-7f7ef5ac48b5"}},{"type":"Error","id":"EID73c782af-e6ec-485b-ad09-814a8cdb4fa3","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID73c782af-e6ec-485b-ad09-814a8cdb4fa3"}},{"type":"GetParameter","id":"EID70fc4a10-93d1-48af-9163-7795c3b2a7dc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EID510ae890-2295-4ca8-9572-b9e9a59665f8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDeb43d60a-2e0f-4a97-8ab8-30d62d1248c1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDb954b6a6-3de0-4100-a86d-279cc7ff208c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDb6137b57-ea3e-4764-b22b-33096f70886a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID39a87670-01d7-43e4-9095-c713498dbe69","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID39a87670-01d7-43e4-9095-c713498dbe69"}},{"type":"ServiceEndpoint","id":"EIDb0a96bc8-bf48-4fe3-bba1-f48b5e8ee21f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID2706ed9b-c27a-4425-a140-666c01261559","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EID87acc2c6-0d65-4ed8-9782-4e9023c55878","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID87acc2c6-0d65-4ed8-9782-4e9023c55878"}},{"type":"ServiceResponse","id":"EID74946b3a-35ac-451f-aa63-f18995aab522","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID74946b3a-35ac-451f-aa63-f18995aab522"}},{"type":"ServiceResponse","id":"EID5482cac1-aad3-4d3b-b877-4ff7c612553a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID5482cac1-aad3-4d3b-b877-4ff7c612553a"}},{"type":"GetParameter","id":"EID276354bf-5f89-4b95-8b52-4b6303b14618","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDeb7b8584-e734-48e0-9a29-c561f429abd0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID281c5ed5-a495-4183-8c5a-140ccc5c05d8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID700f564e-4468-46b7-bdf2-29119edf1994","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDb4809a7a-7003-45de-994a-3c5035e90c47","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDcdc18924-9857-4aeb-afa1-9950888f9244","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EID8d538ff5-be3d-45cc-8d77-e6b53e128e95","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID4b47c98e-646c-490b-a8d6-e806544120ab","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID6f42bda8-a049-40c8-a987-2c26f0b55869","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDf449f22a-9f62-4c56-81b8-8b882a4cea4d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID35dff911-3d4f-46d2-9082-6ddea205fe79","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID35dff911-3d4f-46d2-9082-6ddea205fe79"}},{"type":"ServiceResponse","id":"EID621e7ecb-efe9-4800-9f85-d769a278445e","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID621e7ecb-efe9-4800-9f85-d769a278445e"}},{"type":"ServiceEndpoint","id":"EID7385a138-af13-4d23-9f3b-1f30d4cab180","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDf4660924-3ad7-4d39-817b-5cd9b2f2f43a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID2acf247d-7965-4fd8-aff0-d9f560394e04","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID2acf247d-7965-4fd8-aff0-d9f560394e04"}},{"type":"ServiceEndpoint","id":"EIDac02231c-a584-4df7-9ef5-cfa92ed01d28","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"Message","id":"EIDbc56285e-caa5-4476-8a3c-750c954888ba","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDbc56285e-caa5-4476-8a3c-750c954888ba"}},{"type":"GetParameter","id":"EIDc3054234-aa88-401a-8fe9-90c72a33d4a5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDb8c15274-f91c-4045-aa07-a39dc2503dd8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDcd6f1de9-90c2-49c9-b830-ccd770e707a1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDf32dadbe-3924-4e3b-b1fd-3340732e1a31","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDf32dadbe-3924-4e3b-b1fd-3340732e1a31"}},{"type":"Message","id":"EID99622573-f919-4ad8-86e4-1cc4b0b183fd","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID99622573-f919-4ad8-86e4-1cc4b0b183fd"}},{"type":"GetParameter","id":"EIDcd68090d-4fa6-4137-8b96-f34fb4953e68","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID2f10fa41-57e6-4076-8b2c-a8f7bb33455b","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID2f10fa41-57e6-4076-8b2c-a8f7bb33455b"}},{"type":"ServiceEndpoint","id":"EID9207b1bc-fc1b-443e-bc0b-9fbb852a9d52","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID666700f0-5b6f-411f-9b7e-7afdbfca53ba","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID666700f0-5b6f-411f-9b7e-7afdbfca53ba"}},{"type":"ServiceEndpoint","id":"EIDf571bffe-1541-427a-bde8-0cd16044929a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDb27e2eb9-1db7-4a96-8dd6-bdad6b7c7761","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EID3450783c-1687-4726-8710-a049b5fe1d3f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID3450783c-1687-4726-8710-a049b5fe1d3f"}},{"type":"ServiceResponse","id":"EIDefd6309c-d847-4faa-b7c8-77ab70860654","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDefd6309c-d847-4faa-b7c8-77ab70860654"}},{"type":"ServiceResponse","id":"EID21796a48-fbea-49cb-9e90-5f012d6b182b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID21796a48-fbea-49cb-9e90-5f012d6b182b"}},{"type":"ServiceEndpoint","id":"EIDdea4f72d-529e-4b23-ade9-2702bf458edc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID3e298500-e816-40d9-ba55-a05a67fd0a0b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EID5890c9fd-10e4-4dd6-b8fa-09b749e245c1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDc769ec98-6aaa-48a6-a55f-a288b271e4df","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDc769ec98-6aaa-48a6-a55f-a288b271e4df"}},{"type":"ServiceResponse","id":"EID51e77557-bce3-454b-97d0-6c49f2810b53","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID51e77557-bce3-454b-97d0-6c49f2810b53"}},{"type":"ServiceResponse","id":"EID972ef67d-22e5-4776-9ebe-7374945f224c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID972ef67d-22e5-4776-9ebe-7374945f224c"}},{"type":"Error","id":"EIDedd61a8b-c28e-4aaa-a70d-a552ba120f38","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDedd61a8b-c28e-4aaa-a70d-a552ba120f38"}},{"type":"Error","id":"EID2bc4726a-2766-44d3-bebe-7f7f926047d8","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID2bc4726a-2766-44d3-bebe-7f7f926047d8"}},{"type":"Message","id":"EID0bb27ebd-3ea2-4f7c-9eed-87be6dfb07c8","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID0bb27ebd-3ea2-4f7c-9eed-87be6dfb07c8"}},{"type":"Error","id":"EIDafc4e876-172c-4b8f-b22c-6d17a1560d39","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDafc4e876-172c-4b8f-b22c-6d17a1560d39"}},{"type":"GetParameter","id":"EIDf4e55e9d-f671-4279-8078-aa820c4e0211","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDf23bd819-e9b0-428b-a6df-120754da6308","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EIDf23bd819-e9b0-428b-a6df-120754da6308"}},{"type":"ServiceResponse","id":"EID0740c2b6-5895-461f-ba49-096eea0a0ec2","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID32f37227-248b-4bc1-be72-ad8c5f32a259/Attachments/EID0740c2b6-5895-461f-ba49-096eea0a0ec2"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:18:38Z","duration":13347,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:19:07.058 [print] EID4ecd119e-f512-482b-a5d1-5ed3d7cf376c
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:19:07.058 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:19:07.058 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:19:07.058 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:19:07.058 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/4ecd119e-f512-482b-a5d1-5ed3d7cf376c.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:19:07.058 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/4ecd119e-f512-482b-a5d1-5ed3d7cf376c.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:19:07.058 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID4ecd119e-f512-482b-a5d1-5ed3d7cf376c/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.005
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.003
* def a = embedUrl ("../../" + jsonPath , status ) 0.001
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.002
13:19:07.073 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.002
13:19:07.076 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
13:19:07.076 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.003
2.654
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.005
13:10:26.952 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/tn-ro/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.648
13:10:26.954 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 279
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/tn-ro/wfs?request=GetCapabilities"}}}

13:10:29.600 response time in milliseconds: 2541.19
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:10:29 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804229423","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:10:29.602 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1.793
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:21:34.198 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2017/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.793
13:21:34.201 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2017/wfs?request=GetCapabilities"}}}

13:21:35.991 response time in milliseconds: 1687.31
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:21:35 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804895816","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:21:35.992 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1:5.061
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:16:56.569 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 9.707
13:16:56.570 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

13:17:06.271 response time in milliseconds: 8953.18
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:17:05 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:17:03 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/171b62d4-e569-4119-b0d4-784ccdbc45d3.json","testRuns":{"TestRun":{"id":"EID171b62d4-e569-4119-b0d4-784ccdbc45d3","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:17:02.318Z","testTasks":{"TestTask":{"id":"EID03357570-797a-46d4-bad4-e3a394da4b0f","parent":{"ref":"EID171b62d4-e569-4119-b0d4-784ccdbc45d3"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDf5aeb82a-1f6e-48e4-bd80-33aec7d23b06"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID171b62d4-e569-4119-b0d4-784ccdbc45d3/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDf5aeb82a-1f6e-48e4-bd80-33aec7d23b06","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:16:57.006Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:17:00.362Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.004
13:17:06.281 [print] EID171b62d4-e569-4119-b0d4-784ccdbc45d3
* print response.EtfItemCollection.testRuns.TestRun.status 0.001
13:17:06.283 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:17:06.283 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:17:06.284 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/171b62d4-e569-4119-b0d4-784ccdbc45d3.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:17:06.284 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID171b62d4-e569-4119-b0d4-784ccdbc45d3/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:17:06.285 [print] statuspath TestRuns/EID171b62d4-e569-4119-b0d4-784ccdbc45d3
* print 'progresspath ', progresspath 0.000
13:17:06.286 [print] progresspath  TestRuns/EID171b62d4-e569-4119-b0d4-784ccdbc45d3/progress
Given path progresspath 0.000
When method GET 0.528
13:17:06.288 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID171b62d4-e569-4119-b0d4-784ccdbc45d3/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:06.814 response time in milliseconds: 525.38
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:17:06 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:17:02 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:17:02 UTC 2020)","27.10.2020 13:17:02 - Resolving Executable Test Suite dependencies","27.10.2020 13:17:02 - Preparing 1 Test Task:","27.10.2020 13:17:02 -  TestTask 1 (03357570-797a-46d4-bad4-e3a394da4b0f)","27.10.2020 13:17:02 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:17:02 -  with parameters: ","27.10.2020 13:17:02 - etf.testcases = *","27.10.2020 13:17:02 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:17:02 - Setting state to CREATED","27.10.2020 13:17:02 - Changed state from CREATED to INITIALIZING"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:17:06.814 [print] {
  "val": "0",
  "max": "240",
  "log": [
    "27.10.2020 13:17:02 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:17:02 UTC 2020)",
    "27.10.2020 13:17:02 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:17:02 - Preparing 1 Test Task:",
    "27.10.2020 13:17:02 -  TestTask 1 (03357570-797a-46d4-bad4-e3a394da4b0f)",
    "27.10.2020 13:17:02 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:17:02 -  with parameters: ",
    "27.10.2020 13:17:02 - etf.testcases = *",
    "27.10.2020 13:17:02 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:17:02 - Setting state to CREATED",
    "27.10.2020 13:17:02 - Changed state from CREATED to INITIALIZING"
  ]
}
Given path progresspath 0.000
When method GET 50.359
13:17:06.815 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID171b62d4-e569-4119-b0d4-784ccdbc45d3/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:07.344 response time in milliseconds: 528.23
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:17:07 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:17:02 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:17:02 UTC 2020)","27.10.2020 13:17:02 - Resolving Executable Test Suite dependencies","27.10.2020 13:17:02 - Preparing 1 Test Task:","27.10.2020 13:17:02 -  TestTask 1 (03357570-797a-46d4-bad4-e3a394da4b0f)","27.10.2020 13:17:02 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:17:02 -  with parameters: ","27.10.2020 13:17:02 - etf.testcases = *","27.10.2020 13:17:02 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:17:02 - Setting state to CREATED","27.10.2020 13:17:02 - Changed state from CREATED to INITIALIZING"]}

13:17:07.344 retry condition not satisfied: response.val == response.max
13:17:07.344 sleeping before retry #1
13:17:12.345 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID171b62d4-e569-4119-b0d4-784ccdbc45d3/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:12.854 response time in milliseconds: 508.79
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:17:12 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:17:02 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:17:02 UTC 2020)","27.10.2020 13:17:02 - Resolving Executable Test Suite dependencies","27.10.2020 13:17:02 - Preparing 1 Test Task:","27.10.2020 13:17:02 -  TestTask 1 (03357570-797a-46d4-bad4-e3a394da4b0f)","27.10.2020 13:17:02 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:17:02 -  with parameters: ","27.10.2020 13:17:02 - etf.testcases = *","27.10.2020 13:17:02 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:17:02 - Setting state to CREATED","27.10.2020 13:17:02 - Changed state from CREATED to INITIALIZING"]}

13:17:12.855 retry condition not satisfied: response.val == response.max
13:17:12.855 sleeping before retry #2
13:17:17.856 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID171b62d4-e569-4119-b0d4-784ccdbc45d3/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:18.463 response time in milliseconds: 606.86
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:17:18 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"7","max":"8","log":["27.10.2020 13:17:02 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:17:02 UTC 2020)","27.10.2020 13:17:02 - Resolving Executable Test Suite dependencies","27.10.2020 13:17:02 - Preparing 1 Test Task:","27.10.2020 13:17:02 -  TestTask 1 (03357570-797a-46d4-bad4-e3a394da4b0f)","27.10.2020 13:17:02 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:17:02 -  with parameters: ","27.10.2020 13:17:02 - etf.testcases = *","27.10.2020 13:17:02 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:17:02 - Setting state to CREATED","27.10.2020 13:17:02 - Changed state from CREATED to INITIALIZING","27.10.2020 13:17:16 - Starting TestRun.171b62d4-e569-4119-b0d4-784ccdbc45d3 at 2020-10-27T13:17:17Z","27.10.2020 13:17:17 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:17 - Project Properties: ","27.10.2020 13:17:17 - etf.testcases - * ","27.10.2020 13:17:17 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:17:17 - username -  ","27.10.2020 13:17:17 - authUser -  ","27.10.2020 13:17:17 - authMethod - basic ","27.10.2020 13:17:17 - TestRunTask initialized"]}

13:17:18.463 retry condition not satisfied: response.val == response.max
13:17:18.463 sleeping before retry #3
13:17:23.464 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID171b62d4-e569-4119-b0d4-784ccdbc45d3/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:24.039 response time in milliseconds: 574.43
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:17:23 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"53","max":"54","log":["27.10.2020 13:17:02 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:17:02 UTC 2020)","27.10.2020 13:17:02 - Resolving Executable Test Suite dependencies","27.10.2020 13:17:02 - Preparing 1 Test Task:","27.10.2020 13:17:02 -  TestTask 1 (03357570-797a-46d4-bad4-e3a394da4b0f)","27.10.2020 13:17:02 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:17:02 -  with parameters: ","27.10.2020 13:17:02 - etf.testcases = *","27.10.2020 13:17:02 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:17:02 - Setting state to CREATED","27.10.2020 13:17:02 - Changed state from CREATED to INITIALIZING","27.10.2020 13:17:16 - Starting TestRun.171b62d4-e569-4119-b0d4-784ccdbc45d3 at 2020-10-27T13:17:17Z","27.10.2020 13:17:17 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:17 - Project Properties: ","27.10.2020 13:17:17 - etf.testcases - * ","27.10.2020 13:17:17 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:17:17 - username -  ","27.10.2020 13:17:17 - authUser -  ","27.10.2020 13:17:17 - authMethod - basic ","27.10.2020 13:17:17 - TestRunTask initialized","27.10.2020 13:17:21 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:17:21 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:17:23 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027"]}

13:17:24.039 retry condition not satisfied: response.val == response.max
13:17:24.040 sleeping before retry #4
13:17:29.040 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID171b62d4-e569-4119-b0d4-784ccdbc45d3/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:29.555 response time in milliseconds: 513.82
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:17:29 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"144","max":"145","log":["27.10.2020 13:17:02 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:17:02 UTC 2020)","27.10.2020 13:17:02 - Resolving Executable Test Suite dependencies","27.10.2020 13:17:02 - Preparing 1 Test Task:","27.10.2020 13:17:02 -  TestTask 1 (03357570-797a-46d4-bad4-e3a394da4b0f)","27.10.2020 13:17:02 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:17:02 -  with parameters: ","27.10.2020 13:17:02 - etf.testcases = *","27.10.2020 13:17:02 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:17:02 - Setting state to CREATED","27.10.2020 13:17:02 - Changed state from CREATED to INITIALIZING","27.10.2020 13:17:16 - Starting TestRun.171b62d4-e569-4119-b0d4-784ccdbc45d3 at 2020-10-27T13:17:17Z","27.10.2020 13:17:17 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:17 - Project Properties: ","27.10.2020 13:17:17 - etf.testcases - * ","27.10.2020 13:17:17 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:17:17 - username -  ","27.10.2020 13:17:17 - authUser -  ","27.10.2020 13:17:17 - authMethod - basic ","27.10.2020 13:17:17 - TestRunTask initialized","27.10.2020 13:17:21 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:17:21 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:17:23 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:17:25 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:17:27 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:27 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:27 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:27 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:17:27 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:17:27 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:27 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:17:28 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:29 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:29 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:17:29.555 retry condition not satisfied: response.val == response.max
13:17:29.555 sleeping before retry #5
13:17:34.556 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID171b62d4-e569-4119-b0d4-784ccdbc45d3/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:35.076 response time in milliseconds: 519.71
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:17:35 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["27.10.2020 13:17:02 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:17:02 UTC 2020)","27.10.2020 13:17:02 - Resolving Executable Test Suite dependencies","27.10.2020 13:17:02 - Preparing 1 Test Task:","27.10.2020 13:17:02 -  TestTask 1 (03357570-797a-46d4-bad4-e3a394da4b0f)","27.10.2020 13:17:02 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:17:02 -  with parameters: ","27.10.2020 13:17:02 - etf.testcases = *","27.10.2020 13:17:02 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:17:02 - Setting state to CREATED","27.10.2020 13:17:02 - Changed state from CREATED to INITIALIZING","27.10.2020 13:17:16 - Starting TestRun.171b62d4-e569-4119-b0d4-784ccdbc45d3 at 2020-10-27T13:17:17Z","27.10.2020 13:17:17 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:17 - Project Properties: ","27.10.2020 13:17:17 - etf.testcases - * ","27.10.2020 13:17:17 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:17:17 - username -  ","27.10.2020 13:17:17 - authUser -  ","27.10.2020 13:17:17 - authMethod - basic ","27.10.2020 13:17:17 - TestRunTask initialized","27.10.2020 13:17:21 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:17:21 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:17:23 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:17:25 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:17:27 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:27 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:27 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:27 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:17:27 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:17:27 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:27 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:17:28 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:29 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:29 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:17:29 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:29 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:17:35.087 retry condition not satisfied: response.val == response.max
13:17:35.087 sleeping before retry #6
13:17:40.088 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID171b62d4-e569-4119-b0d4-784ccdbc45d3/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:40.598 response time in milliseconds: 509.35
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:17:40 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["27.10.2020 13:17:02 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:17:02 UTC 2020)","27.10.2020 13:17:02 - Resolving Executable Test Suite dependencies","27.10.2020 13:17:02 - Preparing 1 Test Task:","27.10.2020 13:17:02 -  TestTask 1 (03357570-797a-46d4-bad4-e3a394da4b0f)","27.10.2020 13:17:02 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:17:02 -  with parameters: ","27.10.2020 13:17:02 - etf.testcases = *","27.10.2020 13:17:02 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:17:02 - Setting state to CREATED","27.10.2020 13:17:02 - Changed state from CREATED to INITIALIZING","27.10.2020 13:17:16 - Starting TestRun.171b62d4-e569-4119-b0d4-784ccdbc45d3 at 2020-10-27T13:17:17Z","27.10.2020 13:17:17 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:17 - Project Properties: ","27.10.2020 13:17:17 - etf.testcases - * ","27.10.2020 13:17:17 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:17:17 - username -  ","27.10.2020 13:17:17 - authUser -  ","27.10.2020 13:17:17 - authMethod - basic ","27.10.2020 13:17:17 - TestRunTask initialized","27.10.2020 13:17:21 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:17:21 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:17:23 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:17:25 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:17:27 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:27 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:27 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:27 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:17:27 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:17:27 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:27 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:17:28 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:29 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:29 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:17:29 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:29 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:17:40.598 retry condition not satisfied: response.val == response.max
13:17:40.598 sleeping before retry #7
13:17:45.599 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID171b62d4-e569-4119-b0d4-784ccdbc45d3/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:46.111 response time in milliseconds: 511.43
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Tue, 27 Oct 2020 13:17:46 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["27.10.2020 13:17:02 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:17:02 UTC 2020)","27.10.2020 13:17:02 - Resolving Executable Test Suite dependencies","27.10.2020 13:17:02 - Preparing 1 Test Task:","27.10.2020 13:17:02 -  TestTask 1 (03357570-797a-46d4-bad4-e3a394da4b0f)","27.10.2020 13:17:02 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:17:02 -  with parameters: ","27.10.2020 13:17:02 - etf.testcases = *","27.10.2020 13:17:02 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:17:02 - Setting state to CREATED","27.10.2020 13:17:02 - Changed state from CREATED to INITIALIZING","27.10.2020 13:17:16 - Starting TestRun.171b62d4-e569-4119-b0d4-784ccdbc45d3 at 2020-10-27T13:17:17Z","27.10.2020 13:17:17 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:17 - Project Properties: ","27.10.2020 13:17:17 - etf.testcases - * ","27.10.2020 13:17:17 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:17:17 - username -  ","27.10.2020 13:17:17 - authUser -  ","27.10.2020 13:17:17 - authMethod - basic ","27.10.2020 13:17:17 - TestRunTask initialized","27.10.2020 13:17:21 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:17:21 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:17:23 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:17:25 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:17:27 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:27 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:27 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:27 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:17:27 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:17:27 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:27 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:17:28 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:29 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:29 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:17:29 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:29 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:17:46.111 retry condition not satisfied: response.val == response.max
13:17:46.112 sleeping before retry #8
13:17:51.112 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID171b62d4-e569-4119-b0d4-784ccdbc45d3/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:51.631 response time in milliseconds: 515.14
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Tue, 27 Oct 2020 13:17:51 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["27.10.2020 13:17:02 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:17:02 UTC 2020)","27.10.2020 13:17:02 - Resolving Executable Test Suite dependencies","27.10.2020 13:17:02 - Preparing 1 Test Task:","27.10.2020 13:17:02 -  TestTask 1 (03357570-797a-46d4-bad4-e3a394da4b0f)","27.10.2020 13:17:02 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:17:02 -  with parameters: ","27.10.2020 13:17:02 - etf.testcases = *","27.10.2020 13:17:02 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:17:02 - Setting state to CREATED","27.10.2020 13:17:02 - Changed state from CREATED to INITIALIZING","27.10.2020 13:17:16 - Starting TestRun.171b62d4-e569-4119-b0d4-784ccdbc45d3 at 2020-10-27T13:17:17Z","27.10.2020 13:17:17 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:17 - Project Properties: ","27.10.2020 13:17:17 - etf.testcases - * ","27.10.2020 13:17:17 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:17:17 - username -  ","27.10.2020 13:17:17 - authUser -  ","27.10.2020 13:17:17 - authMethod - basic ","27.10.2020 13:17:17 - TestRunTask initialized","27.10.2020 13:17:21 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:17:21 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:17:23 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:17:25 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:26 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:26 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:17:27 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:27 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:27 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:27 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:17:27 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:17:27 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:27 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:17:28 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:29 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:29 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:17:29 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:29 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:17:51.634 retry condition not satisfied: response.val == response.max
13:17:51.635 sleeping before retry #9
13:17:56.635 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID171b62d4-e569-4119-b0d4-784ccdbc45d3/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:57.173 response time in milliseconds: 536.87
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Tue, 27 Oct 2020 13:17:57 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"100","max":"100","log":["Already completed"]}

13:17:57.173 retry condition satisfied
* print response 0.000
13:17:57.174 [print] {
  "val": "100",
  "max": "100",
  "log": [
    "Already completed"
  ]
}
Given path statuspath 0.000
When method GET 4.434
13:17:57.175 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID171b62d4-e569-4119-b0d4-784ccdbc45d3
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:01.605 response time in milliseconds: 3466.39
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Cache-Control: public, max-age=120
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Tue, 27 Oct 2020 13:18:00 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Last-Modified: Tue, 27 Oct 2020 13:17:53 GMT
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/171b62d4-e569-4119-b0d4-784ccdbc45d3.json","testRuns":{"TestRun":{"id":"EID171b62d4-e569-4119-b0d4-784ccdbc45d3","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:17:02.318Z","testTasks":{"TestTask":{"id":"EID03357570-797a-46d4-bad4-e3a394da4b0f","parent":{"ref":"EID171b62d4-e569-4119-b0d4-784ccdbc45d3"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDf5aeb82a-1f6e-48e4-bd80-33aec7d23b06"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID943c9e86-1b2e-48a0-9efc-786e31b893cd"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID171b62d4-e569-4119-b0d4-784ccdbc45d3/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDf5aeb82a-1f6e-48e4-bd80-33aec7d23b06","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:16:57.006Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:17:00.362Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID943c9e86-1b2e-48a0-9efc-786e31b893cd","testObject":{"ref":"EIDf5aeb82a-1f6e-48e4-bd80-33aec7d23b06"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a34a9ca-0175-1000-d1cc-32116f23d8d2","testCaseResults":{"TestCaseResult":[{"id":"EID6a34a9ca-0175-1000-f5f1-84fbb95ebb7e","testStepResults":{"TestStepResult":[{"id":"EID6a34a9ca-0175-1000-66d0-9922b77d0fc6","parent":{"ref":"EID6a34a9ca-0175-1000-f5f1-84fbb95ebb7e"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:17:17Z","duration":14,"status":"PASSED"},{"id":"EID6a34a9d9-0175-1000-d7e9-7ea1aa290dcf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34aaee-0175-1000-b05d-cdaa43705d29","parent":{"ref":"EID6a34a9d9-0175-1000-d7e9-7ea1aa290dcf"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:17:17Z","duration":0,"status":"PASSED"},{"id":"EID6a34aaee-0175-1000-ecca-630c7def1a9f","parent":{"ref":"EID6a34a9d9-0175-1000-d7e9-7ea1aa290dcf"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:17:17Z","duration":0,"status":"PASSED"},{"id":"EID6a34aaee-0175-1000-80ce-d66e8a5b27c4","parent":{"ref":"EID6a34a9d9-0175-1000-d7e9-7ea1aa290dcf"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:17:17Z","duration":0,"status":"PASSED"},{"id":"EID6a34aaee-0175-1000-9977-5770db4f6e4e","parent":{"ref":"EID6a34a9d9-0175-1000-d7e9-7ea1aa290dcf"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:17:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3a022f6e-9eff-4234-8f7e-843adf60042b"},{"ref":"EID005f58bc-35d4-410f-b40e-bf0399838145"},{"ref":"EID1ea33ddc-ea25-40a4-889c-d72309be2022"}]},"parent":{"ref":"EID6a34a9ca-0175-1000-f5f1-84fbb95ebb7e"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:17:17Z","duration":78,"status":"PASSED"}]},"parent":{"ref":"EID6a34a9ca-0175-1000-d1cc-32116f23d8d2"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:17:17Z","duration":292,"status":"PASSED"},{"id":"EID6a34aaee-0175-1000-bce7-870ba9b8248d","testStepResults":{"TestStepResult":{"id":"EID6a34aaee-0175-1000-22e7-a4ef69335575","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34ac5f-0175-1000-27ed-94acf1254617","parent":{"ref":"EID6a34aaee-0175-1000-22e7-a4ef69335575"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:17:18Z","duration":0,"status":"PASSED"},{"id":"EID6a34ac5f-0175-1000-f8bf-e4f1d4189b7f","parent":{"ref":"EID6a34aaee-0175-1000-22e7-a4ef69335575"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:17:18Z","duration":0,"status":"PASSED"},{"id":"EID6a34ac5f-0175-1000-edb7-b31a7694af4b","parent":{"ref":"EID6a34aaee-0175-1000-22e7-a4ef69335575"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:17:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID43b5f5a5-bdc2-45b0-9a78-341937f2bdbc"},{"ref":"EID695bca83-8b07-4481-b223-0e95390ed52b"},{"ref":"EIDc12bb11d-7ce4-47c6-8595-aab78346fb34"}]},"parent":{"ref":"EID6a34aaee-0175-1000-bce7-870ba9b8248d"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:17:17Z","duration":133,"status":"PASSED"}},"parent":{"ref":"EID6a34a9ca-0175-1000-d1cc-32116f23d8d2"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:17:17Z","duration":454,"status":"PASSED"}]},"parent":{"ref":"EID943c9e86-1b2e-48a0-9efc-786e31b893cd"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:17:17Z","duration":746,"status":"PASSED"},{"id":"EID6a34acb4-0175-1000-9e27-0fdc13201e7e","testCaseResults":{"TestCaseResult":[{"id":"EID6a34acb5-0175-1000-4222-fdf47a8d9d58","testStepResults":{"TestStepResult":[{"id":"EID6a34acb5-0175-1000-f08b-51e25b514c3b","parent":{"ref":"EID6a34acb5-0175-1000-4222-fdf47a8d9d58"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:17:18Z","duration":133,"status":"PASSED"},{"id":"EID6a34acb5-0175-1000-3d9f-323dc93d7ce7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34ada6-0175-1000-78e4-ca341defdc8f","parent":{"ref":"EID6a34acb5-0175-1000-3d9f-323dc93d7ce7"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:17:18Z","duration":0,"status":"PASSED"},{"id":"EID6a34ada6-0175-1000-ca86-7c1f54689e93","parent":{"ref":"EID6a34acb5-0175-1000-3d9f-323dc93d7ce7"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:17:18Z","duration":0,"status":"PASSED"},{"id":"EID6a34ada6-0175-1000-2c42-985fcec25cf0","parent":{"ref":"EID6a34acb5-0175-1000-3d9f-323dc93d7ce7"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:17:18Z","duration":0,"status":"PASSED"},{"id":"EID6a34ada6-0175-1000-76fd-dce4af4d3e98","parent":{"ref":"EID6a34acb5-0175-1000-3d9f-323dc93d7ce7"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:17:18Z","duration":0,"status":"PASSED"},{"id":"EID6a34ada6-0175-1000-5650-dbf805fd614e","parent":{"ref":"EID6a34acb5-0175-1000-3d9f-323dc93d7ce7"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:17:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9e41de08-27ee-4328-a2ce-93bae427ddaa"},{"ref":"EIDc2701796-d75f-4398-9f56-c80423b2e12f"},{"ref":"EID1fa3cc32-17ad-4adb-89a0-5d28cf005d98"}]},"parent":{"ref":"EID6a34acb5-0175-1000-4222-fdf47a8d9d58"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:17:18Z","duration":66,"status":"PASSED"}]},"parent":{"ref":"EID6a34acb4-0175-1000-9e27-0fdc13201e7e"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:17:18Z","duration":241,"status":"PASSED"},{"id":"EID6a34ada6-0175-1000-0f67-6d4c8782d3c9","testStepResults":{"TestStepResult":[{"id":"EID6a34ada6-0175-1000-124c-8a70f8706e1f","attachments":{"attachment":[{"ref":"EID269e0455-83e4-4029-bc49-4fecf4fadab0"},{"ref":"EID1fc59dd1-30d9-4a7d-ad1a-c42e9a5dfbf6"}]},"parent":{"ref":"EID6a34ada6-0175-1000-0f67-6d4c8782d3c9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:17:18Z","duration":161,"status":"PASSED"},{"id":"EID6a34aec3-0175-1000-4640-0000880ad9c7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34af75-0175-1000-8ec4-3f4da4ceefb8","parent":{"ref":"EID6a34aec3-0175-1000-4640-0000880ad9c7"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:17:19Z","duration":0,"status":"PASSED"},{"id":"EID6a34af75-0175-1000-63d5-e86095678a6f","parent":{"ref":"EID6a34aec3-0175-1000-4640-0000880ad9c7"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:17:19Z","duration":0,"status":"PASSED"},{"id":"EID6a34af75-0175-1000-9cd3-6a7d77c0d2df","parent":{"ref":"EID6a34aec3-0175-1000-4640-0000880ad9c7"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:17:19Z","duration":0,"status":"PASSED"},{"id":"EID6a34af75-0175-1000-0ade-e98505e03a94","parent":{"ref":"EID6a34aec3-0175-1000-4640-0000880ad9c7"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:17:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6f84c229-92f3-467e-8896-c94e31b2607f"},{"ref":"EID8cdd4128-46b4-477a-9bbd-7b45cd5c931d"},{"ref":"EID74046f49-734f-4133-a0d4-cf7b961d8762"}]},"parent":{"ref":"EID6a34ada6-0175-1000-0f67-6d4c8782d3c9"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:17:18Z","duration":39,"status":"PASSED"}]},"parent":{"ref":"EID6a34acb4-0175-1000-9e27-0fdc13201e7e"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:17:18Z","duration":463,"status":"PASSED"},{"id":"EID6a34af75-0175-1000-9e77-81005f0b929d","testStepResults":{"TestStepResult":[{"id":"EID6a34af75-0175-1000-dacf-918257624dee","attachments":{"attachment":[{"ref":"EID1f0236f5-7cf6-48f6-b006-153ec5d23e7c"},{"ref":"EIDce5ef135-b83e-4943-8198-2af8ffd4f39e"}]},"parent":{"ref":"EID6a34af75-0175-1000-9e77-81005f0b929d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:17:19Z","duration":161,"status":"PASSED"},{"id":"EID6a34b08a-0175-1000-8f75-13cf37ddcf57","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34b1c6-0175-1000-ee36-84ed17e8f651","parent":{"ref":"EID6a34b08a-0175-1000-8f75-13cf37ddcf57"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:17:19Z","duration":0,"status":"PASSED"},{"id":"EID6a34b1c6-0175-1000-8b3c-f0fc7254c31f","parent":{"ref":"EID6a34b08a-0175-1000-8f75-13cf37ddcf57"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:17:19Z","duration":0,"status":"PASSED"},{"id":"EID6a34b1c6-0175-1000-7682-7e9cdd453221","parent":{"ref":"EID6a34b08a-0175-1000-8f75-13cf37ddcf57"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:17:19Z","duration":0,"status":"PASSED"},{"id":"EID6a34b1c6-0175-1000-269f-b3187df42747","parent":{"ref":"EID6a34b08a-0175-1000-8f75-13cf37ddcf57"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:17:19Z","duration":0,"status":"PASSED"},{"id":"EID6a34b1c6-0175-1000-9fc2-07b298c2be04","parent":{"ref":"EID6a34b08a-0175-1000-8f75-13cf37ddcf57"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:17:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1f62eb2e-e4a3-49c0-bedc-3b88eeefd8bb"},{"ref":"EIDfc21f895-c053-4407-8f5c-d0f412041c2f"},{"ref":"EID75cce2c9-d508-4113-8422-76cc9cbce953"}]},"parent":{"ref":"EID6a34af75-0175-1000-9e77-81005f0b929d"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:17:19Z","duration":93,"status":"PASSED"}]},"parent":{"ref":"EID6a34acb4-0175-1000-9e27-0fdc13201e7e"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:17:19Z","duration":593,"status":"PASSED"},{"id":"EID6a34b1c7-0175-1000-2820-62d4bd3e5f37","testStepResults":{"TestStepResult":[{"id":"EID6a34b1c7-0175-1000-5258-2bdd91bdedda","attachments":{"attachment":[{"ref":"EID6b626367-30a5-444b-bbb1-635636e37c73"},{"ref":"EID00cde301-5349-4e64-8c7b-8664973a03d2"}]},"parent":{"ref":"EID6a34b1c7-0175-1000-2820-62d4bd3e5f37"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:17:19Z","duration":211,"status":"PASSED"},{"id":"EID6a34b2c5-0175-1000-739d-0eec1323fc80","parent":{"ref":"EID6a34b1c7-0175-1000-2820-62d4bd3e5f37"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:17:19Z","duration":0,"status":"PASSED"},{"id":"EID6a34b2d6-0175-1000-b691-addb5b09a0e9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34b42a-0175-1000-580e-7e3fa8def030","parent":{"ref":"EID6a34b2d6-0175-1000-b691-addb5b09a0e9"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:17:20Z","duration":0,"status":"PASSED"},{"id":"EID6a34b42a-0175-1000-b2ba-803b1943c55c","parent":{"ref":"EID6a34b2d6-0175-1000-b691-addb5b09a0e9"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:17:20Z","duration":0,"status":"PASSED"},{"id":"EID6a34b42a-0175-1000-368e-6042ef3efd67","parent":{"ref":"EID6a34b2d6-0175-1000-b691-addb5b09a0e9"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:17:20Z","duration":0,"status":"PASSED"},{"id":"EID6a34b42a-0175-1000-200b-86680f2a1eee","parent":{"ref":"EID6a34b2d6-0175-1000-b691-addb5b09a0e9"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:17:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5d3ec880-2160-43e5-95c9-6af77e3fdc33"},{"ref":"EID92738c97-3508-4a2b-b79d-d9259ce18ba7"},{"ref":"EID4bfdfd75-1bb6-4765-a910-b306cffcb034"}]},"parent":{"ref":"EID6a34b1c7-0175-1000-2820-62d4bd3e5f37"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:17:19Z","duration":126,"status":"PASSED"},{"id":"EID6a34b42a-0175-1000-b2e5-9f9790b2412a","attachments":{"attachment":{"ref":"EID94cf36e1-3cd6-4c24-83d9-4a5a6feaa548"}},"parent":{"ref":"EID6a34b1c7-0175-1000-2820-62d4bd3e5f37"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:17:20Z","duration":1,"status":"PASSED"},{"id":"EID6a34b439-0175-1000-91c4-e1e937e844e2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34b5bc-0175-1000-2dda-baf992ade376","parent":{"ref":"EID6a34b439-0175-1000-91c4-e1e937e844e2"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:17:20Z","duration":0,"status":"PASSED"},{"id":"EID6a34b5bc-0175-1000-3449-4fe389730b36","parent":{"ref":"EID6a34b439-0175-1000-91c4-e1e937e844e2"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:17:20Z","duration":0,"status":"PASSED"},{"id":"EID6a34b5bc-0175-1000-3a92-485b22c84598","parent":{"ref":"EID6a34b439-0175-1000-91c4-e1e937e844e2"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:17:20Z","duration":0,"status":"PASSED"},{"id":"EID6a34b5bc-0175-1000-3453-5ae38994cb17","parent":{"ref":"EID6a34b439-0175-1000-91c4-e1e937e844e2"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:17:20Z","duration":0,"status":"PASSED"},{"id":"EID6a34b5bc-0175-1000-80d2-064fef1741bb","parent":{"ref":"EID6a34b439-0175-1000-91c4-e1e937e844e2"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:17:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4979e323-d9f7-4655-b9e7-3ae160e4be2e"},{"ref":"EIDd2898c0c-e916-49b8-a05f-7e7a1a3882fa"},{"ref":"EIDcac6c23f-e875-4714-b15a-537843d037a8"}]},"parent":{"ref":"EID6a34b1c7-0175-1000-2820-62d4bd3e5f37"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:17:20Z","duration":37,"status":"PASSED"}]},"parent":{"ref":"EID6a34acb4-0175-1000-9e27-0fdc13201e7e"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:17:19Z","duration":1013,"status":"PASSED"},{"id":"EID6a34b5bc-0175-1000-00a5-64dc22913e97","testStepResults":{"TestStepResult":[{"id":"EID6a34b5bc-0175-1000-2019-1faab77a4fc2","attachments":{"attachment":[{"ref":"EID03dd9294-dab8-491c-add6-e56ff9dcb357"},{"ref":"EIDe709955a-5581-40ae-97b9-f78531eb2891"}]},"parent":{"ref":"EID6a34b5bc-0175-1000-00a5-64dc22913e97"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:17:20Z","duration":166,"status":"PASSED"},{"id":"EID6a34b694-0175-1000-8f21-cd6bff7ee39d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34b75f-0175-1000-2186-856957a1a358","parent":{"ref":"EID6a34b694-0175-1000-8f21-cd6bff7ee39d"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:17:21Z","duration":0,"status":"PASSED"},{"id":"EID6a34b75f-0175-1000-1948-b86247df1a1c","parent":{"ref":"EID6a34b694-0175-1000-8f21-cd6bff7ee39d"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:17:21Z","duration":0,"status":"PASSED"},{"id":"EID6a34b760-0175-1000-f2b0-82cd8d209744","parent":{"ref":"EID6a34b694-0175-1000-8f21-cd6bff7ee39d"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:17:21Z","duration":0,"status":"PASSED"},{"id":"EID6a34b760-0175-1000-c7ed-3881e4dd7186","parent":{"ref":"EID6a34b694-0175-1000-8f21-cd6bff7ee39d"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:17:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc66af85d-0bfb-4d4e-a723-038c571cc456"},{"ref":"EID02661a90-d02a-4c0c-b0bf-b0d1e3a2828e"},{"ref":"EID7d877d66-d137-45e5-9176-44887808189a"}]},"parent":{"ref":"EID6a34b5bc-0175-1000-00a5-64dc22913e97"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:17:20Z","duration":88,"status":"PASSED"}]},"parent":{"ref":"EID6a34acb4-0175-1000-9e27-0fdc13201e7e"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:17:20Z","duration":431,"status":"PASSED"},{"id":"EID6a34b76b-0175-1000-c01e-efce72eafa01","testStepResults":{"TestStepResult":[{"id":"EID6a34b76b-0175-1000-cacb-e289d431d983","attachments":{"attachment":[{"ref":"EID809ea7a9-e8bc-409e-844d-0cd780e65209"},{"ref":"EID0b1a93c7-d02a-4bf5-ae92-c423cb83c31a"}]},"parent":{"ref":"EID6a34b76b-0175-1000-c01e-efce72eafa01"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:17:21Z","duration":202,"status":"PASSED"},{"id":"EID6a34b87c-0175-1000-f54b-a5af29820f8d","parent":{"ref":"EID6a34b76b-0175-1000-c01e-efce72eafa01"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:17:21Z","duration":0,"status":"PASSED"},{"id":"EID6a34b8a0-0175-1000-eac9-0c6fa428a9de","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34b94f-0175-1000-3023-19ea920f5c81","parent":{"ref":"EID6a34b8a0-0175-1000-eac9-0c6fa428a9de"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:17:21Z","duration":0,"status":"PASSED"},{"id":"EID6a34b94f-0175-1000-d53d-3ced750eb5bf","parent":{"ref":"EID6a34b8a0-0175-1000-eac9-0c6fa428a9de"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:17:21Z","duration":0,"status":"PASSED"},{"id":"EID6a34b94f-0175-1000-c139-4359dff88e61","parent":{"ref":"EID6a34b8a0-0175-1000-eac9-0c6fa428a9de"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:17:21Z","duration":0,"status":"PASSED"},{"id":"EID6a34b94f-0175-1000-001a-8f3da56ede1f","parent":{"ref":"EID6a34b8a0-0175-1000-eac9-0c6fa428a9de"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:17:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID95211de4-c0b5-4471-90db-3e4b97a56055"},{"ref":"EID223226fa-f325-4a48-bf72-183bd533e18a"},{"ref":"EID4747a900-6f5f-4a95-8a5b-e62c0cd79596"}]},"parent":{"ref":"EID6a34b76b-0175-1000-c01e-efce72eafa01"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:17:21Z","duration":58,"status":"PASSED"},{"id":"EID6a34b94f-0175-1000-ee85-2d9021591535","attachments":{"attachment":{"ref":"EID44808b7e-1b81-4f3b-9a64-25f6763d3d63"}},"parent":{"ref":"EID6a34b76b-0175-1000-c01e-efce72eafa01"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:17:21Z","duration":2,"status":"PASSED"},{"id":"EID6a34b95c-0175-1000-f21e-0f293371d777","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34ba9e-0175-1000-ceb7-de82a0834258","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a34b95c-0175-1000-f21e-0f293371d777"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:17:21Z","duration":11,"status":"FAILED"},{"id":"EID6a34baa9-0175-1000-0bec-513d658816ba","parent":{"ref":"EID6a34b95c-0175-1000-f21e-0f293371d777"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:17:21Z","duration":0,"status":"PASSED"},{"id":"EID6a34baa9-0175-1000-cd69-72712074008f","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6a34b95c-0175-1000-f21e-0f293371d777"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:17:21Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID3171ccc3-e366-41fd-b9af-8ab1d95c6723"},{"ref":"EID65527812-1730-42db-9981-86d47befa844"},{"ref":"EID9b498290-22ef-4f7c-9234-62c73aa2da2d"}]},"parent":{"ref":"EID6a34b76b-0175-1000-c01e-efce72eafa01"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:17:21Z","duration":263,"status":"FAILED"}]},"parent":{"ref":"EID6a34acb4-0175-1000-9e27-0fdc13201e7e"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:17:21Z","duration":830,"status":"FAILED"},{"id":"EID6a34baa9-0175-1000-4728-cb5e32911986","testStepResults":{"TestStepResult":[{"id":"EID6a34baa9-0175-1000-f6a1-91ffc141795d","attachments":{"attachment":[{"ref":"EIDcc025047-cb67-4eb3-853b-d0f4d37fd510"},{"ref":"EIDfd7125a0-61c7-48f6-aa19-d880e48be805"}]},"parent":{"ref":"EID6a34baa9-0175-1000-4728-cb5e32911986"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:17:21Z","duration":184,"status":"PASSED"},{"id":"EID6a34bb97-0175-1000-238b-b18055327d95","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34bc98-0175-1000-a8ee-a6a5b13e3b94","parent":{"ref":"EID6a34bb97-0175-1000-238b-b18055327d95"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:17:22Z","duration":0,"status":"PASSED"},{"id":"EID6a34bc98-0175-1000-8ff2-5ab1da449b79","parent":{"ref":"EID6a34bb97-0175-1000-238b-b18055327d95"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:17:22Z","duration":0,"status":"PASSED"},{"id":"EID6a34bc98-0175-1000-8291-714b690fb72f","parent":{"ref":"EID6a34bb97-0175-1000-238b-b18055327d95"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:17:22Z","duration":0,"status":"PASSED"},{"id":"EID6a34bc98-0175-1000-b2a2-725e26619888","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a34bb97-0175-1000-238b-b18055327d95"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:17:22Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EIDb0812f57-4bd5-4850-a880-0b9edc732a64"},{"ref":"EIDa620d0d0-e920-4f55-bfc8-baffbfd0ff49"},{"ref":"EID39051ebb-c388-49b2-b5b7-7d84b02d0e6e"}]},"parent":{"ref":"EID6a34baa9-0175-1000-4728-cb5e32911986"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:17:22Z","duration":105,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a34acb4-0175-1000-9e27-0fdc13201e7e"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:17:21Z","duration":495,"status":"PASSED_MANUAL"},{"id":"EID6a34bc98-0175-1000-6e78-e72ad590225f","testStepResults":{"TestStepResult":{"id":"EID6a34bca9-0175-1000-38b8-79ceedff2414","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34be17-0175-1000-eb24-79009f411be3","parent":{"ref":"EID6a34bca9-0175-1000-38b8-79ceedff2414"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:17:22Z","duration":0,"status":"PASSED"},{"id":"EID6a34be17-0175-1000-3d3e-5df1ed4a53df","parent":{"ref":"EID6a34bca9-0175-1000-38b8-79ceedff2414"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:17:22Z","duration":0,"status":"PASSED"},{"id":"EID6a34be17-0175-1000-ae41-286165959e9c","parent":{"ref":"EID6a34bca9-0175-1000-38b8-79ceedff2414"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:17:22Z","duration":0,"status":"PASSED"},{"id":"EID6a34be17-0175-1000-dcef-255f848053cd","parent":{"ref":"EID6a34bca9-0175-1000-38b8-79ceedff2414"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:17:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbaaddbcc-7d7f-4503-a071-b7b377db2e94"},{"ref":"EIDecf0320a-964f-45b1-a1b3-a938698ec3ec"},{"ref":"EIDd7045272-b4b7-476a-b20c-8d011ceca42a"}]},"parent":{"ref":"EID6a34bc98-0175-1000-6e78-e72ad590225f"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:17:22Z","duration":101,"status":"PASSED"}},"parent":{"ref":"EID6a34acb4-0175-1000-9e27-0fdc13201e7e"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:17:22Z","duration":383,"status":"PASSED"},{"id":"EID6a34be17-0175-1000-f638-0f64c9af1a60","testStepResults":{"TestStepResult":{"id":"EID6a34be17-0175-1000-6878-fa9ae1f5dcdb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34bec4-0175-1000-652b-3e8c2192c60d","parent":{"ref":"EID6a34be17-0175-1000-6878-fa9ae1f5dcdb"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:17:23Z","duration":0,"status":"PASSED"},{"id":"EID6a34bec4-0175-1000-9c5f-16976faaa74f","parent":{"ref":"EID6a34be17-0175-1000-6878-fa9ae1f5dcdb"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:17:23Z","duration":0,"status":"PASSED"},{"id":"EID6a34bec4-0175-1000-8148-14dd8f997ee1","parent":{"ref":"EID6a34be17-0175-1000-6878-fa9ae1f5dcdb"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:17:23Z","duration":0,"status":"PASSED"},{"id":"EID6a34bec4-0175-1000-d7b1-4f7b9e654c31","parent":{"ref":"EID6a34be17-0175-1000-6878-fa9ae1f5dcdb"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:17:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID15bd39dc-b933-4fe6-8a67-14b7035d03cb"},{"ref":"EIDec107f18-87fa-4799-b32c-ad10eccc1b00"},{"ref":"EID5c70df78-f1f4-4e90-a44b-34bbfb70ec01"}]},"parent":{"ref":"EID6a34be17-0175-1000-f638-0f64c9af1a60"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:17:22Z","duration":50,"status":"PASSED"}},"parent":{"ref":"EID6a34acb4-0175-1000-9e27-0fdc13201e7e"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:17:22Z","duration":173,"status":"PASSED"},{"id":"EID6a34bec5-0175-1000-ab24-7651832dc909","testStepResults":{"TestStepResult":{"id":"EID6a34bec5-0175-1000-81e7-4faa672749f9","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EID73abf242-0abc-48d6-aa56-0f2da6cd71a9"},{"ref":"EIDddb6162a-0fbb-4b6b-a04c-4d7af2bd40ec"},{"ref":"EIDce669a96-1f20-4409-a846-a4a58d95cac2"},{"ref":"EID29a84c58-bdaa-4654-86ee-a61417410a17"},{"ref":"EID2fd279a9-10d6-4047-99c6-7265befa749d"},{"ref":"EIDe42ad76f-74e5-43d1-9866-0d6a5d078a44"},{"ref":"EIDa7e2a55a-cac5-424b-9a2e-6104f86deaba"},{"ref":"EIDb217275e-9a92-4826-b5f9-ae5a2db3fac3"},{"ref":"EIDb1f64a1d-a2c1-4fee-bdcf-c29c0ee0b62d"}]},"parent":{"ref":"EID6a34bec5-0175-1000-ab24-7651832dc909"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:17:23Z","duration":687,"status":"SKIPPED"}},"parent":{"ref":"EID6a34acb4-0175-1000-9e27-0fdc13201e7e"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:17:23Z","duration":885,"status":"SKIPPED"},{"id":"EID6a34c23a-0175-1000-e64e-8473ad10c577","testStepResults":{"TestStepResult":{"id":"EID6a34c23a-0175-1000-7889-b8fd6c902089","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34c317-0175-1000-788c-bd419b9830f8","parent":{"ref":"EID6a34c23a-0175-1000-7889-b8fd6c902089"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:17:24Z","duration":0,"status":"PASSED"},{"id":"EID6a34c317-0175-1000-c733-b85133c1b85d","parent":{"ref":"EID6a34c23a-0175-1000-7889-b8fd6c902089"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:17:24Z","duration":0,"status":"PASSED"},{"id":"EID6a34c317-0175-1000-93c6-a4573fe4c085","parent":{"ref":"EID6a34c23a-0175-1000-7889-b8fd6c902089"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:17:24Z","duration":0,"status":"PASSED"},{"id":"EID6a34c317-0175-1000-2c1b-cd4796c78900","parent":{"ref":"EID6a34c23a-0175-1000-7889-b8fd6c902089"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:17:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID247844ca-d725-404e-ba32-ddfceb27f36f"},{"ref":"EID1d75b828-9633-4f23-8434-50573fd7293a"},{"ref":"EID139d07e8-befa-4b3d-988d-3e2fcaa5a008"}]},"parent":{"ref":"EID6a34c23a-0175-1000-e64e-8473ad10c577"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:17:23Z","duration":68,"status":"PASSED"}},"parent":{"ref":"EID6a34acb4-0175-1000-9e27-0fdc13201e7e"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:17:23Z","duration":221,"status":"PASSED"},{"id":"EID6a34c317-0175-1000-c36c-5a4add316ed8","testStepResults":{"TestStepResult":{"id":"EID6a34c321-0175-1000-18fa-ca4a2ca532c1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34c413-0175-1000-22b5-c6587c518f42","parent":{"ref":"EID6a34c321-0175-1000-18fa-ca4a2ca532c1"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:17:24Z","duration":0,"status":"PASSED"},{"id":"EID6a34c413-0175-1000-5814-50ccb4487fa6","parent":{"ref":"EID6a34c321-0175-1000-18fa-ca4a2ca532c1"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:17:24Z","duration":0,"status":"PASSED"},{"id":"EID6a34c413-0175-1000-cb78-3641287cb9bb","parent":{"ref":"EID6a34c321-0175-1000-18fa-ca4a2ca532c1"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:17:24Z","duration":0,"status":"PASSED"},{"id":"EID6a34c413-0175-1000-1f94-4dd592e5ffa1","parent":{"ref":"EID6a34c321-0175-1000-18fa-ca4a2ca532c1"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:17:24Z","duration":0,"status":"PASSED"},{"id":"EID6a34c413-0175-1000-efdb-986d84e4e43a","parent":{"ref":"EID6a34c321-0175-1000-18fa-ca4a2ca532c1"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:17:24Z","duration":0,"status":"PASSED"},{"id":"EID6a34c413-0175-1000-cea9-3abd9b06b401","parent":{"ref":"EID6a34c321-0175-1000-18fa-ca4a2ca532c1"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:17:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9c3e8c72-bcaa-429e-8290-74dbd26fea44"},{"ref":"EID4d9df526-8a8a-4bb5-af78-77d50d6a0790"},{"ref":"EID66b7b1c1-1e6d-48b5-b596-7bc844728ad4"}]},"parent":{"ref":"EID6a34c317-0175-1000-c36c-5a4add316ed8"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:17:24Z","duration":71,"status":"PASSED"}},"parent":{"ref":"EID6a34acb4-0175-1000-9e27-0fdc13201e7e"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:17:24Z","duration":252,"status":"PASSED"},{"id":"EID6a34c413-0175-1000-8a26-b45ad5843d47","testStepResults":{"TestStepResult":{"id":"EID6a34c414-0175-1000-77fb-2638bb007e2b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34c4e2-0175-1000-ff6c-053356559bcd","parent":{"ref":"EID6a34c414-0175-1000-77fb-2638bb007e2b"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:17:24Z","duration":0,"status":"PASSED"},{"id":"EID6a34c4e2-0175-1000-a89b-c993f6fa4589","parent":{"ref":"EID6a34c414-0175-1000-77fb-2638bb007e2b"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:17:24Z","duration":0,"status":"PASSED"},{"id":"EID6a34c4e2-0175-1000-e257-1ab6bc039834","parent":{"ref":"EID6a34c414-0175-1000-77fb-2638bb007e2b"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:17:24Z","duration":0,"status":"PASSED"},{"id":"EID6a34c4e2-0175-1000-f98c-2e3d7f3808c1","parent":{"ref":"EID6a34c414-0175-1000-77fb-2638bb007e2b"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:17:24Z","duration":0,"status":"PASSED"},{"id":"EID6a34c4e2-0175-1000-bcf4-a4655547a2af","parent":{"ref":"EID6a34c414-0175-1000-77fb-2638bb007e2b"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:17:24Z","duration":0,"status":"PASSED"},{"id":"EID6a34c4e2-0175-1000-20b8-a787867a4e2a","parent":{"ref":"EID6a34c414-0175-1000-77fb-2638bb007e2b"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:17:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID584a0e1a-a400-4cfa-be88-1ea03795675b"},{"ref":"EID27bc8592-5ae4-4efa-b8f3-fa95affac2d7"},{"ref":"EIDc4969185-adc4-4ec3-bc16-cdeda789225e"}]},"parent":{"ref":"EID6a34c413-0175-1000-8a26-b45ad5843d47"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:17:24Z","duration":44,"status":"PASSED"}},"parent":{"ref":"EID6a34acb4-0175-1000-9e27-0fdc13201e7e"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:17:24Z","duration":217,"status":"PASSED"},{"id":"EID6a34c4ec-0175-1000-594d-8ad56df3aad2","testStepResults":{"TestStepResult":{"id":"EID6a34c4ed-0175-1000-9d14-24af28ffa77b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34c5b6-0175-1000-fb4f-bb6511362c66","parent":{"ref":"EID6a34c4ed-0175-1000-9d14-24af28ffa77b"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:17:24Z","duration":0,"status":"PASSED"},{"id":"EID6a34c5b6-0175-1000-3c88-1f1aa26e3cc5","parent":{"ref":"EID6a34c4ed-0175-1000-9d14-24af28ffa77b"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:17:24Z","duration":0,"status":"PASSED"},{"id":"EID6a34c5b6-0175-1000-d905-8a17f151b580","parent":{"ref":"EID6a34c4ed-0175-1000-9d14-24af28ffa77b"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:17:24Z","duration":0,"status":"PASSED"},{"id":"EID6a34c5b6-0175-1000-99fe-a8e0dad692a2","parent":{"ref":"EID6a34c4ed-0175-1000-9d14-24af28ffa77b"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:17:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbd2ccac7-c6b9-4370-af65-07972b62c31e"},{"ref":"EID53a13034-afd8-437b-9a32-469c9c1f971d"},{"ref":"EIDf2fe9455-198d-4407-956c-0e9b1ea19e88"}]},"parent":{"ref":"EID6a34c4ec-0175-1000-594d-8ad56df3aad2"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:17:24Z","duration":43,"status":"PASSED"}},"parent":{"ref":"EID6a34acb4-0175-1000-9e27-0fdc13201e7e"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:17:24Z","duration":202,"status":"PASSED"},{"id":"EID6a34c5b6-0175-1000-72c6-cdbb3cfe39d0","testStepResults":{"TestStepResult":[{"id":"EID6a34c5b6-0175-1000-1220-5f8e085fffae","attachments":{"attachment":[{"ref":"EID9c193a60-2d4f-4b5d-a0d2-51c0febd48a9"},{"ref":"EID05539bf6-3582-4eff-a49f-e03127de930c"},{"ref":"EIDd4df6c06-a041-45e7-933a-dbb68906ae9f"},{"ref":"EID92065d3b-5b85-4f1f-a4d2-205b52166331"}]},"parent":{"ref":"EID6a34c5b6-0175-1000-72c6-cdbb3cfe39d0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:17:24Z","duration":329,"status":"PASSED"},{"id":"EID6a34c735-0175-1000-3a1d-1a49473bc736","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34c817-0175-1000-56b8-472687428536","parent":{"ref":"EID6a34c735-0175-1000-3a1d-1a49473bc736"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:17:25Z","duration":0,"status":"PASSED"},{"id":"EID6a34c817-0175-1000-ddc6-bd8fb2c36f9a","parent":{"ref":"EID6a34c735-0175-1000-3a1d-1a49473bc736"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:17:25Z","duration":0,"status":"PASSED"},{"id":"EID6a34c817-0175-1000-c74b-d16ad3b8ff2f","parent":{"ref":"EID6a34c735-0175-1000-3a1d-1a49473bc736"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:17:25Z","duration":0,"status":"PASSED"},{"id":"EID6a34c817-0175-1000-19da-6212f7bc7bfc","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6a34c735-0175-1000-3a1d-1a49473bc736"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:17:25Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDe700236e-2c03-474f-a783-d226b8bb5b03"},{"ref":"EID4946d805-a525-45f5-a6e4-a742d1b6ada1"},{"ref":"EIDabf31dac-1ff1-404e-b0cb-fad68822db53"}]},"parent":{"ref":"EID6a34c5b6-0175-1000-72c6-cdbb3cfe39d0"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:17:25Z","duration":41,"status":"FAILED"}]},"parent":{"ref":"EID6a34acb4-0175-1000-9e27-0fdc13201e7e"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:17:24Z","duration":610,"status":"FAILED"},{"id":"EID6a34c818-0175-1000-9995-9559acd1df69","testStepResults":{"TestStepResult":{"id":"EID6a34c818-0175-1000-bec7-7c3196293cc9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34c9ab-0175-1000-fa75-7afa32b3e804","parent":{"ref":"EID6a34c818-0175-1000-bec7-7c3196293cc9"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:17:25Z","duration":0,"status":"PASSED"},{"id":"EID6a34c9ab-0175-1000-cf0d-e587aae00b71","parent":{"ref":"EID6a34c818-0175-1000-bec7-7c3196293cc9"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:17:25Z","duration":0,"status":"PASSED"},{"id":"EID6a34c9ab-0175-1000-ffd1-5f58624f9922","parent":{"ref":"EID6a34c818-0175-1000-bec7-7c3196293cc9"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:17:25Z","duration":0,"status":"PASSED"},{"id":"EID6a34c9ab-0175-1000-cc49-4a944d1a5135","parent":{"ref":"EID6a34c818-0175-1000-bec7-7c3196293cc9"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:17:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcd5852a8-19fb-4751-b5db-fc41e9fabfd3"},{"ref":"EID6c90dcfb-61c5-41fc-a964-8167c403b5db"},{"ref":"EID3e1c81c4-a203-4969-bd54-b0db8586d239"}]},"parent":{"ref":"EID6a34c818-0175-1000-9995-9559acd1df69"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:17:25Z","duration":43,"status":"PASSED"}},"parent":{"ref":"EID6a34acb4-0175-1000-9e27-0fdc13201e7e"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:17:25Z","duration":403,"status":"PASSED"},{"id":"EID6a34c9ac-0175-1000-220d-74cbaacd45de","testStepResults":{"TestStepResult":[{"id":"EID6a34c9ac-0175-1000-26d3-4e9990eca745","parent":{"ref":"EID6a34c9ac-0175-1000-220d-74cbaacd45de"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:17:25Z","duration":0,"status":"PASSED"},{"id":"EID6a34c9ac-0175-1000-2073-e380b993047c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34caad-0175-1000-fa09-89cb14986409","parent":{"ref":"EID6a34c9ac-0175-1000-2073-e380b993047c"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"PASSED"},{"id":"EID6a34caad-0175-1000-9357-6e33afbcede0","parent":{"ref":"EID6a34c9ac-0175-1000-2073-e380b993047c"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"PASSED"},{"id":"EID6a34caad-0175-1000-f072-c5a2fcd829be","parent":{"ref":"EID6a34c9ac-0175-1000-2073-e380b993047c"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"PASSED"},{"id":"EID6a34caad-0175-1000-e935-1f3c22956044","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6a34c9ac-0175-1000-2073-e380b993047c"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID1f9d16dd-758a-4b12-9598-1fd7470df957"},{"ref":"EID10d7607d-fb60-44b2-a2ff-49fa155a5c97"},{"ref":"EIDccff1e2f-df29-4ba5-96ef-93c3bc585e39"}]},"parent":{"ref":"EID6a34c9ac-0175-1000-220d-74cbaacd45de"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:17:25Z","duration":75,"status":"FAILED"}]},"parent":{"ref":"EID6a34acb4-0175-1000-9e27-0fdc13201e7e"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:17:25Z","duration":258,"status":"FAILED"}]},"parent":{"ref":"EID943c9e86-1b2e-48a0-9efc-786e31b893cd"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:17:18Z","duration":7674,"status":"FAILED"},{"id":"EID6a34caae-0175-1000-18d1-1b926c4e4a45","testCaseResults":{"TestCaseResult":[{"id":"EID6a34caae-0175-1000-4dd5-41c8e7423925","testStepResults":{"TestStepResult":[{"id":"EID6a34caae-0175-1000-45e4-d9de1d551437","parent":{"ref":"EID6a34caae-0175-1000-4dd5-41c8e7423925"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"PASSED"},{"id":"EID6a34caae-0175-1000-b3ac-2b7043b73a7e","parent":{"ref":"EID6a34caae-0175-1000-4dd5-41c8e7423925"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:17:26Z","duration":43,"status":"PASSED"},{"id":"EID6a34caae-0175-1000-107e-52c770de5d3c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34cb46-0175-1000-5cbf-99e5b34d0f38","parent":{"ref":"EID6a34caae-0175-1000-107e-52c770de5d3c"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"PASSED"},{"id":"EID6a34cb46-0175-1000-ecba-f9eb3210dd9d","parent":{"ref":"EID6a34caae-0175-1000-107e-52c770de5d3c"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"PASSED"},{"id":"EID6a34cb46-0175-1000-495d-a90aaf5fa2e0","parent":{"ref":"EID6a34caae-0175-1000-107e-52c770de5d3c"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1c953db2-e4a7-4c3d-8457-c6883a21b8c5"},{"ref":"EID28c6faac-c5bd-4bca-b089-29ac0f376981"},{"ref":"EID283816a9-c684-4940-b1d5-d02a34e07d38"}]},"parent":{"ref":"EID6a34caae-0175-1000-4dd5-41c8e7423925"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:17:26Z","duration":61,"status":"PASSED"},{"id":"EID6a34cb46-0175-1000-ca2c-73ea82273116","attachments":{"attachment":{"ref":"EID9515df51-4367-4455-b4b4-1c2a112fdefa"}},"parent":{"ref":"EID6a34caae-0175-1000-4dd5-41c8e7423925"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"PASSED"},{"id":"EID6a34cb51-0175-1000-9c3e-a529834dc09a","parent":{"ref":"EID6a34caae-0175-1000-4dd5-41c8e7423925"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:17:26Z","duration":42,"status":"PASSED"}]},"parent":{"ref":"EID6a34caae-0175-1000-18d1-1b926c4e4a45"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:17:26Z","duration":206,"status":"PASSED"},{"id":"EID6a34cb7c-0175-1000-216e-7c4ef3fd90f1","testStepResults":{"TestStepResult":[{"id":"EID6a34cb7c-0175-1000-8d7b-3d7efa5f2d55","parent":{"ref":"EID6a34cb7c-0175-1000-216e-7c4ef3fd90f1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:17:26Z","duration":133,"status":"PASSED"},{"id":"EID6a34cb7c-0175-1000-fa9a-c5a63ff89b4f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34cbf1-0175-1000-f454-daf8fcb5b13f","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a34cb7c-0175-1000-fa9a-c5a63ff89b4f"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:17:26Z","duration":11,"status":"FAILED"},{"id":"EID6a34cbfc-0175-1000-9d58-37f128c0bbc8","parent":{"ref":"EID6a34cb7c-0175-1000-fa9a-c5a63ff89b4f"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"PASSED"},{"id":"EID6a34cbfc-0175-1000-cb66-1f3ff9c0c47b","parent":{"ref":"EID6a34cb7c-0175-1000-fa9a-c5a63ff89b4f"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"PASSED"},{"id":"EID6a34cbfc-0175-1000-1f35-3141fcf30936","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6a34cb7c-0175-1000-fa9a-c5a63ff89b4f"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"FAILED"},{"id":"EID6a34cbfc-0175-1000-a7ad-cff841f2d311","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6a34cb7c-0175-1000-fa9a-c5a63ff89b4f"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID57078674-da33-47aa-b9db-bbb5da0573f3"},{"ref":"EID8441cbd9-6782-494f-9270-b84c4e1ef87d"},{"ref":"EID7b68dacb-3a9e-4f99-9ea1-2ce2029bd2da"}]},"parent":{"ref":"EID6a34cb7c-0175-1000-216e-7c4ef3fd90f1"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:17:26Z","duration":44,"status":"FAILED"}]},"parent":{"ref":"EID6a34caae-0175-1000-18d1-1b926c4e4a45"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:17:26Z","duration":129,"status":"FAILED"},{"id":"EID6a34cbfd-0175-1000-add2-ac9e82a1acce","testStepResults":{"TestStepResult":{"id":"EID6a34cbfd-0175-1000-b946-b24759f24c26","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34cc51-0175-1000-2a60-732b448b266f","parent":{"ref":"EID6a34cbfd-0175-1000-b946-b24759f24c26"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"PASSED"},{"id":"EID6a34cc51-0175-1000-28c3-1a957e6ff06c","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a34cbfd-0175-1000-b946-b24759f24c26"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:17:26Z","duration":21,"status":"FAILED"},{"id":"EID6a34cc66-0175-1000-c148-bb86ff91023e","parent":{"ref":"EID6a34cbfd-0175-1000-b946-b24759f24c26"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa4dac175-d8f8-4855-8b1c-1749c87f97b5"},{"ref":"EID612be621-f253-4e6a-8d4f-6443475fae0b"},{"ref":"EID09ca21fb-ae1e-4277-a620-c16b3b74a6d5"}]},"parent":{"ref":"EID6a34cbfd-0175-1000-add2-ac9e82a1acce"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:17:26Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6a34caae-0175-1000-18d1-1b926c4e4a45"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:17:26Z","duration":105,"status":"FAILED"},{"id":"EID6a34cc67-0175-1000-164b-3492546f13db","testStepResults":{"TestStepResult":{"id":"EID6a34cc67-0175-1000-8deb-db74f66bd372","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34ccdb-0175-1000-0409-477c6563c6a0","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a34cc67-0175-1000-8deb-db74f66bd372"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"FAILED"},{"id":"EID6a34ccdb-0175-1000-e532-efbdf323886c","parent":{"ref":"EID6a34cc67-0175-1000-8deb-db74f66bd372"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"PASSED"},{"id":"EID6a34ccdb-0175-1000-6c5f-7aa104561955","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a34cc67-0175-1000-8deb-db74f66bd372"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:17:26Z","duration":10,"status":"FAILED"},{"id":"EID6a34cce5-0175-1000-8cca-9e55c6b06c0a","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6a34cc67-0175-1000-8deb-db74f66bd372"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID0cec93c4-057d-4b9c-8289-880889a24e40"},{"ref":"EID0888885c-0f59-49f0-a2a1-fd192efcb00b"},{"ref":"EID821e8f8c-8537-4d90-ab47-ccdf5734670a"}]},"parent":{"ref":"EID6a34cc67-0175-1000-164b-3492546f13db"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:17:26Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6a34caae-0175-1000-18d1-1b926c4e4a45"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:17:26Z","duration":126,"status":"FAILED"},{"id":"EID6a34cce6-0175-1000-d216-de228078f073","testStepResults":{"TestStepResult":{"id":"EID6a34cce6-0175-1000-4e45-56bcc89a683b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34cd4a-0175-1000-e56f-bbfabd961b04","parent":{"ref":"EID6a34cce6-0175-1000-4e45-56bcc89a683b"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"PASSED"},{"id":"EID6a34cd4a-0175-1000-ff76-b4a6a7b15dd6","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a34cce6-0175-1000-4e45-56bcc89a683b"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:17:26Z","duration":11,"status":"FAILED"},{"id":"EID6a34cd55-0175-1000-d0f7-753f0298a09c","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6a34cce6-0175-1000-4e45-56bcc89a683b"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID21027935-a68a-486c-bea1-2bb2a7c36f4e"},{"ref":"EID8e35f894-a904-4909-b049-db0e2f5a314a"},{"ref":"EID922faf2f-c277-4bb7-8bd6-a8e088c1fee8"}]},"parent":{"ref":"EID6a34cce6-0175-1000-d216-de228078f073"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:17:26Z","duration":37,"status":"FAILED"}},"parent":{"ref":"EID6a34caae-0175-1000-18d1-1b926c4e4a45"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:17:26Z","duration":111,"status":"FAILED"},{"id":"EID6a34cd55-0175-1000-2a4f-e8de5352a5a7","testStepResults":{"TestStepResult":{"id":"EID6a34cd55-0175-1000-5488-6fa6d5997a89","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34cdae-0175-1000-009f-4c66bf5d0ecb","parent":{"ref":"EID6a34cd55-0175-1000-5488-6fa6d5997a89"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"PASSED"},{"id":"EID6a34cdae-0175-1000-b81c-d74d52622c49","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a34cd55-0175-1000-5488-6fa6d5997a89"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:17:26Z","duration":10,"status":"FAILED"},{"id":"EID6a34cdb8-0175-1000-a993-81e33535ee3d","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a34cd55-0175-1000-5488-6fa6d5997a89"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID6fd69fe2-d424-4b1f-bf40-57f922bda8d5"},{"ref":"EID42c84ec1-276e-4c88-91f0-8ea329d2b303"},{"ref":"EID73e57fab-1f01-483a-afc4-b56108a19c28"}]},"parent":{"ref":"EID6a34cd55-0175-1000-2a4f-e8de5352a5a7"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:17:26Z","duration":34,"status":"FAILED"}},"parent":{"ref":"EID6a34caae-0175-1000-18d1-1b926c4e4a45"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:17:26Z","duration":99,"status":"FAILED"},{"id":"EID6a34cdb9-0175-1000-8b65-38b37f9bef3c","testStepResults":{"TestStepResult":{"id":"EID6a34cdb9-0175-1000-4a04-c9380f5713b0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34ce2f-0175-1000-96a0-3709a719659a","parent":{"ref":"EID6a34cdb9-0175-1000-4a04-c9380f5713b0"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"PASSED"},{"id":"EID6a34ce2f-0175-1000-638d-69707c06b79e","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a34cdb9-0175-1000-4a04-c9380f5713b0"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:17:26Z","duration":34,"status":"FAILED"},{"id":"EID6a34ce51-0175-1000-d540-e2b0ba1408a6","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6a34cdb9-0175-1000-4a04-c9380f5713b0"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"FAILED"},{"id":"EID6a34ce51-0175-1000-63a4-54dfe457b6a0","parent":{"ref":"EID6a34cdb9-0175-1000-4a04-c9380f5713b0"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"PASSED"},{"id":"EID6a34ce51-0175-1000-0fc5-73fae215c623","parent":{"ref":"EID6a34cdb9-0175-1000-4a04-c9380f5713b0"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:17:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc8995433-2d91-4104-baa2-dd2350bc7c0a"},{"ref":"EID31babe34-c1cf-4fa5-bc44-e98a322317a2"},{"ref":"EID243ca1d2-b7ce-4489-b9aa-d1ed6edb8b32"}]},"parent":{"ref":"EID6a34cdb9-0175-1000-8b65-38b37f9bef3c"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:17:26Z","duration":31,"status":"FAILED"}},"parent":{"ref":"EID6a34caae-0175-1000-18d1-1b926c4e4a45"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:17:26Z","duration":152,"status":"FAILED"},{"id":"EID6a34ce51-0175-1000-f97b-6b8c17a1ae00","testStepResults":{"TestStepResult":{"id":"EID6a34ce51-0175-1000-f7f8-6e34cdda8107","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34cee2-0175-1000-2994-ffca7685cd8c","parent":{"ref":"EID6a34ce51-0175-1000-f7f8-6e34cdda8107"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:17:27Z","duration":0,"status":"PASSED"},{"id":"EID6a34cee2-0175-1000-15f2-6ee645fc696e","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a34ce51-0175-1000-f7f8-6e34cdda8107"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:17:27Z","duration":14,"status":"FAILED"},{"id":"EID6a34cef0-0175-1000-1f1a-8124348e72ac","parent":{"ref":"EID6a34ce51-0175-1000-f7f8-6e34cdda8107"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:17:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3631a982-ba80-4032-8316-a2d92c4c845a"},{"ref":"EID3e894d74-e740-4adb-945c-acb32d8a20e0"},{"ref":"EID42f40e71-8995-4957-bf60-7e409d339a86"}]},"parent":{"ref":"EID6a34ce51-0175-1000-f97b-6b8c17a1ae00"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:17:26Z","duration":84,"status":"FAILED"}},"parent":{"ref":"EID6a34caae-0175-1000-18d1-1b926c4e4a45"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:17:26Z","duration":159,"status":"FAILED"},{"id":"EID6a34cef0-0175-1000-6cd3-2d578af95fd1","testStepResults":{"TestStepResult":{"id":"EID6a34cef0-0175-1000-9738-7181e1c4e0b7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34cf4d-0175-1000-588c-6e56cc4ed777","parent":{"ref":"EID6a34cef0-0175-1000-9738-7181e1c4e0b7"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:17:27Z","duration":0,"status":"PASSED"},{"id":"EID6a34cf4d-0175-1000-0062-0887d779aa81","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a34cef0-0175-1000-9738-7181e1c4e0b7"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:17:27Z","duration":66,"status":"FAILED"},{"id":"EID6a34cf8f-0175-1000-9a81-f038424cec2a","parent":{"ref":"EID6a34cef0-0175-1000-9738-7181e1c4e0b7"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:17:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6892d211-32f8-4bde-b3e0-cd31ac4b7023"},{"ref":"EID314816f6-301d-4e80-8516-27ca15895ca9"},{"ref":"EID4462d07a-5d59-47cc-a8ab-05d156349a6d"}]},"parent":{"ref":"EID6a34cef0-0175-1000-6cd3-2d578af95fd1"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:17:27Z","duration":32,"status":"FAILED"}},"parent":{"ref":"EID6a34caae-0175-1000-18d1-1b926c4e4a45"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:17:27Z","duration":159,"status":"FAILED"},{"id":"EID6a34cf8f-0175-1000-38a1-293cc231a138","testStepResults":{"TestStepResult":{"id":"EID6a34cf8f-0175-1000-f56d-931ba1189f2e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34d02e-0175-1000-513d-8dec4f725c70","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a34cf8f-0175-1000-f56d-931ba1189f2e"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:17:27Z","duration":16,"status":"FAILED"},{"id":"EID6a34d03e-0175-1000-ba27-417676606f6f","parent":{"ref":"EID6a34cf8f-0175-1000-f56d-931ba1189f2e"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:17:27Z","duration":0,"status":"PASSED"},{"id":"EID6a34d03e-0175-1000-1d50-4e4e4e46af7b","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a34cf8f-0175-1000-f56d-931ba1189f2e"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:17:27Z","duration":1,"status":"FAILED"},{"id":"EID6a34d03f-0175-1000-a2e4-5cc9bbc5c0f8","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6a34cf8f-0175-1000-f56d-931ba1189f2e"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:17:27Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID1fc2bde4-70d7-41fb-89d0-b753a7a814cf"},{"ref":"EIDf0a103aa-b10f-43b5-8fc2-e65695afea0d"},{"ref":"EID9ff94cac-3f4f-4d26-aba8-32e6a182a5b0"}]},"parent":{"ref":"EID6a34cf8f-0175-1000-38a1-293cc231a138"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:17:27Z","duration":92,"status":"FAILED"}},"parent":{"ref":"EID6a34caae-0175-1000-18d1-1b926c4e4a45"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:17:27Z","duration":184,"status":"FAILED"},{"id":"EID6a34d048-0175-1000-3287-23e936049ffe","testStepResults":{"TestStepResult":{"id":"EID6a34d048-0175-1000-b97a-b2b66130c7ac","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34d0ae-0175-1000-a9ad-10b1bd63b1c0","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a34d048-0175-1000-b97a-b2b66130c7ac"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:17:27Z","duration":11,"status":"FAILED"},{"id":"EID6a34d0b9-0175-1000-736f-3e35a36be92f","parent":{"ref":"EID6a34d048-0175-1000-b97a-b2b66130c7ac"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:17:27Z","duration":0,"status":"PASSED"},{"id":"EID6a34d0b9-0175-1000-7dc4-4bf8bd8b9bc5","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a34d048-0175-1000-b97a-b2b66130c7ac"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:17:27Z","duration":0,"status":"FAILED"},{"id":"EID6a34d0b9-0175-1000-dc59-3921b7beca24","parent":{"ref":"EID6a34d048-0175-1000-b97a-b2b66130c7ac"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:17:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2d2ab107-eb0f-4c99-b870-23db98f3a962"},{"ref":"EIDae9aebf4-451c-43ee-8f6a-f77d5008c5a7"},{"ref":"EIDd37e524d-1691-4584-ba14-e481c48a8f5a"}]},"parent":{"ref":"EID6a34d048-0175-1000-3287-23e936049ffe"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:17:27Z","duration":33,"status":"FAILED"}},"parent":{"ref":"EID6a34caae-0175-1000-18d1-1b926c4e4a45"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:17:27Z","duration":114,"status":"FAILED"},{"id":"EID6a34d0ba-0175-1000-2ed7-998526b0ba9b","testStepResults":{"TestStepResult":[{"id":"EID6a34d0ba-0175-1000-88a6-41fc2c107a9d","parent":{"ref":"EID6a34d0ba-0175-1000-2ed7-998526b0ba9b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:17:27Z","duration":0,"status":"PASSED"},{"id":"EID6a34d0c3-0175-1000-f767-6efdff54d3f3","parent":{"ref":"EID6a34d0ba-0175-1000-2ed7-998526b0ba9b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:17:27Z","duration":199,"status":"PASSED"},{"id":"EID6a34d0c3-0175-1000-1854-99e7879b75cf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34d1d2-0175-1000-c2b9-8b8ac997ff72","parent":{"ref":"EID6a34d0c3-0175-1000-1854-99e7879b75cf"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:17:27Z","duration":0,"status":"PASSED"},{"id":"EID6a34d1d2-0175-1000-8704-befb61b56905","parent":{"ref":"EID6a34d0c3-0175-1000-1854-99e7879b75cf"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:17:27Z","duration":0,"status":"PASSED"},{"id":"EID6a34d1d2-0175-1000-5d97-e5bad46ec8c9","parent":{"ref":"EID6a34d0c3-0175-1000-1854-99e7879b75cf"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:17:27Z","duration":0,"status":"PASSED"},{"id":"EID6a34d1d2-0175-1000-2513-e6b6a5d7f5d7","parent":{"ref":"EID6a34d0c3-0175-1000-1854-99e7879b75cf"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:17:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID226f91b0-1bf9-4c0a-a50d-e67df73eaf6b"},{"ref":"EIDf0322a80-b1de-42ec-8e5d-37d7d39229da"},{"ref":"EIDfb1df299-a223-4ddd-990c-d15d44612015"}]},"parent":{"ref":"EID6a34d0ba-0175-1000-2ed7-998526b0ba9b"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:17:27Z","duration":120,"status":"PASSED"},{"id":"EID6a34d1d2-0175-1000-6c76-13a7de4fdf02","attachments":{"attachment":{"ref":"EIDa5d7a008-76d7-4cc6-9710-973a3bc83073"}},"parent":{"ref":"EID6a34d0ba-0175-1000-2ed7-998526b0ba9b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:17:27Z","duration":5,"status":"PASSED"},{"id":"EID6a34d1e3-0175-1000-6085-1cd5e536e39b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34d25c-0175-1000-47c2-9158853ce51d","parent":{"ref":"EID6a34d1e3-0175-1000-6085-1cd5e536e39b"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:17:28Z","duration":0,"status":"PASSED"},{"id":"EID6a34d25c-0175-1000-0497-0a45ea03741a","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a34d1e3-0175-1000-6085-1cd5e536e39b"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:17:28Z","duration":13,"status":"FAILED"},{"id":"EID6a34d269-0175-1000-5b9b-8967a22f37db","parent":{"ref":"EID6a34d1e3-0175-1000-6085-1cd5e536e39b"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:17:28Z","duration":0,"status":"PASSED"},{"id":"EID6a34d269-0175-1000-1840-a874b643cf86","parent":{"ref":"EID6a34d1e3-0175-1000-6085-1cd5e536e39b"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:17:28Z","duration":0,"status":"PASSED"},{"id":"EID6a34d269-0175-1000-5175-03e4452abcd8","parent":{"ref":"EID6a34d1e3-0175-1000-6085-1cd5e536e39b"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:17:28Z","duration":0,"status":"PASSED"},{"id":"EID6a34d269-0175-1000-56af-64ce5b20bbab","parent":{"ref":"EID6a34d1e3-0175-1000-6085-1cd5e536e39b"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:17:28Z","duration":0,"status":"PASSED"},{"id":"EID6a34d269-0175-1000-8ab8-9f7850c60edf","parent":{"ref":"EID6a34d1e3-0175-1000-6085-1cd5e536e39b"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:17:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa98656f2-e06e-4daf-ae23-59d62649b97c"},{"ref":"EID2dda4b26-51b0-4287-ac70-8378321bddd8"},{"ref":"EIDeae1fada-4c5b-4189-bb26-3fa6cf93a411"}]},"parent":{"ref":"EID6a34d0ba-0175-1000-2ed7-998526b0ba9b"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:17:27Z","duration":26,"status":"FAILED"}]},"parent":{"ref":"EID6a34caae-0175-1000-18d1-1b926c4e4a45"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:17:27Z","duration":431,"status":"FAILED"},{"id":"EID6a34d269-0175-1000-7585-7881c4fb1265","testStepResults":{"TestStepResult":[{"id":"EID6a34d269-0175-1000-1945-38cc01189b79","parent":{"ref":"EID6a34d269-0175-1000-7585-7881c4fb1265"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:17:28Z","duration":0,"status":"PASSED"},{"id":"EID6a34d26a-0175-1000-233f-788a87bdab51","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34d3bd-0175-1000-e037-242b1ff485c7","parent":{"ref":"EID6a34d26a-0175-1000-233f-788a87bdab51"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:17:28Z","duration":0,"status":"PASSED"},{"id":"EID6a34d3bd-0175-1000-3914-61ecacf7acc7","parent":{"ref":"EID6a34d26a-0175-1000-233f-788a87bdab51"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:17:28Z","duration":0,"status":"PASSED"},{"id":"EID6a34d3bd-0175-1000-32c7-dd64805b6291","parent":{"ref":"EID6a34d26a-0175-1000-233f-788a87bdab51"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:17:28Z","duration":0,"status":"PASSED"},{"id":"EID6a34d3bd-0175-1000-e713-a63e7d967807","parent":{"ref":"EID6a34d26a-0175-1000-233f-788a87bdab51"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:17:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb092f14b-7dcb-4b78-b440-205ff5cb54d7"},{"ref":"EID2fe729d4-0a9a-4503-87e6-5c8a7ddcf882"},{"ref":"EIDcd6dec8b-4e9e-4712-a5b5-d4947d2e9df1"}]},"parent":{"ref":"EID6a34d269-0175-1000-7585-7881c4fb1265"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:17:28Z","duration":141,"status":"PASSED"},{"id":"EID6a34d3be-0175-1000-9a9e-51f6227a219e","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a34d3d1-0175-1000-0c91-ae277fc582ef","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34d59c-0175-1000-a240-7774be8e9433","parent":{"ref":"EID6a34d3d1-0175-1000-0c91-ae277fc582ef"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:17:28Z","duration":0,"status":"PASSED"},{"id":"EID6a34d59c-0175-1000-54d9-861cbc788962","parent":{"ref":"EID6a34d3d1-0175-1000-0c91-ae277fc582ef"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:17:28Z","duration":0,"status":"PASSED"},{"id":"EID6a34d59c-0175-1000-d975-7df763fe7511","parent":{"ref":"EID6a34d3d1-0175-1000-0c91-ae277fc582ef"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:17:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe27cd70e-b44a-4315-a873-74a313932896"},{"ref":"EID448e2ba3-b5a7-4342-9328-ea2f280d546d"},{"ref":"EID8124e468-d45e-41b4-bccc-a89e1077193d"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:17:28Z","duration":150,"status":"PASSED"},{"id":"EID6a34d5b6-0175-1000-d4d2-48af8669d955","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34d6a5-0175-1000-a1ef-a59be9c0b795","parent":{"ref":"EID6a34d5b6-0175-1000-d4d2-48af8669d955"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:17:29Z","duration":0,"status":"PASSED"},{"id":"EID6a34d6a5-0175-1000-62fa-cb8f6e2ee088","parent":{"ref":"EID6a34d5b6-0175-1000-d4d2-48af8669d955"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:17:29Z","duration":0,"status":"PASSED"},{"id":"EID6a34d6a5-0175-1000-6cff-2641fbca5da2","parent":{"ref":"EID6a34d5b6-0175-1000-d4d2-48af8669d955"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:17:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2134ae01-5f95-414a-969b-107be0545e37"},{"ref":"EIDbc66eb60-f863-47d7-ad56-b4247c5ecd59"},{"ref":"EIDda7e0403-49ea-4d12-9cd7-335614445bea"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:17:28Z","duration":146,"status":"PASSED"},{"id":"EID6a34d6a6-0175-1000-5759-3072e6953724","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34d769-0175-1000-9f04-234504c67c05","parent":{"ref":"EID6a34d6a6-0175-1000-5759-3072e6953724"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:17:29Z","duration":0,"status":"PASSED"},{"id":"EID6a34d769-0175-1000-4a19-8307223c14f0","parent":{"ref":"EID6a34d6a6-0175-1000-5759-3072e6953724"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:17:29Z","duration":0,"status":"PASSED"},{"id":"EID6a34d769-0175-1000-51fb-a48fabe602e2","parent":{"ref":"EID6a34d6a6-0175-1000-5759-3072e6953724"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:17:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd72fa75d-9a3c-407c-82bc-39749e65d76f"},{"ref":"EID538d10d7-88af-423a-adee-e55958fa1087"},{"ref":"EIDd941a90c-31d3-4e44-bc17-73ef48fc75c4"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:17:29Z","duration":146,"status":"PASSED"}]},"parent":{"ref":"EID6a34d269-0175-1000-7585-7881c4fb1265"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:17:28Z","duration":940,"status":"PASSED"},{"id":"EID6a34d76a-0175-1000-4b78-fc68aad5a4b1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34d7d9-0175-1000-48d7-29673969b845","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a34d76a-0175-1000-4b78-fc68aad5a4b1"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:17:29Z","duration":11,"status":"FAILED"},{"id":"EID6a34d7e4-0175-1000-9765-f9ae386ebf7a","parent":{"ref":"EID6a34d76a-0175-1000-4b78-fc68aad5a4b1"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:17:29Z","duration":0,"status":"PASSED"},{"id":"EID6a34d7e4-0175-1000-979e-aff429b76144","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a34d76a-0175-1000-4b78-fc68aad5a4b1"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:17:29Z","duration":0,"status":"FAILED"},{"id":"EID6a34d7e4-0175-1000-87ad-b6ec3479c01d","parent":{"ref":"EID6a34d76a-0175-1000-4b78-fc68aad5a4b1"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:17:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDddd3ebb6-e2f4-41b1-83b8-1152afc3ac25"},{"ref":"EID82f88977-7aca-4090-88c4-1a592ad2a96f"},{"ref":"EID83c3103d-f541-4157-b531-c5d28880915d"}]},"parent":{"ref":"EID6a34d269-0175-1000-7585-7881c4fb1265"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:17:29Z","duration":33,"status":"FAILED"}]},"parent":{"ref":"EID6a34caae-0175-1000-18d1-1b926c4e4a45"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:17:28Z","duration":1403,"status":"FAILED"},{"id":"EID6a34d7e4-0175-1000-53ac-476d849085cf","testStepResults":{"TestStepResult":{"id":"EID6a34d7e4-0175-1000-005f-0621eb0a6a8e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34d86f-0175-1000-cf89-82625c9ba3ec","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a34d7e4-0175-1000-005f-0621eb0a6a8e"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:17:29Z","duration":13,"status":"FAILED"},{"id":"EID6a34d87c-0175-1000-397d-fc329ba60f75","parent":{"ref":"EID6a34d7e4-0175-1000-005f-0621eb0a6a8e"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:17:29Z","duration":0,"status":"PASSED"},{"id":"EID6a34d87c-0175-1000-f48d-4d7b0848c5fd","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a34d7e4-0175-1000-005f-0621eb0a6a8e"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:17:29Z","duration":0,"status":"FAILED"},{"id":"EID6a34d87c-0175-1000-5b25-d2e838705fda","parent":{"ref":"EID6a34d7e4-0175-1000-005f-0621eb0a6a8e"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:17:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDad6ebbee-a166-48fb-8d6f-593bd09f1158"},{"ref":"EIDcab5f12f-3962-4943-853d-d74a6a8f8c84"},{"ref":"EID79220a63-3f57-4ac8-b4ef-5a5c1e030d04"}]},"parent":{"ref":"EID6a34d7e4-0175-1000-53ac-476d849085cf"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:17:29Z","duration":36,"status":"FAILED"}},"parent":{"ref":"EID6a34caae-0175-1000-18d1-1b926c4e4a45"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:17:29Z","duration":153,"status":"FAILED"}]},"parent":{"ref":"EID943c9e86-1b2e-48a0-9efc-786e31b893cd"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:17:26Z","duration":3535,"status":"FAILED"},{"id":"EID6a34d87d-0175-1000-3115-cb243ef95f9e","testCaseResults":{"TestCaseResult":[{"id":"EID6a34d87d-0175-1000-2358-673ac9a5481c","testStepResults":{"TestStepResult":{"id":"EID6a34d887-0175-1000-bf11-c5715408a3b1","parent":{"ref":"EID6a34d87d-0175-1000-2358-673ac9a5481c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:17:29Z","duration":525,"status":"SKIPPED"}},"parent":{"ref":"EID6a34d87d-0175-1000-3115-cb243ef95f9e"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:17:29Z","duration":10,"status":"SKIPPED"},{"id":"EID6a34d887-0175-1000-3850-d7d24ee10627","testStepResults":{"TestStepResult":{"id":"EID6a34d887-0175-1000-e394-da3f51baa7b6","parent":{"ref":"EID6a34d887-0175-1000-3850-d7d24ee10627"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:17:29Z","duration":525,"status":"SKIPPED"}},"parent":{"ref":"EID6a34d87d-0175-1000-3115-cb243ef95f9e"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:17:29Z","duration":0,"status":"SKIPPED"},{"id":"EID6a34d887-0175-1000-e383-07c97216eee5","testStepResults":{"TestStepResult":{"id":"EID6a34d887-0175-1000-763f-c5989fa9e85f","parent":{"ref":"EID6a34d887-0175-1000-e383-07c97216eee5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:17:29Z","duration":525,"status":"SKIPPED"}},"parent":{"ref":"EID6a34d87d-0175-1000-3115-cb243ef95f9e"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:17:29Z","duration":0,"status":"SKIPPED"},{"id":"EID6a34d892-0175-1000-e3ca-09b3d92a96f4","testStepResults":{"TestStepResult":{"id":"EID6a34d892-0175-1000-d7f8-6e5d49b00363","parent":{"ref":"EID6a34d892-0175-1000-e3ca-09b3d92a96f4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:17:29Z","duration":525,"status":"SKIPPED"}},"parent":{"ref":"EID6a34d87d-0175-1000-3115-cb243ef95f9e"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:17:29Z","duration":0,"status":"SKIPPED"},{"id":"EID6a34d893-0175-1000-dce3-b6e31226529a","testStepResults":{"TestStepResult":{"id":"EID6a34d893-0175-1000-0a03-991d8ebfba92","parent":{"ref":"EID6a34d893-0175-1000-dce3-b6e31226529a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:17:29Z","duration":525,"status":"SKIPPED"}},"parent":{"ref":"EID6a34d87d-0175-1000-3115-cb243ef95f9e"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:17:29Z","duration":0,"status":"SKIPPED"},{"id":"EID6a34d893-0175-1000-3777-f6e6e64540f5","testStepResults":{"TestStepResult":{"id":"EID6a34d893-0175-1000-7b4c-654c17f39429","parent":{"ref":"EID6a34d893-0175-1000-3777-f6e6e64540f5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:17:29Z","duration":525,"status":"SKIPPED"}},"parent":{"ref":"EID6a34d87d-0175-1000-3115-cb243ef95f9e"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:17:29Z","duration":0,"status":"SKIPPED"},{"id":"EID6a34d893-0175-1000-5bce-7b54b0b65676","testStepResults":{"TestStepResult":{"id":"EID6a34d893-0175-1000-6fc3-f891a875ac67","parent":{"ref":"EID6a34d893-0175-1000-5bce-7b54b0b65676"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:17:29Z","duration":525,"status":"SKIPPED"}},"parent":{"ref":"EID6a34d87d-0175-1000-3115-cb243ef95f9e"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:17:29Z","duration":0,"status":"SKIPPED"}]},"parent":{"ref":"EID943c9e86-1b2e-48a0-9efc-786e31b893cd"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:17:29Z","duration":22,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"ServiceResponse","id":"EID448e2ba3-b5a7-4342-9328-ea2f280d546d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID448e2ba3-b5a7-4342-9328-ea2f280d546d"}},{"type":"GetParameter","id":"EID243ca1d2-b7ce-4489-b9aa-d1ed6edb8b32","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"LogFile","id":"EIDc5e8e21a-6109-4fc7-ac52-2e6c86f5f3e0","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDc5e8e21a-6109-4fc7-ac52-2e6c86f5f3e0"}},{"type":"ServiceResponse","id":"EIDec107f18-87fa-4799-b32c-ad10eccc1b00","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDec107f18-87fa-4799-b32c-ad10eccc1b00"}},{"type":"Error","id":"EID76f1025c-9c55-4bdf-8f10-add2260c24d7","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID76f1025c-9c55-4bdf-8f10-add2260c24d7"}},{"type":"GetParameter","id":"EID1ea33ddc-ea25-40a4-889c-d72309be2022","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID9c193a60-2d4f-4b5d-a0d2-51c0febd48a9","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID9c193a60-2d4f-4b5d-a0d2-51c0febd48a9"}},{"type":"Error","id":"EID7b9d97ff-10d4-4618-bb6f-0cbc3c457224","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID7b9d97ff-10d4-4618-bb6f-0cbc3c457224"}},{"type":"ServiceResponse","id":"EID4946d805-a525-45f5-a6e4-a742d1b6ada1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID4946d805-a525-45f5-a6e4-a742d1b6ada1"}},{"type":"Message","id":"EIDfd7125a0-61c7-48f6-aa19-d880e48be805","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDfd7125a0-61c7-48f6-aa19-d880e48be805"}},{"type":"Message","id":"EID9515df51-4367-4455-b4b4-1c2a112fdefa","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID9515df51-4367-4455-b4b4-1c2a112fdefa"}},{"type":"Error","id":"EID18123275-3caa-4754-aec2-39c7c8a0b74b","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID18123275-3caa-4754-aec2-39c7c8a0b74b"}},{"type":"GetParameter","id":"EIDfb1df299-a223-4ddd-990c-d15d44612015","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID9c3e8c72-bcaa-429e-8290-74dbd26fea44","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDad6ebbee-a166-48fb-8d6f-593bd09f1158","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID1f0236f5-7cf6-48f6-b006-153ec5d23e7c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID1f0236f5-7cf6-48f6-b006-153ec5d23e7c"}},{"type":"GetParameter","id":"EID39051ebb-c388-49b2-b5b7-7d84b02d0e6e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDce669a96-1f20-4409-a846-a4a58d95cac2","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDce669a96-1f20-4409-a846-a4a58d95cac2"}},{"type":"ServiceEndpoint","id":"EID1fc2bde4-70d7-41fb-89d0-b753a7a814cf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID3631a982-ba80-4032-8316-a2d92c4c845a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID538d10d7-88af-423a-adee-e55958fa1087","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID538d10d7-88af-423a-adee-e55958fa1087"}},{"type":"ServiceResponse","id":"EIDd2898c0c-e916-49b8-a05f-7e7a1a3882fa","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDd2898c0c-e916-49b8-a05f-7e7a1a3882fa"}},{"type":"Message","id":"EID0b1a93c7-d02a-4bf5-ae92-c423cb83c31a","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID0b1a93c7-d02a-4bf5-ae92-c423cb83c31a"}},{"type":"ServiceResponse","id":"EIDa620d0d0-e920-4f55-bfc8-baffbfd0ff49","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDa620d0d0-e920-4f55-bfc8-baffbfd0ff49"}},{"type":"ServiceResponse","id":"EID65527812-1730-42db-9981-86d47befa844","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID65527812-1730-42db-9981-86d47befa844"}},{"type":"ServiceResponse","id":"EID42c84ec1-276e-4c88-91f0-8ea329d2b303","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID42c84ec1-276e-4c88-91f0-8ea329d2b303"}},{"type":"GetParameter","id":"EID73e57fab-1f01-483a-afc4-b56108a19c28","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID695bca83-8b07-4481-b223-0e95390ed52b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID695bca83-8b07-4481-b223-0e95390ed52b"}},{"type":"ServiceEndpoint","id":"EIDbaaddbcc-7d7f-4503-a071-b7b377db2e94","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID1d75b828-9633-4f23-8434-50573fd7293a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID1d75b828-9633-4f23-8434-50573fd7293a"}},{"type":"ServiceResponse","id":"EID10d7607d-fb60-44b2-a2ff-49fa155a5c97","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID10d7607d-fb60-44b2-a2ff-49fa155a5c97"}},{"type":"GetParameter","id":"EIDf2fe9455-198d-4407-956c-0e9b1ea19e88","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID94e31ed2-184b-4ba6-bc52-8e787b91b2f7","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID94e31ed2-184b-4ba6-bc52-8e787b91b2f7"}},{"type":"Error","id":"EID0883fb14-5a4d-4885-abbe-5a398e48d536","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID0883fb14-5a4d-4885-abbe-5a398e48d536"}},{"type":"GetParameter","id":"EIDd7045272-b4b7-476a-b20c-8d011ceca42a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID29a84c58-bdaa-4654-86ee-a61417410a17","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID29a84c58-bdaa-4654-86ee-a61417410a17"}},{"type":"ServiceEndpoint","id":"EID3a022f6e-9eff-4234-8f7e-843adf60042b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDa4dac175-d8f8-4855-8b1c-1749c87f97b5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID283816a9-c684-4940-b1d5-d02a34e07d38","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDb1f64a1d-a2c1-4fee-bdcf-c29c0ee0b62d","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDb1f64a1d-a2c1-4fee-bdcf-c29c0ee0b62d"}},{"type":"ServiceEndpoint","id":"EIDd72fa75d-9a3c-407c-82bc-39749e65d76f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EID821e8f8c-8537-4d90-ab47-ccdf5734670a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID6fd69fe2-d424-4b1f-bf40-57f922bda8d5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID2d2ab107-eb0f-4c99-b870-23db98f3a962","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID0cec93c4-057d-4b9c-8289-880889a24e40","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID00cde301-5349-4e64-8c7b-8664973a03d2","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID00cde301-5349-4e64-8c7b-8664973a03d2"}},{"type":"GetParameter","id":"EID66b7b1c1-1e6d-48b5-b596-7bc844728ad4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID05539bf6-3582-4eff-a49f-e03127de930c","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID05539bf6-3582-4eff-a49f-e03127de930c"}},{"type":"ServiceEndpoint","id":"EID21027935-a68a-486c-bea1-2bb2a7c36f4e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID03dd9294-dab8-491c-add6-e56ff9dcb357","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID03dd9294-dab8-491c-add6-e56ff9dcb357"}},{"type":"GetParameter","id":"EID9ff94cac-3f4f-4d26-aba8-32e6a182a5b0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID226f91b0-1bf9-4c0a-a50d-e67df73eaf6b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDecf0320a-964f-45b1-a1b3-a938698ec3ec","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDecf0320a-964f-45b1-a1b3-a938698ec3ec"}},{"type":"Message","id":"EIDa5d7a008-76d7-4cc6-9710-973a3bc83073","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDa5d7a008-76d7-4cc6-9710-973a3bc83073"}},{"type":"ServiceEndpoint","id":"EID1f62eb2e-e4a3-49c0-bedc-3b88eeefd8bb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDbd15bec2-313e-4f6c-a2f3-4f578bd2433f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDbd15bec2-313e-4f6c-a2f3-4f578bd2433f"}},{"type":"GetParameter","id":"EIDcd6dec8b-4e9e-4712-a5b5-d4947d2e9df1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EIDc4969185-adc4-4ec3-bc16-cdeda789225e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID57078674-da33-47aa-b9db-bbb5da0573f3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDd37e524d-1691-4584-ba14-e481c48a8f5a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDbd2ccac7-c6b9-4370-af65-07972b62c31e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID92738c97-3508-4a2b-b79d-d9259ce18ba7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID92738c97-3508-4a2b-b79d-d9259ce18ba7"}},{"type":"ServiceEndpoint","id":"EID5d3ec880-2160-43e5-95c9-6af77e3fdc33","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID9b498290-22ef-4f7c-9234-62c73aa2da2d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID1c953db2-e4a7-4c3d-8457-c6883a21b8c5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID8cdd4128-46b4-477a-9bbd-7b45cd5c931d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID8cdd4128-46b4-477a-9bbd-7b45cd5c931d"}},{"type":"Error","id":"EID8766fc25-9d49-42fd-946d-21eb7f10ceb5","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID8766fc25-9d49-42fd-946d-21eb7f10ceb5"}},{"type":"Error","id":"EID7c2bc63d-38ed-4ceb-9e49-f18d41605aec","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID7c2bc63d-38ed-4ceb-9e49-f18d41605aec"}},{"type":"ServiceEndpoint","id":"EIDc66af85d-0bfb-4d4e-a723-038c571cc456","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDd941a90c-31d3-4e44-bc17-73ef48fc75c4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EIDc12bb11d-7ce4-47c6-8595-aab78346fb34","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID1fa3cc32-17ad-4adb-89a0-5d28cf005d98","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDbc66eb60-f863-47d7-ad56-b4247c5ecd59","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDbc66eb60-f863-47d7-ad56-b4247c5ecd59"}},{"type":"ServiceResponse","id":"EID8441cbd9-6782-494f-9270-b84c4e1ef87d","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID8441cbd9-6782-494f-9270-b84c4e1ef87d"}},{"type":"GetParameter","id":"EID42f40e71-8995-4957-bf60-7e409d339a86","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EID2bc52f54-42b2-4fe7-8d52-fc3e1299d56c","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID2bc52f54-42b2-4fe7-8d52-fc3e1299d56c"}},{"type":"ServiceEndpoint","id":"EIDb092f14b-7dcb-4b78-b440-205ff5cb54d7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EID1f9d16dd-758a-4b12-9598-1fd7470df957","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID3e1c81c4-a203-4969-bd54-b0db8586d239","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID7a29f007-5e3f-4adc-bd0d-a7c4e0c67f92","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID7a29f007-5e3f-4adc-bd0d-a7c4e0c67f92"}},{"type":"ServiceResponse","id":"EID2dda4b26-51b0-4287-ac70-8378321bddd8","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID2dda4b26-51b0-4287-ac70-8378321bddd8"}},{"type":"Message","id":"EIDe709955a-5581-40ae-97b9-f78531eb2891","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDe709955a-5581-40ae-97b9-f78531eb2891"}},{"type":"Message","id":"EIDa7e2a55a-cac5-424b-9a2e-6104f86deaba","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDa7e2a55a-cac5-424b-9a2e-6104f86deaba"}},{"type":"Message","id":"EID73abf242-0abc-48d6-aa56-0f2da6cd71a9","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID73abf242-0abc-48d6-aa56-0f2da6cd71a9"}},{"type":"ServiceEndpoint","id":"EIDc8995433-2d91-4104-baa2-dd2350bc7c0a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDf0322a80-b1de-42ec-8e5d-37d7d39229da","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDf0322a80-b1de-42ec-8e5d-37d7d39229da"}},{"type":"ServiceResponse","id":"EID4d9df526-8a8a-4bb5-af78-77d50d6a0790","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID4d9df526-8a8a-4bb5-af78-77d50d6a0790"}},{"type":"GetParameter","id":"EID79220a63-3f57-4ac8-b4ef-5a5c1e030d04","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID3171ccc3-e366-41fd-b9af-8ab1d95c6723","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDe42ad76f-74e5-43d1-9866-0d6a5d078a44","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDe42ad76f-74e5-43d1-9866-0d6a5d078a44"}},{"type":"Message","id":"EIDd4df6c06-a041-45e7-933a-dbb68906ae9f","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDd4df6c06-a041-45e7-933a-dbb68906ae9f"}},{"type":"ServiceEndpoint","id":"EID6f84c229-92f3-467e-8896-c94e31b2607f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDcd5852a8-19fb-4751-b5db-fc41e9fabfd3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDcac6c23f-e875-4714-b15a-537843d037a8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDb0812f57-4bd5-4850-a880-0b9edc732a64","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDe700236e-2c03-474f-a783-d226b8bb5b03","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID4bfdfd75-1bb6-4765-a910-b306cffcb034","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID44808b7e-1b81-4f3b-9a64-25f6763d3d63","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID44808b7e-1b81-4f3b-9a64-25f6763d3d63"}},{"type":"ServiceResponse","id":"EID82f88977-7aca-4090-88c4-1a592ad2a96f","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID82f88977-7aca-4090-88c4-1a592ad2a96f"}},{"type":"ServiceResponse","id":"EID223226fa-f325-4a48-bf72-183bd533e18a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID223226fa-f325-4a48-bf72-183bd533e18a"}},{"type":"ServiceResponse","id":"EIDae9aebf4-451c-43ee-8f6a-f77d5008c5a7","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDae9aebf4-451c-43ee-8f6a-f77d5008c5a7"}},{"type":"ServiceEndpoint","id":"EID4979e323-d9f7-4655-b9e7-3ae160e4be2e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID95211de4-c0b5-4471-90db-3e4b97a56055","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID6c90dcfb-61c5-41fc-a964-8167c403b5db","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID6c90dcfb-61c5-41fc-a964-8167c403b5db"}},{"type":"GetParameter","id":"EID922faf2f-c277-4bb7-8bd6-a8e088c1fee8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID75cce2c9-d508-4113-8422-76cc9cbce953","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID584a0e1a-a400-4cfa-be88-1ea03795675b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID314816f6-301d-4e80-8516-27ca15895ca9","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID314816f6-301d-4e80-8516-27ca15895ca9"}},{"type":"ServiceEndpoint","id":"EID43b5f5a5-bdc2-45b0-9a78-341937f2bdbc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID5c70df78-f1f4-4e90-a44b-34bbfb70ec01","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID9e41de08-27ee-4328-a2ce-93bae427ddaa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDddb6162a-0fbb-4b6b-a04c-4d7af2bd40ec","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDddb6162a-0fbb-4b6b-a04c-4d7af2bd40ec"}},{"type":"ServiceEndpoint","id":"EID6892d211-32f8-4bde-b3e0-cd31ac4b7023","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID6b626367-30a5-444b-bbb1-635636e37c73","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID6b626367-30a5-444b-bbb1-635636e37c73"}},{"type":"ServiceResponse","id":"EIDfc21f895-c053-4407-8f5c-d0f412041c2f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDfc21f895-c053-4407-8f5c-d0f412041c2f"}},{"type":"Error","id":"EIDcd0ed56b-08d9-4b73-8c38-caef9bf7c142","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDcd0ed56b-08d9-4b73-8c38-caef9bf7c142"}},{"type":"ServiceResponse","id":"EID8e35f894-a904-4909-b049-db0e2f5a314a","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID8e35f894-a904-4909-b049-db0e2f5a314a"}},{"type":"ServiceResponse","id":"EID27bc8592-5ae4-4efa-b8f3-fa95affac2d7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID27bc8592-5ae4-4efa-b8f3-fa95affac2d7"}},{"type":"ServiceResponse","id":"EID612be621-f253-4e6a-8d4f-6443475fae0b","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID612be621-f253-4e6a-8d4f-6443475fae0b"}},{"type":"ServiceEndpoint","id":"EID2134ae01-5f95-414a-969b-107be0545e37","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EIDddd3ebb6-e2f4-41b1-83b8-1152afc3ac25","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID09ca21fb-ae1e-4277-a620-c16b3b74a6d5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID7d877d66-d137-45e5-9176-44887808189a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDcc025047-cb67-4eb3-853b-d0f4d37fd510","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDcc025047-cb67-4eb3-853b-d0f4d37fd510"}},{"type":"Message","id":"EID92065d3b-5b85-4f1f-a4d2-205b52166331","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID92065d3b-5b85-4f1f-a4d2-205b52166331"}},{"type":"GetParameter","id":"EID8124e468-d45e-41b4-bccc-a89e1077193d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EIDce5ef135-b83e-4943-8198-2af8ffd4f39e","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDce5ef135-b83e-4943-8198-2af8ffd4f39e"}},{"type":"Message","id":"EIDb217275e-9a92-4826-b5f9-ae5a2db3fac3","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDb217275e-9a92-4826-b5f9-ae5a2db3fac3"}},{"type":"Error","id":"EIDab575900-791a-4fc7-a267-cf159f0d3e70","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDab575900-791a-4fc7-a267-cf159f0d3e70"}},{"type":"ServiceResponse","id":"EIDcab5f12f-3962-4943-853d-d74a6a8f8c84","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDcab5f12f-3962-4943-853d-d74a6a8f8c84"}},{"type":"Message","id":"EID269e0455-83e4-4029-bc49-4fecf4fadab0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID269e0455-83e4-4029-bc49-4fecf4fadab0"}},{"type":"GetParameter","id":"EIDccff1e2f-df29-4ba5-96ef-93c3bc585e39","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID15bd39dc-b933-4fe6-8a67-14b7035d03cb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDf0a103aa-b10f-43b5-8fc2-e65695afea0d","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDf0a103aa-b10f-43b5-8fc2-e65695afea0d"}},{"type":"Message","id":"EID809ea7a9-e8bc-409e-844d-0cd780e65209","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID809ea7a9-e8bc-409e-844d-0cd780e65209"}},{"type":"GetParameter","id":"EIDabf31dac-1ff1-404e-b0cb-fad68822db53","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID2fe729d4-0a9a-4503-87e6-5c8a7ddcf882","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID2fe729d4-0a9a-4503-87e6-5c8a7ddcf882"}},{"type":"GetParameter","id":"EID74046f49-734f-4133-a0d4-cf7b961d8762","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID94cf36e1-3cd6-4c24-83d9-4a5a6feaa548","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID94cf36e1-3cd6-4c24-83d9-4a5a6feaa548"}},{"type":"Error","id":"EIDecd5bb94-fcb9-4dcf-92ee-997b3566d693","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDecd5bb94-fcb9-4dcf-92ee-997b3566d693"}},{"type":"ServiceResponse","id":"EID53a13034-afd8-437b-9a32-469c9c1f971d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID53a13034-afd8-437b-9a32-469c9c1f971d"}},{"type":"Message","id":"EID2fd279a9-10d6-4047-99c6-7265befa749d","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID2fd279a9-10d6-4047-99c6-7265befa749d"}},{"type":"GetParameter","id":"EIDda7e0403-49ea-4d12-9cd7-335614445bea","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EID02661a90-d02a-4c0c-b0bf-b0d1e3a2828e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID02661a90-d02a-4c0c-b0bf-b0d1e3a2828e"}},{"type":"GetParameter","id":"EID139d07e8-befa-4b3d-988d-3e2fcaa5a008","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID3e894d74-e740-4adb-945c-acb32d8a20e0","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID3e894d74-e740-4adb-945c-acb32d8a20e0"}},{"type":"ServiceEndpoint","id":"EIDa98656f2-e06e-4daf-ae23-59d62649b97c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID247844ca-d725-404e-ba32-ddfceb27f36f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID4747a900-6f5f-4a95-8a5b-e62c0cd79596","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID32f6c21b-c5fc-4575-bcd8-0efda618f665","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID32f6c21b-c5fc-4575-bcd8-0efda618f665"}},{"type":"ServiceResponse","id":"EID0888885c-0f59-49f0-a2a1-fd192efcb00b","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID0888885c-0f59-49f0-a2a1-fd192efcb00b"}},{"type":"ServiceResponse","id":"EID005f58bc-35d4-410f-b40e-bf0399838145","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID005f58bc-35d4-410f-b40e-bf0399838145"}},{"type":"GetParameter","id":"EID7b68dacb-3a9e-4f99-9ea1-2ce2029bd2da","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDe27cd70e-b44a-4315-a873-74a313932896","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EID31babe34-c1cf-4fa5-bc44-e98a322317a2","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID31babe34-c1cf-4fa5-bc44-e98a322317a2"}},{"type":"ServiceResponse","id":"EIDc2701796-d75f-4398-9f56-c80423b2e12f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EIDc2701796-d75f-4398-9f56-c80423b2e12f"}},{"type":"GetParameter","id":"EID83c3103d-f541-4157-b531-c5d28880915d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID28c6faac-c5bd-4bca-b089-29ac0f376981","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID28c6faac-c5bd-4bca-b089-29ac0f376981"}},{"type":"Message","id":"EID1fc59dd1-30d9-4a7d-ad1a-c42e9a5dfbf6","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID943c9e86-1b2e-48a0-9efc-786e31b893cd/Attachments/EID1fc59dd1-30d9-4a7d-ad1a-c42e9a5dfbf6"}},{"type":"GetParameter","id":"EID4462d07a-5d59-47cc-a8ab-05d156349a6d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDeae1fada-4c5b-4189-bb26-3fa6cf93a411","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:17:17Z","duration":12019,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:18:01.609 [print] EID171b62d4-e569-4119-b0d4-784ccdbc45d3
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:18:01.609 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:18:01.609 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:18:01.609 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:18:01.610 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/171b62d4-e569-4119-b0d4-784ccdbc45d3.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:18:01.610 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/171b62d4-e569-4119-b0d4-784ccdbc45d3.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:18:01.610 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID171b62d4-e569-4119-b0d4-784ccdbc45d3/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.005
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.004
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.007
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
13:18:01.629 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
13:18:01.631 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
13:18:01.631 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
58.289
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:21:41.081 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 7.076
13:21:41.082 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 249
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml"}}}

13:21:48.156 response time in milliseconds: 6313.07
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:21:47 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:21:45 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/5671eeba-0f9e-4105-b886-fa69717693d3.json","testRuns":{"TestRun":{"id":"EID5671eeba-0f9e-4105-b886-fa69717693d3","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:21:44.774Z","testTasks":{"TestTask":{"id":"EID0ec93d05-66a0-45b6-8ac1-6c776ca0c5b5","parent":{"ref":"EID5671eeba-0f9e-4105-b886-fa69717693d3"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID20a5d93d-0e64-4932-a76f-15f9cafc52bf"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID5671eeba-0f9e-4105-b886-fa69717693d3/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID20a5d93d-0e64-4932-a76f-15f9cafc52bf","remoteResource":"https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:21:41.521Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:21:43.374Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:21:48.159 [print] EID5671eeba-0f9e-4105-b886-fa69717693d3
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:21:48.159 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:21:48.159 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:21:48.159 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/5671eeba-0f9e-4105-b886-fa69717693d3.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:21:48.160 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID5671eeba-0f9e-4105-b886-fa69717693d3/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.002
13:21:48.163 [print] statuspath TestRuns/EID5671eeba-0f9e-4105-b886-fa69717693d3
* print 'progresspath ', progresspath 0.000
13:21:48.163 [print] progresspath  TestRuns/EID5671eeba-0f9e-4105-b886-fa69717693d3/progress
Given path progresspath 0.000
When method GET 0.540
13:21:48.163 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5671eeba-0f9e-4105-b886-fa69717693d3/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:48.704 response time in milliseconds: 539.88
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:21:48 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:21:44 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:44 UTC 2020)","27.10.2020 13:21:44 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:44 - Preparing 1 Test Task:","27.10.2020 13:21:44 -  TestTask 1 (0ec93d05-66a0-45b6-8ac1-6c776ca0c5b5)","27.10.2020 13:21:44 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:44 -  with parameters: ","27.10.2020 13:21:44 - etf.testcases = *","27.10.2020 13:21:44 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:44 - Setting state to CREATED","27.10.2020 13:21:44 - Changed state from CREATED to INITIALIZING"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:21:48.704 [print] {
  "val": "0",
  "max": "240",
  "log": [
    "27.10.2020 13:21:44 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:44 UTC 2020)",
    "27.10.2020 13:21:44 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:21:44 - Preparing 1 Test Task:",
    "27.10.2020 13:21:44 -  TestTask 1 (0ec93d05-66a0-45b6-8ac1-6c776ca0c5b5)",
    "27.10.2020 13:21:44 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:21:44 -  with parameters: ",
    "27.10.2020 13:21:44 - etf.testcases = *",
    "27.10.2020 13:21:44 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:21:44 - Setting state to CREATED",
    "27.10.2020 13:21:44 - Changed state from CREATED to INITIALIZING"
  ]
}
Given path progresspath 0.000
When method GET 40.657
13:21:48.704 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5671eeba-0f9e-4105-b886-fa69717693d3/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:49.221 response time in milliseconds: 516.10
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:21:49 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:21:44 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:44 UTC 2020)","27.10.2020 13:21:44 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:44 - Preparing 1 Test Task:","27.10.2020 13:21:44 -  TestTask 1 (0ec93d05-66a0-45b6-8ac1-6c776ca0c5b5)","27.10.2020 13:21:44 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:44 -  with parameters: ","27.10.2020 13:21:44 - etf.testcases = *","27.10.2020 13:21:44 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:44 - Setting state to CREATED","27.10.2020 13:21:44 - Changed state from CREATED to INITIALIZING"]}

13:21:49.221 retry condition not satisfied: response.val == response.max
13:21:49.221 sleeping before retry #1
13:21:54.222 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5671eeba-0f9e-4105-b886-fa69717693d3/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:54.737 response time in milliseconds: 514.03
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:21:54 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:21:44 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:44 UTC 2020)","27.10.2020 13:21:44 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:44 - Preparing 1 Test Task:","27.10.2020 13:21:44 -  TestTask 1 (0ec93d05-66a0-45b6-8ac1-6c776ca0c5b5)","27.10.2020 13:21:44 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:44 -  with parameters: ","27.10.2020 13:21:44 - etf.testcases = *","27.10.2020 13:21:44 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:44 - Setting state to CREATED","27.10.2020 13:21:44 - Changed state from CREATED to INITIALIZING"]}

13:21:54.741 retry condition not satisfied: response.val == response.max
13:21:54.741 sleeping before retry #2
13:21:59.742 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5671eeba-0f9e-4105-b886-fa69717693d3/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:00.250 response time in milliseconds: 507.70
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:22:00 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:21:44 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:44 UTC 2020)","27.10.2020 13:21:44 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:44 - Preparing 1 Test Task:","27.10.2020 13:21:44 -  TestTask 1 (0ec93d05-66a0-45b6-8ac1-6c776ca0c5b5)","27.10.2020 13:21:44 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:44 -  with parameters: ","27.10.2020 13:21:44 - etf.testcases = *","27.10.2020 13:21:44 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:44 - Setting state to CREATED","27.10.2020 13:21:44 - Changed state from CREATED to INITIALIZING"]}

13:22:00.252 retry condition not satisfied: response.val == response.max
13:22:00.252 sleeping before retry #3
13:22:05.253 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5671eeba-0f9e-4105-b886-fa69717693d3/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:05.766 response time in milliseconds: 512.47
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:22:05 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"34","max":"35","log":["27.10.2020 13:21:44 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:44 UTC 2020)","27.10.2020 13:21:44 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:44 - Preparing 1 Test Task:","27.10.2020 13:21:44 -  TestTask 1 (0ec93d05-66a0-45b6-8ac1-6c776ca0c5b5)","27.10.2020 13:21:44 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:44 -  with parameters: ","27.10.2020 13:21:44 - etf.testcases = *","27.10.2020 13:21:44 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:44 - Setting state to CREATED","27.10.2020 13:21:44 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:01 - Starting TestRun.5671eeba-0f9e-4105-b886-fa69717693d3 at 2020-10-27T13:22:03Z","27.10.2020 13:22:03 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:03 - Project Properties: ","27.10.2020 13:22:03 - etf.testcases - * ","27.10.2020 13:22:03 - serviceEndpoint - https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml ","27.10.2020 13:22:03 - username -  ","27.10.2020 13:22:03 - authUser -  ","27.10.2020 13:22:03 - authMethod - basic ","27.10.2020 13:22:03 - TestRunTask initialized"]}

13:22:05.766 retry condition not satisfied: response.val == response.max
13:22:05.766 sleeping before retry #4
13:22:10.767 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5671eeba-0f9e-4105-b886-fa69717693d3/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:11.281 response time in milliseconds: 513.30
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:22:11 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"141","max":"142","log":["27.10.2020 13:21:44 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:44 UTC 2020)","27.10.2020 13:21:44 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:44 - Preparing 1 Test Task:","27.10.2020 13:21:44 -  TestTask 1 (0ec93d05-66a0-45b6-8ac1-6c776ca0c5b5)","27.10.2020 13:21:44 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:44 -  with parameters: ","27.10.2020 13:21:44 - etf.testcases = *","27.10.2020 13:21:44 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:44 - Setting state to CREATED","27.10.2020 13:21:44 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:01 - Starting TestRun.5671eeba-0f9e-4105-b886-fa69717693d3 at 2020-10-27T13:22:03Z","27.10.2020 13:22:03 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:03 - Project Properties: ","27.10.2020 13:22:03 - etf.testcases - * ","27.10.2020 13:22:03 - serviceEndpoint - https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml ","27.10.2020 13:22:03 - username -  ","27.10.2020 13:22:03 - authUser -  ","27.10.2020 13:22:03 - authMethod - basic ","27.10.2020 13:22:03 - TestRunTask initialized","27.10.2020 13:22:08 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027"]}

13:22:11.281 retry condition not satisfied: response.val == response.max
13:22:11.281 sleeping before retry #5
13:22:16.282 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5671eeba-0f9e-4105-b886-fa69717693d3/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:16.791 response time in milliseconds: 508.60
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:22:16 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"203","max":"204","log":["27.10.2020 13:21:44 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:44 UTC 2020)","27.10.2020 13:21:44 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:44 - Preparing 1 Test Task:","27.10.2020 13:21:44 -  TestTask 1 (0ec93d05-66a0-45b6-8ac1-6c776ca0c5b5)","27.10.2020 13:21:44 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:44 -  with parameters: ","27.10.2020 13:21:44 - etf.testcases = *","27.10.2020 13:21:44 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:44 - Setting state to CREATED","27.10.2020 13:21:44 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:01 - Starting TestRun.5671eeba-0f9e-4105-b886-fa69717693d3 at 2020-10-27T13:22:03Z","27.10.2020 13:22:03 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:03 - Project Properties: ","27.10.2020 13:22:03 - etf.testcases - * ","27.10.2020 13:22:03 - serviceEndpoint - https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml ","27.10.2020 13:22:03 - username -  ","27.10.2020 13:22:03 - authUser -  ","27.10.2020 13:22:03 - authMethod - basic ","27.10.2020 13:22:03 - TestRunTask initialized","27.10.2020 13:22:08 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:22:13 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:22:13 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:22:13 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:22:14 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:22:14 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

13:22:16.791 retry condition not satisfied: response.val == response.max
13:22:16.791 sleeping before retry #6
13:22:21.792 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5671eeba-0f9e-4105-b886-fa69717693d3/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:22.351 response time in milliseconds: 558.35
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:22:22 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"203","max":"204","log":["27.10.2020 13:21:44 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:44 UTC 2020)","27.10.2020 13:21:44 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:44 - Preparing 1 Test Task:","27.10.2020 13:21:44 -  TestTask 1 (0ec93d05-66a0-45b6-8ac1-6c776ca0c5b5)","27.10.2020 13:21:44 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:44 -  with parameters: ","27.10.2020 13:21:44 - etf.testcases = *","27.10.2020 13:21:44 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:44 - Setting state to CREATED","27.10.2020 13:21:44 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:01 - Starting TestRun.5671eeba-0f9e-4105-b886-fa69717693d3 at 2020-10-27T13:22:03Z","27.10.2020 13:22:03 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:03 - Project Properties: ","27.10.2020 13:22:03 - etf.testcases - * ","27.10.2020 13:22:03 - serviceEndpoint - https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml ","27.10.2020 13:22:03 - username -  ","27.10.2020 13:22:03 - authUser -  ","27.10.2020 13:22:03 - authMethod - basic ","27.10.2020 13:22:03 - TestRunTask initialized","27.10.2020 13:22:08 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:22:13 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:22:13 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:22:13 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:22:14 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:22:14 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

13:22:22.351 retry condition not satisfied: response.val == response.max
13:22:22.351 sleeping before retry #7
13:22:27.352 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5671eeba-0f9e-4105-b886-fa69717693d3/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:29.361 response time in milliseconds: 2008.35
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Tue, 27 Oct 2020 13:22:29 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:22:29.361 retry condition satisfied
* print response 0.000
13:22:29.361 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 9.995
13:22:29.362 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID5671eeba-0f9e-4105-b886-fa69717693d3
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:39.352 response time in milliseconds: 9034.40
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Cache-Control: public, max-age=120
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Tue, 27 Oct 2020 13:22:38 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Last-Modified: Tue, 27 Oct 2020 13:22:08 GMT
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/5671eeba-0f9e-4105-b886-fa69717693d3.json","testRuns":{"TestRun":{"id":"EID5671eeba-0f9e-4105-b886-fa69717693d3","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:21:44.774Z","testTasks":{"TestTask":{"id":"EID0ec93d05-66a0-45b6-8ac1-6c776ca0c5b5","parent":{"ref":"EID5671eeba-0f9e-4105-b886-fa69717693d3"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID20a5d93d-0e64-4932-a76f-15f9cafc52bf"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EIDb04d4407-fa69-43c0-891a-77acbc251073"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID5671eeba-0f9e-4105-b886-fa69717693d3/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID20a5d93d-0e64-4932-a76f-15f9cafc52bf","remoteResource":"https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:21:41.521Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:21:43.374Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://service.pdok.nl/cbs/pd/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EIDb04d4407-fa69-43c0-891a-77acbc251073","testObject":{"ref":"EID20a5d93d-0e64-4932-a76f-15f9cafc52bf"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a39054a-0175-1000-53a5-41d359ca6871","testCaseResults":{"TestCaseResult":[{"id":"EID6a39054a-0175-1000-e707-71912d0e73f0","testStepResults":{"TestStepResult":[{"id":"EID6a39054a-0175-1000-3f1d-8862cc74e4b6","parent":{"ref":"EID6a39054a-0175-1000-e707-71912d0e73f0"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:22:03Z","duration":55,"status":"PASSED"},{"id":"EID6a390582-0175-1000-059e-864375e64142","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3906d3-0175-1000-aaa8-1e236afee0da","parent":{"ref":"EID6a390582-0175-1000-059e-864375e64142"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:22:03Z","duration":0,"status":"PASSED"},{"id":"EID6a3906d3-0175-1000-4ce6-906c9096ea76","parent":{"ref":"EID6a390582-0175-1000-059e-864375e64142"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:22:03Z","duration":0,"status":"PASSED"},{"id":"EID6a3906d3-0175-1000-9592-5a6c526b50ed","parent":{"ref":"EID6a390582-0175-1000-059e-864375e64142"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:22:03Z","duration":0,"status":"PASSED"},{"id":"EID6a3906d3-0175-1000-9cd3-534dfa12bbd5","parent":{"ref":"EID6a390582-0175-1000-059e-864375e64142"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:22:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID22a444f7-4e1f-4364-8108-f9487c5855b4"},{"ref":"EID3dbd82e6-8908-4633-bc69-0e76981e203d"},{"ref":"EID1d11101d-1b17-4558-a197-a45db917c11d"}]},"parent":{"ref":"EID6a39054a-0175-1000-e707-71912d0e73f0"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:22:03Z","duration":139,"status":"PASSED"}]},"parent":{"ref":"EID6a39054a-0175-1000-53a5-41d359ca6871"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:22:03Z","duration":393,"status":"PASSED"},{"id":"EID6a3906d3-0175-1000-4065-6391f235ebea","testStepResults":{"TestStepResult":{"id":"EID6a3906d3-0175-1000-e88e-521f6a28fb05","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39073f-0175-1000-078d-ba67c2b22ae5","parent":{"ref":"EID6a3906d3-0175-1000-e88e-521f6a28fb05"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:22:03Z","duration":0,"status":"PASSED"},{"id":"EID6a39073f-0175-1000-9222-313299f49b56","parent":{"ref":"EID6a3906d3-0175-1000-e88e-521f6a28fb05"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:22:03Z","duration":0,"status":"PASSED"},{"id":"EID6a39073f-0175-1000-6bf1-7a07aafe8780","parent":{"ref":"EID6a3906d3-0175-1000-e88e-521f6a28fb05"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:22:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDada2f8a4-3ac0-47e3-8d15-a570a10e199e"},{"ref":"EIDb1540b57-458f-44b1-b3a5-1c1ef2936121"},{"ref":"EID2d625686-13f3-40da-99ea-b013020b98f6"}]},"parent":{"ref":"EID6a3906d3-0175-1000-4065-6391f235ebea"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:22:03Z","duration":35,"status":"PASSED"}},"parent":{"ref":"EID6a39054a-0175-1000-53a5-41d359ca6871"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:22:03Z","duration":108,"status":"PASSED"}]},"parent":{"ref":"EIDb04d4407-fa69-43c0-891a-77acbc251073"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:22:03Z","duration":501,"status":"PASSED"},{"id":"EID6a39073f-0175-1000-8818-85589091635b","testCaseResults":{"TestCaseResult":[{"id":"EID6a39073f-0175-1000-7844-4fd2b248ada3","testStepResults":{"TestStepResult":[{"id":"EID6a39073f-0175-1000-ee1a-b584358557bd","parent":{"ref":"EID6a39073f-0175-1000-7844-4fd2b248ada3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:22:03Z","duration":27,"status":"PASSED"},{"id":"EID6a39073f-0175-1000-2154-6fb64ab6946b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3907bf-0175-1000-078c-d2ae10d57f4b","parent":{"ref":"EID6a39073f-0175-1000-2154-6fb64ab6946b"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:22:03Z","duration":0,"status":"PASSED"},{"id":"EID6a3907bf-0175-1000-d17c-08ae8113b262","parent":{"ref":"EID6a39073f-0175-1000-2154-6fb64ab6946b"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:22:03Z","duration":0,"status":"PASSED"},{"id":"EID6a3907bf-0175-1000-5923-89f7c09a5454","parent":{"ref":"EID6a39073f-0175-1000-2154-6fb64ab6946b"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:22:03Z","duration":0,"status":"PASSED"},{"id":"EID6a3907bf-0175-1000-2816-fd8e92a0c0f1","parent":{"ref":"EID6a39073f-0175-1000-2154-6fb64ab6946b"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:22:03Z","duration":0,"status":"PASSED"},{"id":"EID6a3907bf-0175-1000-e2e4-951564597738","parent":{"ref":"EID6a39073f-0175-1000-2154-6fb64ab6946b"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:22:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3a5c7e71-716b-4b36-bf75-26fbf98b1d25"},{"ref":"EID75902964-81ae-4b5c-86ee-92d852a44b51"},{"ref":"EIDcea02aac-6cc4-4967-9618-a7de08bb23d1"}]},"parent":{"ref":"EID6a39073f-0175-1000-7844-4fd2b248ada3"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:22:03Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6a39073f-0175-1000-8818-85589091635b"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:22:03Z","duration":231,"status":"PASSED"},{"id":"EID6a390826-0175-1000-3d94-e6017d57c312","testStepResults":{"TestStepResult":[{"id":"EID6a390826-0175-1000-f113-4ce884af763c","attachments":{"attachment":[{"ref":"EIDf0df3b48-f942-4a35-a538-bdf2ee5bf472"},{"ref":"EID120d9261-7cf8-49fa-a766-112c65a9499c"}]},"parent":{"ref":"EID6a390826-0175-1000-3d94-e6017d57c312"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:22:03Z","duration":69,"status":"PASSED"},{"id":"EID6a390895-0175-1000-dfbb-9bc9a5dd4349","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a390938-0175-1000-3681-426c5b2dbe9e","parent":{"ref":"EID6a390895-0175-1000-dfbb-9bc9a5dd4349"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:22:04Z","duration":0,"status":"PASSED"},{"id":"EID6a390938-0175-1000-282e-d8517472fcd4","parent":{"ref":"EID6a390895-0175-1000-dfbb-9bc9a5dd4349"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:22:04Z","duration":0,"status":"PASSED"},{"id":"EID6a390938-0175-1000-b7d5-01d3affe0ae9","parent":{"ref":"EID6a390895-0175-1000-dfbb-9bc9a5dd4349"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:22:04Z","duration":0,"status":"PASSED"},{"id":"EID6a390938-0175-1000-3d95-a6620ecf6421","parent":{"ref":"EID6a390895-0175-1000-dfbb-9bc9a5dd4349"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:22:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8fe90792-162c-4ee2-9b71-1b0ea4590ad7"},{"ref":"EID578feed8-00e0-4472-a6ba-bbb4b83f3abd"},{"ref":"EIDcc606c96-c924-4b4f-9ac3-7962f9bff47f"}]},"parent":{"ref":"EID6a390826-0175-1000-3d94-e6017d57c312"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:22:04Z","duration":35,"status":"PASSED"}]},"parent":{"ref":"EID6a39073f-0175-1000-8818-85589091635b"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:22:03Z","duration":274,"status":"PASSED"},{"id":"EID6a390939-0175-1000-f3d7-63f33a1de28a","testStepResults":{"TestStepResult":[{"id":"EID6a390939-0175-1000-b5fe-ac2e0b00c27f","attachments":{"attachment":[{"ref":"EID89caf261-49ff-44a6-b467-53a6100527d8"},{"ref":"EID8dc91343-e83b-4c5c-8d0d-5210669116f1"}]},"parent":{"ref":"EID6a390939-0175-1000-f3d7-63f33a1de28a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:22:04Z","duration":142,"status":"PASSED"},{"id":"EID6a390a01-0175-1000-bafa-11dcd119fea2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a390a90-0175-1000-ebb0-919606b9d918","parent":{"ref":"EID6a390a01-0175-1000-bafa-11dcd119fea2"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:22:04Z","duration":0,"status":"PASSED"},{"id":"EID6a390a90-0175-1000-4650-1ecd255aa81d","parent":{"ref":"EID6a390a01-0175-1000-bafa-11dcd119fea2"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:22:04Z","duration":0,"status":"PASSED"},{"id":"EID6a390a90-0175-1000-24a4-06a791d13f1f","parent":{"ref":"EID6a390a01-0175-1000-bafa-11dcd119fea2"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:22:04Z","duration":0,"status":"PASSED"},{"id":"EID6a390a90-0175-1000-6e5b-dc47cb8f6302","parent":{"ref":"EID6a390a01-0175-1000-bafa-11dcd119fea2"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:22:04Z","duration":0,"status":"PASSED"},{"id":"EID6a390a90-0175-1000-f4b9-2e69619bef45","parent":{"ref":"EID6a390a01-0175-1000-bafa-11dcd119fea2"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:22:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9a139ae2-0ce8-4119-8022-794266f50269"},{"ref":"EID1a491d92-a84d-40fa-875b-7c8957b86a77"},{"ref":"EID5a68288e-b349-457f-9200-51625d57ee46"}]},"parent":{"ref":"EID6a390939-0175-1000-f3d7-63f33a1de28a"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:22:04Z","duration":31,"status":"PASSED"}]},"parent":{"ref":"EID6a39073f-0175-1000-8818-85589091635b"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:22:04Z","duration":344,"status":"PASSED"},{"id":"EID6a390a91-0175-1000-e2a3-4c8371d97b0c","testStepResults":{"TestStepResult":[{"id":"EID6a390a91-0175-1000-0b92-71d3905eb870","attachments":{"attachment":[{"ref":"EID5551cea7-b631-47d5-bd0a-a7ff2d44151f"},{"ref":"EID55190bbb-0c95-44df-9828-48893c903f9d"}]},"parent":{"ref":"EID6a390a91-0175-1000-e2a3-4c8371d97b0c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:22:04Z","duration":175,"status":"PASSED"},{"id":"EID6a390b78-0175-1000-162e-d701273a457a","parent":{"ref":"EID6a390a91-0175-1000-e2a3-4c8371d97b0c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:22:04Z","duration":0,"status":"PASSED"},{"id":"EID6a390b78-0175-1000-351a-ff22f79985ae","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a390c13-0175-1000-412c-237fe0c32c23","parent":{"ref":"EID6a390b78-0175-1000-351a-ff22f79985ae"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:22:04Z","duration":0,"status":"PASSED"},{"id":"EID6a390c13-0175-1000-c75f-794be8aab167","parent":{"ref":"EID6a390b78-0175-1000-351a-ff22f79985ae"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:22:04Z","duration":0,"status":"PASSED"},{"id":"EID6a390c13-0175-1000-8729-3f155952d5cc","parent":{"ref":"EID6a390b78-0175-1000-351a-ff22f79985ae"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:22:04Z","duration":0,"status":"PASSED"},{"id":"EID6a390c13-0175-1000-ddc3-9bcd8477d7d2","parent":{"ref":"EID6a390b78-0175-1000-351a-ff22f79985ae"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:22:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf9c8f1d6-3d7f-4450-8f91-119eeebea520"},{"ref":"EID014ab027-a565-4dc8-87c6-283ad5a96ae2"},{"ref":"EIDc4190b8e-1d27-4786-ba00-882bd56f5827"}]},"parent":{"ref":"EID6a390a91-0175-1000-e2a3-4c8371d97b0c"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:22:04Z","duration":24,"status":"PASSED"},{"id":"EID6a390c13-0175-1000-91fa-6f95198bffbd","attachments":{"attachment":{"ref":"EID4ec00fbc-8b34-480e-ac91-383259b6fe89"}},"parent":{"ref":"EID6a390a91-0175-1000-e2a3-4c8371d97b0c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:22:04Z","duration":9,"status":"PASSED"},{"id":"EID6a390c41-0175-1000-7107-d6ac4bacdcaa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a390ce0-0175-1000-f59f-5936cb67dc91","parent":{"ref":"EID6a390c41-0175-1000-7107-d6ac4bacdcaa"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:22:05Z","duration":0,"status":"PASSED"},{"id":"EID6a390ce0-0175-1000-b13e-26b8bcf91820","parent":{"ref":"EID6a390c41-0175-1000-7107-d6ac4bacdcaa"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:22:05Z","duration":0,"status":"PASSED"},{"id":"EID6a390ce0-0175-1000-8fa2-5a76f08f0c4e","parent":{"ref":"EID6a390c41-0175-1000-7107-d6ac4bacdcaa"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:22:05Z","duration":0,"status":"PASSED"},{"id":"EID6a390ce0-0175-1000-a2fd-ae15b0bddf13","parent":{"ref":"EID6a390c41-0175-1000-7107-d6ac4bacdcaa"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:22:05Z","duration":0,"status":"PASSED"},{"id":"EID6a390ce0-0175-1000-06b7-423bf1c181b5","parent":{"ref":"EID6a390c41-0175-1000-7107-d6ac4bacdcaa"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:22:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3cba3340-42c9-4915-8a78-795e5a60bc0f"},{"ref":"EID8f03e4fb-7f2b-4c61-af0a-cf6dbf8592c2"},{"ref":"EIDb45ab409-7d58-4141-a0a1-c9e722ff3f8c"}]},"parent":{"ref":"EID6a390a91-0175-1000-e2a3-4c8371d97b0c"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:22:04Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6a39073f-0175-1000-8818-85589091635b"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:22:04Z","duration":592,"status":"PASSED"},{"id":"EID6a390ce1-0175-1000-4818-d0f8c920da7d","testStepResults":{"TestStepResult":[{"id":"EID6a390ced-0175-1000-340c-c43c2946e8da","attachments":{"attachment":[{"ref":"EID8457f1e6-5861-45a0-ba16-785fbf3085d1"},{"ref":"EIDd9d16264-c14c-4be9-a6b1-890ade978cc5"}]},"parent":{"ref":"EID6a390ce1-0175-1000-4818-d0f8c920da7d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:22:05Z","duration":163,"status":"PASSED"},{"id":"EID6a390de0-0175-1000-f611-daaea5a7e230","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a390e64-0175-1000-d916-4f9eb7e662f6","parent":{"ref":"EID6a390de0-0175-1000-f611-daaea5a7e230"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:22:05Z","duration":0,"status":"PASSED"},{"id":"EID6a390e64-0175-1000-95c6-6ee369ab4ec3","parent":{"ref":"EID6a390de0-0175-1000-f611-daaea5a7e230"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:22:05Z","duration":0,"status":"PASSED"},{"id":"EID6a390e64-0175-1000-b8ca-2be26c7dab7b","parent":{"ref":"EID6a390de0-0175-1000-f611-daaea5a7e230"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:22:05Z","duration":0,"status":"PASSED"},{"id":"EID6a390e64-0175-1000-908a-4b1f9846f6c6","parent":{"ref":"EID6a390de0-0175-1000-f611-daaea5a7e230"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:22:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8a8ca12d-9f75-41ec-ae46-e2420a01e785"},{"ref":"EID6ab7523f-089a-45c5-8e4a-e4da0536aaf8"},{"ref":"EID28f41e64-dcf0-46f2-b657-8eac045ee3b1"}]},"parent":{"ref":"EID6a390ce1-0175-1000-4818-d0f8c920da7d"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:22:05Z","duration":24,"status":"PASSED"}]},"parent":{"ref":"EID6a39073f-0175-1000-8818-85589091635b"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:22:05Z","duration":387,"status":"PASSED"},{"id":"EID6a390e64-0175-1000-44a9-fffde73cfa68","testStepResults":{"TestStepResult":[{"id":"EID6a390e6d-0175-1000-1b6e-1c93ce414b3c","attachments":{"attachment":[{"ref":"EID5a965140-56b6-4e3a-8dd5-4da8778459b9"},{"ref":"EID4d1da9f4-cd26-4646-9c3b-c2af3a509057"}]},"parent":{"ref":"EID6a390e64-0175-1000-44a9-fffde73cfa68"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:22:05Z","duration":87,"status":"PASSED"},{"id":"EID6a390efc-0175-1000-3aaa-27c81c0e37de","parent":{"ref":"EID6a390e64-0175-1000-44a9-fffde73cfa68"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:22:05Z","duration":0,"status":"PASSED"},{"id":"EID6a390efc-0175-1000-59f7-6e15ade3474a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a391063-0175-1000-236e-7b9af10354f3","parent":{"ref":"EID6a390efc-0175-1000-59f7-6e15ade3474a"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:22:06Z","duration":0,"status":"PASSED"},{"id":"EID6a391063-0175-1000-b25a-f2688933272b","parent":{"ref":"EID6a390efc-0175-1000-59f7-6e15ade3474a"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:22:06Z","duration":0,"status":"PASSED"},{"id":"EID6a391063-0175-1000-ce99-6e328710ddc6","parent":{"ref":"EID6a390efc-0175-1000-59f7-6e15ade3474a"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:22:06Z","duration":0,"status":"PASSED"},{"id":"EID6a391063-0175-1000-669a-aec257af1a66","parent":{"ref":"EID6a390efc-0175-1000-59f7-6e15ade3474a"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:22:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5792038a-af74-4202-8430-70b63c1f73ac"},{"ref":"EIDccca3d4f-36c7-4258-8aa8-04d008b709aa"},{"ref":"EIDa8054fa8-e9cc-489c-9d55-0ca94628ccf4"}]},"parent":{"ref":"EID6a390e64-0175-1000-44a9-fffde73cfa68"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:22:05Z","duration":142,"status":"PASSED"},{"id":"EID6a391063-0175-1000-0f54-a4dab21718d3","attachments":{"attachment":{"ref":"EID82657fc5-862f-4c8b-a1b7-86639ccfe883"}},"parent":{"ref":"EID6a390e64-0175-1000-44a9-fffde73cfa68"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:22:06Z","duration":17,"status":"PASSED"},{"id":"EID6a391082-0175-1000-9bfd-c9871cc46543","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39110b-0175-1000-d408-6dcac28d4788","parent":{"ref":"EID6a391082-0175-1000-9bfd-c9871cc46543"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:22:06Z","duration":0,"status":"PASSED"},{"id":"EID6a39110b-0175-1000-f570-01589712a57a","parent":{"ref":"EID6a391082-0175-1000-9bfd-c9871cc46543"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:22:06Z","duration":0,"status":"PASSED"},{"id":"EID6a39110b-0175-1000-a3a9-b8ca5c47dc18","parent":{"ref":"EID6a391082-0175-1000-9bfd-c9871cc46543"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:22:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID12416cc2-e756-4ed5-8577-62fd39e38b46"},{"ref":"EID9fae9b59-6681-4d86-b64e-b719ddf9843c"},{"ref":"EIDcc42b330-5bb7-4ed7-89ae-267c7b9f6307"}]},"parent":{"ref":"EID6a390e64-0175-1000-44a9-fffde73cfa68"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:22:06Z","duration":75,"status":"PASSED"},{"id":"EID6a39110b-0175-1000-91b3-105455522e2e","attachments":{"attachment":{"ref":"EIDc3f8947d-46e1-407f-9924-3a84b97f9605"}},"parent":{"ref":"EID6a390e64-0175-1000-44a9-fffde73cfa68"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-27T13:22:06Z","duration":1,"status":"PASSED"},{"id":"EID6a39113a-0175-1000-d75c-761b140bb88e","attachments":{"attachment":{"ref":"EID6bb0a629-5916-47df-bf4b-4f1a34feaa38"}},"parent":{"ref":"EID6a390e64-0175-1000-44a9-fffde73cfa68"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-27T13:22:06Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a39073f-0175-1000-8818-85589091635b"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:22:05Z","duration":736,"status":"PASSED"},{"id":"EID6a391145-0175-1000-ec2c-7f94cfafaf19","testStepResults":{"TestStepResult":[{"id":"EID6a391145-0175-1000-faa2-7f95ae2dcb24","attachments":{"attachment":[{"ref":"EID6fffdfe3-8e40-46a3-a8a0-61c16e9a006d"},{"ref":"EID05a7a34e-c6a5-48b7-ba35-70e57a960f79"}]},"parent":{"ref":"EID6a391145-0175-1000-ec2c-7f94cfafaf19"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:22:06Z","duration":98,"status":"PASSED"},{"id":"EID6a391217-0175-1000-e2be-aefc02de9b07","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39129b-0175-1000-652d-70146c9f9bd5","parent":{"ref":"EID6a391217-0175-1000-e2be-aefc02de9b07"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:22:06Z","duration":0,"status":"PASSED"},{"id":"EID6a39129b-0175-1000-14c4-153218470188","parent":{"ref":"EID6a391217-0175-1000-e2be-aefc02de9b07"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:22:06Z","duration":0,"status":"PASSED"},{"id":"EID6a39129b-0175-1000-d1ec-0d1007be9f30","parent":{"ref":"EID6a391217-0175-1000-e2be-aefc02de9b07"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:22:06Z","duration":0,"status":"PASSED"},{"id":"EID6a39129b-0175-1000-4b2f-fbecabcacfe0","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a391217-0175-1000-e2be-aefc02de9b07"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:22:06Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID12fc8156-7258-4fba-b186-8df78f9bdaab"},{"ref":"EIDd1c3ffae-2abc-4040-9215-c915e2ee2bdb"},{"ref":"EID44324c15-db3e-4288-9495-213341476d59"}]},"parent":{"ref":"EID6a391145-0175-1000-ec2c-7f94cfafaf19"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:22:06Z","duration":23,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a39073f-0175-1000-8818-85589091635b"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:22:06Z","duration":342,"status":"PASSED_MANUAL"},{"id":"EID6a39129b-0175-1000-c552-2689ec45626e","testStepResults":{"TestStepResult":{"id":"EID6a3912ab-0175-1000-8048-3c7236e9ad42","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a391378-0175-1000-7b64-112db71ae4c6","parent":{"ref":"EID6a3912ab-0175-1000-8048-3c7236e9ad42"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:22:06Z","duration":0,"status":"PASSED"},{"id":"EID6a391378-0175-1000-129f-c05a81c9e63d","parent":{"ref":"EID6a3912ab-0175-1000-8048-3c7236e9ad42"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:22:06Z","duration":0,"status":"PASSED"},{"id":"EID6a391378-0175-1000-b2fd-1eb5c6adb200","parent":{"ref":"EID6a3912ab-0175-1000-8048-3c7236e9ad42"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:22:06Z","duration":0,"status":"PASSED"},{"id":"EID6a391378-0175-1000-5b31-ca99d8201b76","parent":{"ref":"EID6a3912ab-0175-1000-8048-3c7236e9ad42"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:22:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc4c97ff4-d25c-4fa2-86ff-ac318282403c"},{"ref":"EID8d993d7b-f04d-4484-8046-a0b3e5138229"},{"ref":"EIDb6ba89f3-4a8f-4d87-acf4-abc3be2362a9"}]},"parent":{"ref":"EID6a39129b-0175-1000-c552-2689ec45626e"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:22:06Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6a39073f-0175-1000-8818-85589091635b"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:22:06Z","duration":222,"status":"PASSED"},{"id":"EID6a391379-0175-1000-815a-b88b0e4d9248","testStepResults":{"TestStepResult":{"id":"EID6a391379-0175-1000-2dfa-4cbd3956a797","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39141a-0175-1000-cd6c-00b22bcfe344","parent":{"ref":"EID6a391379-0175-1000-2dfa-4cbd3956a797"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"},{"id":"EID6a39141a-0175-1000-2f67-cc721bf0f087","parent":{"ref":"EID6a391379-0175-1000-2dfa-4cbd3956a797"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"},{"id":"EID6a39141a-0175-1000-b000-1ce66ff7ee68","parent":{"ref":"EID6a391379-0175-1000-2dfa-4cbd3956a797"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"},{"id":"EID6a39141a-0175-1000-93c7-9d4e633617db","parent":{"ref":"EID6a391379-0175-1000-2dfa-4cbd3956a797"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7e2ef014-24ad-4753-b879-8a6be7325c11"},{"ref":"EID3204cf4f-4c6d-4c27-80a5-3f81aacaccc7"},{"ref":"EID3245c3ec-0b01-45c8-8e7b-8fcd8bcb1535"}]},"parent":{"ref":"EID6a391379-0175-1000-815a-b88b0e4d9248"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:22:06Z","duration":24,"status":"PASSED"}},"parent":{"ref":"EID6a39073f-0175-1000-8818-85589091635b"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:22:06Z","duration":161,"status":"PASSED"},{"id":"EID6a39141a-0175-1000-aaeb-900007ddd088","testStepResults":{"TestStepResult":[{"id":"EID6a39141a-0175-1000-0895-72c946f1be8b","attachments":{"attachment":[{"ref":"EID9ae38ec1-7910-486e-a894-a291c2e7699b"},{"ref":"EIDafd56515-7e3e-45b9-8758-6c6d1cd6c07e"},{"ref":"EIDa48c5df7-c376-4fea-93ba-29276d5655a9"},{"ref":"EID9f09f60b-cf9c-46c5-a29b-29b94f11b702"},{"ref":"EID73d0877e-9630-4c40-b5f6-e9cfc38fe169"},{"ref":"EIDb4cc5b5a-e20c-46e8-b203-a37b1c2e3ad4"},{"ref":"EID69a20fbd-e917-4cc8-9189-e50f2db4a22d"},{"ref":"EID9d2c9b16-0790-48cd-ac05-a484d61e6ff4"},{"ref":"EID2998d845-9eeb-4e6c-9057-3e745213da6c"},{"ref":"EID1ac559c8-6ec6-4b22-925e-a1dd4470b344"},{"ref":"EID5f5ecc7a-1820-4b20-8cfe-6e4e8bdf4444"},{"ref":"EID6f1142f3-9aae-4d49-b44e-118999287eaf"}]},"parent":{"ref":"EID6a39141a-0175-1000-aaeb-900007ddd088"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:22:07Z","duration":304,"status":"PASSED"},{"id":"EID6a391609-0175-1000-07df-459e8623c6ae","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3916f9-0175-1000-aea3-8e8c8ed0cfe8","parent":{"ref":"EID6a391609-0175-1000-07df-459e8623c6ae"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3916f9-0175-1000-2e32-34038772f42d","parent":{"ref":"EID6a391609-0175-1000-07df-459e8623c6ae"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3916f9-0175-1000-2fa1-0eef40cb87cd","parent":{"ref":"EID6a391609-0175-1000-07df-459e8623c6ae"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3916f9-0175-1000-f788-b83d43b5f5f6","parent":{"ref":"EID6a391609-0175-1000-07df-459e8623c6ae"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3916f9-0175-1000-ddd8-21bccb6d2815","parent":{"ref":"EID6a391609-0175-1000-07df-459e8623c6ae"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID065b5ea2-e776-4e51-882d-9393468700f8"},{"ref":"EIDac1b1d22-3d0f-4f29-975a-9046e8e8bdda"},{"ref":"EID39c030d8-9a31-4036-a924-7c1cb601d1df"}]},"parent":{"ref":"EID6a39141a-0175-1000-aaeb-900007ddd088"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-27T13:22:07Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6a39073f-0175-1000-8818-85589091635b"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:22:07Z","duration":743,"status":"PASSED"},{"id":"EID6a391701-0175-1000-fc53-10854e18d729","testStepResults":{"TestStepResult":{"id":"EID6a391702-0175-1000-3a56-1f398cdd114c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3917d0-0175-1000-1cce-98ea263b3aef","parent":{"ref":"EID6a391702-0175-1000-3a56-1f398cdd114c"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3917d0-0175-1000-404b-d166159432a8","parent":{"ref":"EID6a391702-0175-1000-3a56-1f398cdd114c"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3917d0-0175-1000-b7cb-ae30367acf86","parent":{"ref":"EID6a391702-0175-1000-3a56-1f398cdd114c"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3917d0-0175-1000-fc94-6b8094e50539","parent":{"ref":"EID6a391702-0175-1000-3a56-1f398cdd114c"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDaf8c29b4-8863-4917-ab4b-0a5a2d10d481"},{"ref":"EIDa5d20757-cf27-4cb2-af29-410946e96f0f"},{"ref":"EID69614da2-18d9-40b1-9a7c-c5b313f76b18"}]},"parent":{"ref":"EID6a391701-0175-1000-fc53-10854e18d729"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:22:07Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6a39073f-0175-1000-8818-85589091635b"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:22:07Z","duration":286,"status":"PASSED"},{"id":"EID6a391820-0175-1000-b834-5af56b095e9d","testStepResults":{"TestStepResult":{"id":"EID6a391820-0175-1000-9a35-f5d1dd2b865f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3918c7-0175-1000-f36e-331544e30ee1","parent":{"ref":"EID6a391820-0175-1000-9a35-f5d1dd2b865f"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3918c7-0175-1000-8096-31a470dde57d","parent":{"ref":"EID6a391820-0175-1000-9a35-f5d1dd2b865f"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3918c7-0175-1000-ef74-014e8feeaad7","parent":{"ref":"EID6a391820-0175-1000-9a35-f5d1dd2b865f"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3918c7-0175-1000-024b-3990180dd8eb","parent":{"ref":"EID6a391820-0175-1000-9a35-f5d1dd2b865f"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3918c7-0175-1000-a62a-2b282ddb00ec","parent":{"ref":"EID6a391820-0175-1000-9a35-f5d1dd2b865f"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3918c7-0175-1000-8c1f-6201d275ce30","parent":{"ref":"EID6a391820-0175-1000-9a35-f5d1dd2b865f"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID93ebb31e-be43-4498-ad4e-6ce4e4497ba2"},{"ref":"EID9da9242a-45de-4a37-a9cc-bc2142a709ff"},{"ref":"EID00fef132-4156-4d7a-afa1-cf172b7e8b7e"}]},"parent":{"ref":"EID6a391820-0175-1000-b834-5af56b095e9d"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:22:08Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6a39073f-0175-1000-8818-85589091635b"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:22:08Z","duration":167,"status":"PASSED"},{"id":"EID6a3918c7-0175-1000-f63a-ef0e84e9b0c9","testStepResults":{"TestStepResult":{"id":"EID6a3918c7-0175-1000-2754-1df5442c6971","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39195f-0175-1000-46f5-e0c17408f9ec","parent":{"ref":"EID6a3918c7-0175-1000-2754-1df5442c6971"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a39195f-0175-1000-60a7-ec005dcc0823","parent":{"ref":"EID6a3918c7-0175-1000-2754-1df5442c6971"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a39195f-0175-1000-3680-47ee69a35f74","parent":{"ref":"EID6a3918c7-0175-1000-2754-1df5442c6971"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a39195f-0175-1000-6b5f-8f9653833b07","parent":{"ref":"EID6a3918c7-0175-1000-2754-1df5442c6971"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a39195f-0175-1000-9e5a-451ba9a5353b","parent":{"ref":"EID6a3918c7-0175-1000-2754-1df5442c6971"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a39195f-0175-1000-54d3-1a88845e6b58","parent":{"ref":"EID6a3918c7-0175-1000-2754-1df5442c6971"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDed926d10-b28c-4706-be37-624f0d486b98"},{"ref":"EIDd1f6db61-c49f-48c4-8984-d63339660062"},{"ref":"EID9084a425-11bf-4f78-b8ca-123b00145358"}]},"parent":{"ref":"EID6a3918c7-0175-1000-f63a-ef0e84e9b0c9"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:22:08Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6a39073f-0175-1000-8818-85589091635b"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:22:08Z","duration":152,"status":"PASSED"},{"id":"EID6a39196f-0175-1000-9c16-e0cb8ea56a29","testStepResults":{"TestStepResult":{"id":"EID6a39196f-0175-1000-c603-8acfbb6a1f3d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3919e5-0175-1000-c963-68d9d32023c7","parent":{"ref":"EID6a39196f-0175-1000-c603-8acfbb6a1f3d"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3919e5-0175-1000-9dc6-0088ea509184","parent":{"ref":"EID6a39196f-0175-1000-c603-8acfbb6a1f3d"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3919e5-0175-1000-395c-c028b786ff12","parent":{"ref":"EID6a39196f-0175-1000-c603-8acfbb6a1f3d"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3919e6-0175-1000-5b5d-d03fc80c9091","parent":{"ref":"EID6a39196f-0175-1000-c603-8acfbb6a1f3d"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6c34c4c7-1fa1-462c-a521-8b2edc408108"},{"ref":"EID9cc5db46-a36c-4f36-9221-398eb1d4796d"},{"ref":"EIDe29a253f-3bb8-4e1e-95f5-ada5026000cb"}]},"parent":{"ref":"EID6a39196f-0175-1000-9c16-e0cb8ea56a29"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:22:08Z","duration":24,"status":"PASSED"}},"parent":{"ref":"EID6a39073f-0175-1000-8818-85589091635b"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:22:08Z","duration":119,"status":"PASSED"},{"id":"EID6a3919e6-0175-1000-dff7-847f41d40a91","testStepResults":{"TestStepResult":[{"id":"EID6a3919e6-0175-1000-1f2e-f5717976d894","attachments":{"attachment":[{"ref":"EID10c943e0-5417-457a-a9ea-2ab18c93b06d"},{"ref":"EID78278209-8736-4d66-b267-fa824551754c"},{"ref":"EID55cd3c39-717f-43bf-83c5-a1164bd9ffb2"},{"ref":"EIDcec17c22-ed16-41d7-a164-ffa011f92f86"}]},"parent":{"ref":"EID6a3919e6-0175-1000-dff7-847f41d40a91"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:22:08Z","duration":164,"status":"PASSED"},{"id":"EID6a391ad2-0175-1000-952a-2eac4889cda9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a391b3d-0175-1000-f9c6-a94ae4125cf9","parent":{"ref":"EID6a391ad2-0175-1000-952a-2eac4889cda9"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a391b3d-0175-1000-2ed6-90f27edbf130","parent":{"ref":"EID6a391ad2-0175-1000-952a-2eac4889cda9"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a391b3e-0175-1000-6110-21b588cf3524","parent":{"ref":"EID6a391ad2-0175-1000-952a-2eac4889cda9"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a391b3e-0175-1000-1462-57a01f615d3f","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":2},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6a391ad2-0175-1000-952a-2eac4889cda9"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID423290ce-356f-4759-a796-c1651a435aa0"},{"ref":"EID8e866cfc-13f9-43ca-8dd8-e7b69984b4ac"},{"ref":"EIDff1ec0a1-8e5d-4a09-bd4f-93f202282169"}]},"parent":{"ref":"EID6a3919e6-0175-1000-dff7-847f41d40a91"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:22:08Z","duration":23,"status":"FAILED"}]},"parent":{"ref":"EID6a39073f-0175-1000-8818-85589091635b"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:22:08Z","duration":344,"status":"FAILED"},{"id":"EID6a391b3e-0175-1000-3c67-bc96bbc3205e","testStepResults":{"TestStepResult":{"id":"EID6a391b3e-0175-1000-fbc4-6fff0769e04b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a391be3-0175-1000-da9f-1b51ea51d509","parent":{"ref":"EID6a391b3e-0175-1000-fbc4-6fff0769e04b"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a391be3-0175-1000-1bc7-7972541eb376","parent":{"ref":"EID6a391b3e-0175-1000-fbc4-6fff0769e04b"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a391be3-0175-1000-e528-f290022e8f1b","parent":{"ref":"EID6a391b3e-0175-1000-fbc4-6fff0769e04b"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a391be3-0175-1000-589f-a4d7ad367023","parent":{"ref":"EID6a391b3e-0175-1000-fbc4-6fff0769e04b"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcc28c819-8a57-4d24-b094-d3c48f5a830f"},{"ref":"EID2c664538-f939-46e3-ba36-00adff9272f9"},{"ref":"EIDde9fe389-8906-431f-bd76-abd6831be18d"}]},"parent":{"ref":"EID6a391b3e-0175-1000-3c67-bc96bbc3205e"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:22:08Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6a39073f-0175-1000-8818-85589091635b"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:22:08Z","duration":165,"status":"PASSED"},{"id":"EID6a391be3-0175-1000-99cb-9242444391c9","testStepResults":{"TestStepResult":[{"id":"EID6a391be3-0175-1000-b8f4-a634047a4ac7","parent":{"ref":"EID6a391be3-0175-1000-99cb-9242444391c9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a391be3-0175-1000-1ca5-69e426239082","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a391c7f-0175-1000-a066-9c9066e3a706","parent":{"ref":"EID6a391be3-0175-1000-1ca5-69e426239082"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"},{"id":"EID6a391c7f-0175-1000-ef3f-0d05d674331e","parent":{"ref":"EID6a391be3-0175-1000-1ca5-69e426239082"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"},{"id":"EID6a391c7f-0175-1000-db9f-141c98f658fe","parent":{"ref":"EID6a391be3-0175-1000-1ca5-69e426239082"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"},{"id":"EID6a391c7f-0175-1000-ab1a-7c0774002957","parent":{"ref":"EID6a391be3-0175-1000-1ca5-69e426239082"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8b4e4de7-9d9e-4097-83b4-020d77541207"},{"ref":"EID1f257eed-cd1c-4025-80eb-18808067dd29"},{"ref":"EID04f0e616-b756-454b-99ff-56b823290432"}]},"parent":{"ref":"EID6a391be3-0175-1000-99cb-9242444391c9"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:22:08Z","duration":23,"status":"PASSED"},{"id":"EID6a391c7f-0175-1000-d76d-869f3d6d27dd","attachments":{"attachment":{"ref":"EIDdfd35954-b9e4-4cea-a996-c080e7cbbf07"}},"parent":{"ref":"EID6a391be3-0175-1000-99cb-9242444391c9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/63db16c5-c828-4922-95dd-5db67bc9c203.json"},"startTimestamp":"2020-10-27T13:22:09Z","duration":1,"status":"PASSED"},{"id":"EID6a391c8c-0175-1000-2ee7-b523af128177","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a391d6a-0175-1000-6a80-fe06a89365b9","parent":{"ref":"EID6a391c8c-0175-1000-2ee7-b523af128177"},"resultedFrom":{"ref":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"},{"id":"EID6a391d6a-0175-1000-e982-d1aff8a43653","parent":{"ref":"EID6a391c8c-0175-1000-2ee7-b523af128177"},"resultedFrom":{"ref":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"},{"id":"EID6a391d6a-0175-1000-4e46-bd60ccffb09f","parent":{"ref":"EID6a391c8c-0175-1000-2ee7-b523af128177"},"resultedFrom":{"ref":"EID234062a4-45c2-4013-9038-71b8cc9a7d36"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"},{"id":"EID6a391d6a-0175-1000-c560-33a45e002877","parent":{"ref":"EID6a391c8c-0175-1000-2ee7-b523af128177"},"resultedFrom":{"ref":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID49650e74-17ae-4b32-b197-ed8d58a94aea"},{"ref":"EID66dab741-7b63-4ac6-869d-bc28750f2f6f"},{"ref":"EID83815f47-e954-400f-b9ad-2a48f2721d97"}]},"parent":{"ref":"EID6a391be3-0175-1000-99cb-9242444391c9"},"resultedFrom":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"startTimestamp":"2020-10-27T13:22:09Z","duration":140,"status":"PASSED"},{"id":"EID6a391d6a-0175-1000-c990-13efbd1130ec","attachments":{"attachment":{"ref":"EIDc8d8b4e3-649a-4168-8c1c-f4568394d9f3"}},"parent":{"ref":"EID6a391be3-0175-1000-99cb-9242444391c9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/18c66972-5d73-4718-8e9c-439d4032a9fe.json"},"startTimestamp":"2020-10-27T13:22:09Z","duration":2,"status":"PASSED"},{"id":"EID6a391d7b-0175-1000-1e4f-8759f910f6a2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a391e68-0175-1000-951f-be9580d1e8db","parent":{"ref":"EID6a391d7b-0175-1000-1e4f-8759f910f6a2"},"resultedFrom":{"ref":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"},{"id":"EID6a391e68-0175-1000-dac6-9d9568cf6974","parent":{"ref":"EID6a391d7b-0175-1000-1e4f-8759f910f6a2"},"resultedFrom":{"ref":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"},{"id":"EID6a391e68-0175-1000-b961-7b78bef5e95f","parent":{"ref":"EID6a391d7b-0175-1000-1e4f-8759f910f6a2"},"resultedFrom":{"ref":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"},{"id":"EID6a391e68-0175-1000-3571-61c3f97f6665","parent":{"ref":"EID6a391d7b-0175-1000-1e4f-8759f910f6a2"},"resultedFrom":{"ref":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4ac71780-a647-43f3-b732-1235926a0f9d"},{"ref":"EIDeb885c64-93f1-4512-a610-6d4274e5d90f"},{"ref":"EID21421243-2bd6-4f7f-97ac-61acd1d58ac3"}]},"parent":{"ref":"EID6a391be3-0175-1000-99cb-9242444391c9"},"resultedFrom":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"startTimestamp":"2020-10-27T13:22:09Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6a39073f-0175-1000-8818-85589091635b"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:22:08Z","duration":645,"status":"PASSED"}]},"parent":{"ref":"EIDb04d4407-fa69-43c0-891a-77acbc251073"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:22:03Z","duration":5929,"status":"FAILED"},{"id":"EID6a391e68-0175-1000-0394-b3e44ad88033","testCaseResults":{"TestCaseResult":[{"id":"EID6a391e68-0175-1000-7bd4-70871cd49df9","testStepResults":{"TestStepResult":[{"id":"EID6a391e68-0175-1000-d1dd-6069bdd5b32e","parent":{"ref":"EID6a391e68-0175-1000-7bd4-70871cd49df9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"},{"id":"EID6a391e69-0175-1000-47a4-12721df76931","parent":{"ref":"EID6a391e68-0175-1000-7bd4-70871cd49df9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:22:09Z","duration":23,"status":"PASSED"},{"id":"EID6a391e69-0175-1000-d73c-8b50196f9cdb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a391f14-0175-1000-ca49-9f0fdff58a44","parent":{"ref":"EID6a391e69-0175-1000-d73c-8b50196f9cdb"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"},{"id":"EID6a391f14-0175-1000-3ca4-152c1e947e49","parent":{"ref":"EID6a391e69-0175-1000-d73c-8b50196f9cdb"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"},{"id":"EID6a391f14-0175-1000-312d-8c2925b1c48f","parent":{"ref":"EID6a391e69-0175-1000-d73c-8b50196f9cdb"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa86bd922-b8ae-48e8-b217-d1adcd24b6e3"},{"ref":"EIDdc84215f-f3a8-4706-a858-186f5912542b"},{"ref":"EIDead31bd2-880d-409a-baef-3ee22dae45dc"}]},"parent":{"ref":"EID6a391e68-0175-1000-7bd4-70871cd49df9"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:22:09Z","duration":24,"status":"PASSED"},{"id":"EID6a391f14-0175-1000-316f-9fc8b6539a1e","attachments":{"attachment":{"ref":"EIDaca0e445-f078-43a0-a7e1-d94bd6b726b4"}},"parent":{"ref":"EID6a391e68-0175-1000-7bd4-70871cd49df9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"},{"id":"EID6a391f20-0175-1000-05fc-ad47cc207fc9","parent":{"ref":"EID6a391e68-0175-1000-7bd4-70871cd49df9"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:22:09Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6a391e68-0175-1000-0394-b3e44ad88033"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:22:09Z","duration":207,"status":"PASSED"},{"id":"EID6a391f37-0175-1000-bdc6-c34cf69c2cf2","testStepResults":{"TestStepResult":[{"id":"EID6a391f37-0175-1000-8c83-677761ceea7a","parent":{"ref":"EID6a391f37-0175-1000-bdc6-c34cf69c2cf2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:22:09Z","duration":27,"status":"PASSED"},{"id":"EID6a391f38-0175-1000-0b0a-f19d0b8316d9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a391fcf-0175-1000-5821-dd4c34954fad","parent":{"ref":"EID6a391f38-0175-1000-0b0a-f19d0b8316d9"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"},{"id":"EID6a391fcf-0175-1000-8bb5-abff80410a41","parent":{"ref":"EID6a391f38-0175-1000-0b0a-f19d0b8316d9"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"},{"id":"EID6a391fcf-0175-1000-c188-5728cf2c93e4","parent":{"ref":"EID6a391f38-0175-1000-0b0a-f19d0b8316d9"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"},{"id":"EID6a391fcf-0175-1000-8b31-ef0203e453fe","parent":{"ref":"EID6a391f38-0175-1000-0b0a-f19d0b8316d9"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"},{"id":"EID6a391fcf-0175-1000-2a9b-6bbdaf6a0d4b","parent":{"ref":"EID6a391f38-0175-1000-0b0a-f19d0b8316d9"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID01d2d418-231e-4614-9c64-2b1f7cb43db8"},{"ref":"EID1ecf9099-9cf4-4e6f-a2eb-44be2842ded4"},{"ref":"EID5e904795-4c3f-4ac1-bcca-638e291b5d84"}]},"parent":{"ref":"EID6a391f37-0175-1000-bdc6-c34cf69c2cf2"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:22:09Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6a391e68-0175-1000-0394-b3e44ad88033"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:22:09Z","duration":152,"status":"PASSED"},{"id":"EID6a391fcf-0175-1000-f185-f89a21ce90a3","testStepResults":{"TestStepResult":[{"id":"EID6a391fcf-0175-1000-7e53-acd1ea642b31","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a392058-0175-1000-0c50-cc8f5ec7e313","parent":{"ref":"EID6a391fcf-0175-1000-7e53-acd1ea642b31"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"},{"id":"EID6a392058-0175-1000-7d64-dc4360f5a0b3","parent":{"ref":"EID6a391fcf-0175-1000-7e53-acd1ea642b31"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"},{"id":"EID6a392058-0175-1000-38f1-1b1675f68057","parent":{"ref":"EID6a391fcf-0175-1000-7e53-acd1ea642b31"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID014d1b23-53ea-422f-8d79-cb4264bea5b9"},{"ref":"EID66d2e9f5-d800-4703-a058-1da10c7e1080"},{"ref":"EIDf423841c-6caa-4f73-9bec-95499eda475e"}]},"parent":{"ref":"EID6a391fcf-0175-1000-f185-f89a21ce90a3"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:22:09Z","duration":24,"status":"PASSED"},{"id":"EID6a392058-0175-1000-dab4-ed4aec3c06b9","attachments":{"attachment":{"ref":"EIDdb523847-f581-48e4-beaa-6a98fb79d9ab"}},"parent":{"ref":"EID6a391fcf-0175-1000-f185-f89a21ce90a3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-27T13:22:10Z","duration":1,"status":"PASSED"},{"id":"EID6a392064-0175-1000-80e1-6dbfd6a2a4b1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a392128-0175-1000-1c6b-5603920a2926","parent":{"ref":"EID6a392064-0175-1000-80e1-6dbfd6a2a4b1"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-27T13:22:10Z","duration":1,"status":"PASSED"},{"id":"EID6a392129-0175-1000-e3af-be92219c45f0","parent":{"ref":"EID6a392064-0175-1000-80e1-6dbfd6a2a4b1"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"},{"id":"EID6a392129-0175-1000-9be5-752cdc15734b","parent":{"ref":"EID6a392064-0175-1000-80e1-6dbfd6a2a4b1"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"},{"id":"EID6a392129-0175-1000-d7b4-dd74ec991705","parent":{"ref":"EID6a392064-0175-1000-80e1-6dbfd6a2a4b1"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"},{"id":"EID6a392129-0175-1000-d065-102e0d292f9c","parent":{"ref":"EID6a392064-0175-1000-80e1-6dbfd6a2a4b1"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa3cfdbc9-d54a-452c-985f-5778a28488fe"},{"ref":"EID448f8b3d-1cec-4350-9ac8-011c6eaee515"},{"ref":"EID490de9fb-b2ff-4bbd-a831-9f07526d4f69"}]},"parent":{"ref":"EID6a391fcf-0175-1000-f185-f89a21ce90a3"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-27T13:22:10Z","duration":30,"status":"PASSED"}]},"parent":{"ref":"EID6a391e68-0175-1000-0394-b3e44ad88033"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:22:09Z","duration":346,"status":"PASSED"},{"id":"EID6a392129-0175-1000-ce12-47d00836b0d6","testStepResults":{"TestStepResult":[{"id":"EID6a392129-0175-1000-8a1a-2d594d218ea5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a392190-0175-1000-75c3-567283b5f451","parent":{"ref":"EID6a392129-0175-1000-8a1a-2d594d218ea5"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"},{"id":"EID6a392190-0175-1000-a579-ce725a1ba93e","parent":{"ref":"EID6a392129-0175-1000-8a1a-2d594d218ea5"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"},{"id":"EID6a392190-0175-1000-6ef8-e5b59d41f9c4","parent":{"ref":"EID6a392129-0175-1000-8a1a-2d594d218ea5"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"},{"id":"EID6a392190-0175-1000-8de7-4f70aa66f1fd","parent":{"ref":"EID6a392129-0175-1000-8a1a-2d594d218ea5"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1935bc31-b95a-4b3e-90c9-805015f43a82"},{"ref":"EIDe4717820-2439-4361-97b8-89e8c346266d"},{"ref":"EID20758eab-f429-4833-bc49-af43c2b96ebe"}]},"parent":{"ref":"EID6a392129-0175-1000-ce12-47d00836b0d6"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:22:10Z","duration":26,"status":"PASSED"},{"id":"EID6a392190-0175-1000-d9c4-dbe137e6216c","attachments":{"attachment":{"ref":"EIDab411827-c9c9-4261-ae87-3986a2ee442a"}},"parent":{"ref":"EID6a392129-0175-1000-ce12-47d00836b0d6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-27T13:22:10Z","duration":1,"status":"PASSED"},{"id":"EID6a39219b-0175-1000-2ace-6d84b297c9eb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3921c5-0175-1000-0b8d-31cda67c194b","parent":{"ref":"EID6a39219b-0175-1000-2ace-6d84b297c9eb"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"},{"id":"EID6a3921c5-0175-1000-57a8-3a5bace22c7b","parent":{"ref":"EID6a39219b-0175-1000-2ace-6d84b297c9eb"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID85a9937f-b5a7-42c9-8b3b-5d4f07c64457"},{"ref":"EID1b8c146f-b794-43cc-b502-6af73829ab8e"}]},"parent":{"ref":"EID6a392129-0175-1000-ce12-47d00836b0d6"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-27T13:22:10Z","duration":37,"status":"PASSED"},{"id":"EID6a3921c5-0175-1000-0414-61cd0613ec3e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39225a-0175-1000-1e45-7fa175dea6b7","parent":{"ref":"EID6a3921c5-0175-1000-0414-61cd0613ec3e"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"},{"id":"EID6a39225a-0175-1000-5f5f-60c6bfe56e4e","parent":{"ref":"EID6a3921c5-0175-1000-0414-61cd0613ec3e"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"},{"id":"EID6a39225a-0175-1000-a75d-56c5f64b0dbc","parent":{"ref":"EID6a3921c5-0175-1000-0414-61cd0613ec3e"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"},{"id":"EID6a39225a-0175-1000-4b9f-85a56bfb9a46","parent":{"ref":"EID6a3921c5-0175-1000-0414-61cd0613ec3e"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9072c3d7-1c7a-4f94-b312-7a998363bdc1"},{"ref":"EIDc439036c-9daf-41a2-ae1a-19a8ca2c70a2"},{"ref":"EID986e9aa5-83e1-4778-ac84-a49ab4b94df2"}]},"parent":{"ref":"EID6a392129-0175-1000-ce12-47d00836b0d6"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-27T13:22:10Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6a391e68-0175-1000-0394-b3e44ad88033"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:22:10Z","duration":315,"status":"PASSED"},{"id":"EID6a392264-0175-1000-5006-f901f47ba868","testStepResults":{"TestStepResult":{"id":"EID6a392264-0175-1000-ebc9-02f257bfb484","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3922ba-0175-1000-e7b2-0b9cd248c051","parent":{"ref":"EID6a392264-0175-1000-ebc9-02f257bfb484"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"},{"id":"EID6a3922ba-0175-1000-dee4-d6bd9f934714","parent":{"ref":"EID6a392264-0175-1000-ebc9-02f257bfb484"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"},{"id":"EID6a3922ba-0175-1000-a9a0-ec6aa88fcdf8","parent":{"ref":"EID6a392264-0175-1000-ebc9-02f257bfb484"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID42001d40-e0cf-423f-ac7a-8d33414d2044"},{"ref":"EID272a1770-3847-4551-af29-1bbda1a8e9e1"},{"ref":"EID9e77e7a9-101e-47c6-95a4-9bfb1153e536"}]},"parent":{"ref":"EID6a392264-0175-1000-5006-f901f47ba868"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:22:10Z","duration":24,"status":"PASSED"}},"parent":{"ref":"EID6a391e68-0175-1000-0394-b3e44ad88033"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:22:10Z","duration":86,"status":"PASSED"},{"id":"EID6a3922ba-0175-1000-dbb7-54c5a6054afa","testStepResults":{"TestStepResult":{"id":"EID6a3922ba-0175-1000-b31c-c294cf1eb43e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a392317-0175-1000-4e42-aed0df2012ce","parent":{"ref":"EID6a3922ba-0175-1000-b31c-c294cf1eb43e"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"},{"id":"EID6a392317-0175-1000-2cd3-579e5252bf16","parent":{"ref":"EID6a3922ba-0175-1000-b31c-c294cf1eb43e"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"},{"id":"EID6a392317-0175-1000-2b3f-1f5c5812ca8e","parent":{"ref":"EID6a3922ba-0175-1000-b31c-c294cf1eb43e"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcd78837a-8488-4f44-8d30-f8d8ad5aa332"},{"ref":"EID324b4d1d-31d5-4cbc-9896-38452c2a572b"},{"ref":"EIDd5b55cdd-21da-4b25-99f8-68f58e2e7316"}]},"parent":{"ref":"EID6a3922ba-0175-1000-dbb7-54c5a6054afa"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:22:10Z","duration":24,"status":"PASSED"}},"parent":{"ref":"EID6a391e68-0175-1000-0394-b3e44ad88033"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:22:10Z","duration":93,"status":"PASSED"},{"id":"EID6a392317-0175-1000-064a-fca5361c597b","testStepResults":{"TestStepResult":{"id":"EID6a392317-0175-1000-2318-9a792452a0af","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a392392-0175-1000-6e58-ffe6fbb3aea4","parent":{"ref":"EID6a392317-0175-1000-2318-9a792452a0af"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"},{"id":"EID6a392392-0175-1000-8c9c-28f3467cec75","parent":{"ref":"EID6a392317-0175-1000-2318-9a792452a0af"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"},{"id":"EID6a392392-0175-1000-574b-76886b59aa76","parent":{"ref":"EID6a392317-0175-1000-2318-9a792452a0af"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"},{"id":"EID6a392392-0175-1000-b57d-51b5b604e584","parent":{"ref":"EID6a392317-0175-1000-2318-9a792452a0af"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"},{"id":"EID6a392392-0175-1000-893f-5e9199440d3a","parent":{"ref":"EID6a392317-0175-1000-2318-9a792452a0af"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:22:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID96f3a296-9f35-4495-a4c5-8d2bb033d209"},{"ref":"EID90549a2d-9193-46c8-92e8-ef107faa1981"},{"ref":"EIDdbe2290d-d7e0-4159-8485-66cd33b81d0b"}]},"parent":{"ref":"EID6a392317-0175-1000-064a-fca5361c597b"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:22:10Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6a391e68-0175-1000-0394-b3e44ad88033"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:22:10Z","duration":123,"status":"PASSED"},{"id":"EID6a392392-0175-1000-567e-356c904cc0b5","testStepResults":{"TestStepResult":{"id":"EID6a392392-0175-1000-8528-5d3ce38a868f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3923f2-0175-1000-288b-406c2d73462d","parent":{"ref":"EID6a392392-0175-1000-8528-5d3ce38a868f"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3923f2-0175-1000-c79f-9d6fd9d60ba2","parent":{"ref":"EID6a392392-0175-1000-8528-5d3ce38a868f"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3923f2-0175-1000-a1c5-96d0e41c34ac","parent":{"ref":"EID6a392392-0175-1000-8528-5d3ce38a868f"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9fafc384-2d10-40e6-9772-46b5ac3748db"},{"ref":"EID98a08e83-9c63-44b0-90c5-dabbfd62b036"},{"ref":"EID518db58b-c02d-4d8f-805b-259182bc623a"}]},"parent":{"ref":"EID6a392392-0175-1000-567e-356c904cc0b5"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:22:10Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6a391e68-0175-1000-0394-b3e44ad88033"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:22:10Z","duration":96,"status":"PASSED"},{"id":"EID6a3923f2-0175-1000-97e3-9287adf2dc9b","testStepResults":{"TestStepResult":{"id":"EID6a3923f2-0175-1000-b385-9ee4850b0622","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a392457-0175-1000-45ca-a356b978ed5a","parent":{"ref":"EID6a3923f2-0175-1000-b385-9ee4850b0622"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a392457-0175-1000-9f11-4dc694cce987","parent":{"ref":"EID6a3923f2-0175-1000-b385-9ee4850b0622"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a392457-0175-1000-9507-016d87c5a562","parent":{"ref":"EID6a3923f2-0175-1000-b385-9ee4850b0622"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9bffce53-d3af-43ff-b7ed-666b358a5251"},{"ref":"EID2d0deb65-eabb-48b1-9dcb-f682f90f28f2"},{"ref":"EIDab98dc74-aa13-4e56-8fc7-023475735afc"}]},"parent":{"ref":"EID6a3923f2-0175-1000-97e3-9287adf2dc9b"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:22:11Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6a391e68-0175-1000-0394-b3e44ad88033"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:22:11Z","duration":102,"status":"PASSED"},{"id":"EID6a392458-0175-1000-2458-1a4ab02805eb","testStepResults":{"TestStepResult":{"id":"EID6a392458-0175-1000-a53a-309e97bd2b15","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3924c5-0175-1000-16c0-ba1f54d35acc","parent":{"ref":"EID6a392458-0175-1000-a53a-309e97bd2b15"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3924c5-0175-1000-413b-02bd0d78ae21","parent":{"ref":"EID6a392458-0175-1000-a53a-309e97bd2b15"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3924c5-0175-1000-d633-0d2f0c5bd1a7","parent":{"ref":"EID6a392458-0175-1000-a53a-309e97bd2b15"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3924c5-0175-1000-7cd9-0ba4e46a653a","parent":{"ref":"EID6a392458-0175-1000-a53a-309e97bd2b15"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:22:11Z","duration":1,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID67e480be-dc01-471a-ab1b-58eda8783366"},{"ref":"EID4bbf620b-3412-4d9c-93b6-b8fe0db468e9"},{"ref":"EIDcc8a0ed8-cb1d-454c-903c-deae88ea6a1f"}]},"parent":{"ref":"EID6a392458-0175-1000-2458-1a4ab02805eb"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:22:11Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6a391e68-0175-1000-0394-b3e44ad88033"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:22:11Z","duration":110,"status":"PASSED"},{"id":"EID6a3924c6-0175-1000-f84a-db4a185054d1","testStepResults":{"TestStepResult":{"id":"EID6a3924c6-0175-1000-8394-d181e5d73309","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39252b-0175-1000-2d46-4804b617ff86","parent":{"ref":"EID6a3924c6-0175-1000-8394-d181e5d73309"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a39252b-0175-1000-9474-3d4af1112663","parent":{"ref":"EID6a3924c6-0175-1000-8394-d181e5d73309"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a39252b-0175-1000-d80d-20deab72bb42","parent":{"ref":"EID6a3924c6-0175-1000-8394-d181e5d73309"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a39252b-0175-1000-438f-0f8fb1dd49be","parent":{"ref":"EID6a3924c6-0175-1000-8394-d181e5d73309"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe6356148-aafa-4418-a144-be5246e626a3"},{"ref":"EID42a5653e-ce91-46a9-a69c-4752610aa87d"},{"ref":"EID86ea0098-c08b-4fa2-b8e7-024d840b78fd"}]},"parent":{"ref":"EID6a3924c6-0175-1000-f84a-db4a185054d1"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:22:11Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6a391e68-0175-1000-0394-b3e44ad88033"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:22:11Z","duration":101,"status":"PASSED"},{"id":"EID6a39252b-0175-1000-06dc-69a56bd5de4f","testStepResults":{"TestStepResult":[{"id":"EID6a39252b-0175-1000-2167-5d76192275e0","parent":{"ref":"EID6a39252b-0175-1000-06dc-69a56bd5de4f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a39252b-0175-1000-3cf3-cb17ffdb9f9f","parent":{"ref":"EID6a39252b-0175-1000-06dc-69a56bd5de4f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:22:11Z","duration":50,"status":"PASSED"},{"id":"EID6a39252b-0175-1000-06de-5a0023a61bd8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39259f-0175-1000-7358-c7cc341573db","parent":{"ref":"EID6a39252b-0175-1000-06de-5a0023a61bd8"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a39259f-0175-1000-2ad5-ef8f3d773a32","parent":{"ref":"EID6a39252b-0175-1000-06de-5a0023a61bd8"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a39259f-0175-1000-a99d-db5210fea7bb","parent":{"ref":"EID6a39252b-0175-1000-06de-5a0023a61bd8"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a39259f-0175-1000-4893-edaaddf6f165","parent":{"ref":"EID6a39252b-0175-1000-06de-5a0023a61bd8"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa01ade89-6746-48df-b40c-f75b2321d324"},{"ref":"EID11cad9cc-4405-479b-b53d-be9447891418"},{"ref":"EIDdf5024d1-f44c-4213-bdf8-4e44a5873b31"}]},"parent":{"ref":"EID6a39252b-0175-1000-06dc-69a56bd5de4f"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:22:11Z","duration":23,"status":"PASSED"},{"id":"EID6a39259f-0175-1000-7dd9-e7996bcdcb98","attachments":{"attachment":{"ref":"EID33b27155-68bd-4b4c-8970-29b358e0c878"}},"parent":{"ref":"EID6a39252b-0175-1000-06dc-69a56bd5de4f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:22:11Z","duration":1,"status":"PASSED"},{"id":"EID6a3925b9-0175-1000-f403-cf0283716b90","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a392623-0175-1000-5ede-949084b8c43e","parent":{"ref":"EID6a3925b9-0175-1000-f403-cf0283716b90"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a392623-0175-1000-7f40-5bb1a5310b65","parent":{"ref":"EID6a3925b9-0175-1000-f403-cf0283716b90"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a392623-0175-1000-bb82-86103c289507","parent":{"ref":"EID6a3925b9-0175-1000-f403-cf0283716b90"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a392623-0175-1000-cb9e-abc363211665","parent":{"ref":"EID6a3925b9-0175-1000-f403-cf0283716b90"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a392623-0175-1000-efbe-8bf8da973724","parent":{"ref":"EID6a3925b9-0175-1000-f403-cf0283716b90"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a392623-0175-1000-0c08-4df6f9b44e4d","parent":{"ref":"EID6a3925b9-0175-1000-f403-cf0283716b90"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a392623-0175-1000-daab-3099b7a3123d","parent":{"ref":"EID6a3925b9-0175-1000-f403-cf0283716b90"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID79d1c678-5ecc-4c32-b813-ffcd1d706f57"},{"ref":"EID30185029-89ac-4110-a4a1-008bf5760738"},{"ref":"EID336c3f27-eabb-437f-a888-d82574705ba5"}]},"parent":{"ref":"EID6a39252b-0175-1000-06dc-69a56bd5de4f"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:22:11Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6a391e68-0175-1000-0394-b3e44ad88033"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:22:11Z","duration":248,"status":"PASSED"},{"id":"EID6a392623-0175-1000-e70a-96c553172dd0","testStepResults":{"TestStepResult":[{"id":"EID6a392623-0175-1000-e15e-49561188ea3d","parent":{"ref":"EID6a392623-0175-1000-e70a-96c553172dd0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a392623-0175-1000-d8dd-5ba16afcbc85","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a392708-0175-1000-707e-6d8307ee5666","parent":{"ref":"EID6a392623-0175-1000-d8dd-5ba16afcbc85"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a392708-0175-1000-0103-9e80cbd02e22","parent":{"ref":"EID6a392623-0175-1000-d8dd-5ba16afcbc85"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a392708-0175-1000-bb5c-779528f415ab","parent":{"ref":"EID6a392623-0175-1000-d8dd-5ba16afcbc85"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a392708-0175-1000-404c-ed9bd204c0ea","parent":{"ref":"EID6a392623-0175-1000-d8dd-5ba16afcbc85"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDda5a3824-58c6-4dc7-8cd0-dd1bcbca870b"},{"ref":"EIDa8ea4c42-5aec-486e-a6b3-d7d17f27154a"},{"ref":"EID011980f6-abfb-4f5c-85c6-7335beb4df87"}]},"parent":{"ref":"EID6a392623-0175-1000-e70a-96c553172dd0"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:22:11Z","duration":42,"status":"PASSED"},{"id":"EID6a392708-0175-1000-d1c1-747b2728d43e","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a39271f-0175-1000-949e-3233b81ce3ac","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a392825-0175-1000-b64a-50bc784a6972","parent":{"ref":"EID6a39271f-0175-1000-949e-3233b81ce3ac"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a392826-0175-1000-da94-ff7e6ee2666c","parent":{"ref":"EID6a39271f-0175-1000-949e-3233b81ce3ac"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a392826-0175-1000-6050-3ef247e27254","parent":{"ref":"EID6a39271f-0175-1000-949e-3233b81ce3ac"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2a03e37a-1399-4a17-8930-7cd8d7319eaa"},{"ref":"EIDcf257df9-ccba-4927-8fe5-f7eb5d25e337"},{"ref":"EID51db1248-dc75-47e0-9ecb-7411a81f4c69"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:22:11Z","duration":149,"status":"PASSED"},{"id":"EID6a392828-0175-1000-69c0-790991e20d36","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39287c-0175-1000-09e1-0dde14410695","parent":{"ref":"EID6a392828-0175-1000-69c0-790991e20d36"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a39287c-0175-1000-9535-3f97d0a0609e","parent":{"ref":"EID6a392828-0175-1000-69c0-790991e20d36"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a39287c-0175-1000-7953-c4f996c71d91","parent":{"ref":"EID6a392828-0175-1000-69c0-790991e20d36"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa82ab63e-050b-45ca-a3a0-3610893bdb42"},{"ref":"EID7112bb52-7758-4c34-8d91-1953a593fa3b"},{"ref":"EID23efd863-d1d4-4419-8d4b-6bec6045a217"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:22:12Z","duration":39,"status":"PASSED"},{"id":"EID6a39287d-0175-1000-4730-74689ebd8a40","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a392929-0175-1000-bddf-4a15b0b903cc","parent":{"ref":"EID6a39287d-0175-1000-4730-74689ebd8a40"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a392929-0175-1000-59e1-b2b0ccc7a049","parent":{"ref":"EID6a39287d-0175-1000-4730-74689ebd8a40"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a392929-0175-1000-a3d1-fce291ddf6f8","parent":{"ref":"EID6a39287d-0175-1000-4730-74689ebd8a40"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID79c79de8-0346-403f-ad3a-128aa6b34f45"},{"ref":"EIDf69401e8-925d-49d4-a291-e35f7c3ef612"},{"ref":"EID4acbbbbe-d7ea-4c41-993c-e93a8ac46fc2"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:22:12Z","duration":39,"status":"PASSED"}]},"parent":{"ref":"EID6a392623-0175-1000-e70a-96c553172dd0"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:22:11Z","duration":545,"status":"PASSED"},{"id":"EID6a39292a-0175-1000-4b26-7b73efe08f64","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39297a-0175-1000-1fa1-a548c76a3666","parent":{"ref":"EID6a39292a-0175-1000-4b26-7b73efe08f64"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a39297a-0175-1000-f597-331628b6494d","parent":{"ref":"EID6a39292a-0175-1000-4b26-7b73efe08f64"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a39297a-0175-1000-d9cb-7715984b3c96","parent":{"ref":"EID6a39292a-0175-1000-4b26-7b73efe08f64"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a39297a-0175-1000-e232-4c9fe14d07ce","parent":{"ref":"EID6a39292a-0175-1000-4b26-7b73efe08f64"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2750f6ec-2942-42b6-b1da-7cec6ee36bd0"},{"ref":"EID640ce504-3d28-42d0-8177-e309ed8dcaf9"},{"ref":"EID9e47ec9c-42d2-4e93-b72f-1128452808c4"}]},"parent":{"ref":"EID6a392623-0175-1000-e70a-96c553172dd0"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:22:12Z","duration":24,"status":"PASSED"}]},"parent":{"ref":"EID6a391e68-0175-1000-0394-b3e44ad88033"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:22:11Z","duration":855,"status":"PASSED"},{"id":"EID6a39297a-0175-1000-bab3-95269e7454bb","testStepResults":{"TestStepResult":{"id":"EID6a39297a-0175-1000-0800-2603e374b0f1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3929ff-0175-1000-20ed-794c73e2acd5","parent":{"ref":"EID6a39297a-0175-1000-0800-2603e374b0f1"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3929ff-0175-1000-5d15-6409afb89e51","parent":{"ref":"EID6a39297a-0175-1000-0800-2603e374b0f1"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3929ff-0175-1000-1ff2-1e89d8319ac9","parent":{"ref":"EID6a39297a-0175-1000-0800-2603e374b0f1"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3929ff-0175-1000-c88c-9f9a89097b11","parent":{"ref":"EID6a39297a-0175-1000-0800-2603e374b0f1"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID39a883ff-ae7e-4ab9-933d-9fbf241ee779"},{"ref":"EIDd4619344-3b16-42f9-b6e4-5e3533349056"},{"ref":"EID441eb80c-a767-419d-a93a-d8ae7233724c"}]},"parent":{"ref":"EID6a39297a-0175-1000-bab3-95269e7454bb"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:22:12Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6a391e68-0175-1000-0394-b3e44ad88033"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:22:12Z","duration":133,"status":"PASSED"}]},"parent":{"ref":"EIDb04d4407-fa69-43c0-891a-77acbc251073"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:22:09Z","duration":2970,"status":"PASSED"},{"id":"EID6a392a02-0175-1000-49cc-b9f8e7722d74","testCaseResults":{"TestCaseResult":[{"id":"EID6a392a02-0175-1000-3f17-233ad6528d0e","testStepResults":{"TestStepResult":[{"id":"EID6a392a02-0175-1000-ef5f-9deef8c23b03","parent":{"ref":"EID6a392a02-0175-1000-3f17-233ad6528d0e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:22:12Z","duration":305,"status":"PASSED"},{"id":"EID6a392a02-0175-1000-4d9d-7cd6c47ddd58","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a392a92-0175-1000-bb71-ab5df7158081","parent":{"ref":"EID6a392a02-0175-1000-4d9d-7cd6c47ddd58"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a392a92-0175-1000-0db0-e7c073adf3dd","parent":{"ref":"EID6a392a02-0175-1000-4d9d-7cd6c47ddd58"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a392a92-0175-1000-f4d6-f57a22b8a6b1","parent":{"ref":"EID6a392a02-0175-1000-4d9d-7cd6c47ddd58"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID162435de-cc0b-45b6-a8db-1e4688ac5c78"},{"ref":"EID2b233de3-0094-4edf-8025-3c70469c201f"},{"ref":"EID245ea30d-599d-4752-9541-125ca902905a"}]},"parent":{"ref":"EID6a392a02-0175-1000-3f17-233ad6528d0e"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-27T13:22:12Z","duration":23,"status":"PASSED"},{"id":"EID6a392a9a-0175-1000-8c1a-d2f753ab1a67","attachments":{"attachment":{"ref":"EID41d06f0b-9d34-4630-8003-852d734911be"}},"parent":{"ref":"EID6a392a02-0175-1000-3f17-233ad6528d0e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-27T13:22:12Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6a392a02-0175-1000-49cc-b9f8e7722d74"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:22:12Z","duration":164,"status":"PASSED"},{"id":"EID6a392aa6-0175-1000-540d-7b9dea3f401d","testStepResults":{"TestStepResult":[{"id":"EID6a392aa6-0175-1000-8ae8-07a9c0ed5ac7","parent":{"ref":"EID6a392aa6-0175-1000-540d-7b9dea3f401d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:22:12Z","duration":305,"status":"PASSED"},{"id":"EID6a392aa6-0175-1000-4ad1-1d6f9b0b146e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a392b35-0175-1000-8221-33fe048bac52","parent":{"ref":"EID6a392aa6-0175-1000-4ad1-1d6f9b0b146e"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a392b35-0175-1000-5eb8-2d424dac4cfe","parent":{"ref":"EID6a392aa6-0175-1000-4ad1-1d6f9b0b146e"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a392b35-0175-1000-1d3a-de0ed0ec048c","parent":{"ref":"EID6a392aa6-0175-1000-4ad1-1d6f9b0b146e"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a392b35-0175-1000-ed1c-44babe3f56ab","parent":{"ref":"EID6a392aa6-0175-1000-4ad1-1d6f9b0b146e"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbbd9c8f6-2686-496c-ad6c-6a58a9d32359"},{"ref":"EIDb8cff6c6-e99e-4779-9bdc-146866b40cfe"},{"ref":"EIDce35528d-3e06-4072-a42f-b6b721c99f3f"}]},"parent":{"ref":"EID6a392aa6-0175-1000-540d-7b9dea3f401d"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-27T13:22:12Z","duration":75,"status":"PASSED"}]},"parent":{"ref":"EID6a392a02-0175-1000-49cc-b9f8e7722d74"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:22:12Z","duration":143,"status":"PASSED"},{"id":"EID6a392b35-0175-1000-bb63-03346a973f23","testStepResults":{"TestStepResult":[{"id":"EID6a392b35-0175-1000-5ca9-3fb5dde68cee","parent":{"ref":"EID6a392b35-0175-1000-bb63-03346a973f23"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:22:12Z","duration":316,"status":"PASSED"},{"id":"EID6a392b40-0175-1000-be72-e7874b4f111e","parent":{"ref":"EID6a392b35-0175-1000-bb63-03346a973f23"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a392b40-0175-1000-9226-816955cb022b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a392c42-0175-1000-8baf-d9a414b37b56","parent":{"ref":"EID6a392b40-0175-1000-9226-816955cb022b"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"PASSED"},{"id":"EID6a392c42-0175-1000-00ac-e7c9fef0f949","parent":{"ref":"EID6a392b40-0175-1000-9226-816955cb022b"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"PASSED"},{"id":"EID6a392c42-0175-1000-e2ed-eeaeaaa87024","parent":{"ref":"EID6a392b40-0175-1000-9226-816955cb022b"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"PASSED"},{"id":"EID6a392c42-0175-1000-13be-112d61e1e485","parent":{"ref":"EID6a392b40-0175-1000-9226-816955cb022b"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"PASSED"},{"id":"EID6a392c42-0175-1000-b853-fa9bd383a05b","parent":{"ref":"EID6a392b40-0175-1000-9226-816955cb022b"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"PASSED"},{"id":"EID6a392c42-0175-1000-11d7-d8309ef6fd83","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}}},"parent":{"ref":"EID6a392b40-0175-1000-9226-816955cb022b"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"FAILED"},{"id":"EID6a392c42-0175-1000-ab30-48a98015a378","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6a392b40-0175-1000-9226-816955cb022b"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID86ea0dd1-8049-479f-9302-a860aabd4add"},{"ref":"EIDadc42420-e25b-4ba5-af3c-b3b6f27a99e4"},{"ref":"EIDa69e9f4a-990a-46df-9173-b978cd017f5b"}]},"parent":{"ref":"EID6a392b35-0175-1000-bb63-03346a973f23"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-27T13:22:12Z","duration":75,"status":"FAILED"}]},"parent":{"ref":"EID6a392a02-0175-1000-49cc-b9f8e7722d74"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:22:12Z","duration":269,"status":"FAILED"},{"id":"EID6a392c43-0175-1000-2a69-29dcf92ccaa6","testStepResults":{"TestStepResult":[{"id":"EID6a392c4e-0175-1000-ed41-d82f0f20ef18","parent":{"ref":"EID6a392c43-0175-1000-2a69-29dcf92ccaa6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:22:13Z","duration":305,"status":"PASSED"},{"id":"EID6a392c4e-0175-1000-c8bb-9a04831925a0","parent":{"ref":"EID6a392c43-0175-1000-2a69-29dcf92ccaa6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"PASSED"},{"id":"EID6a392c4e-0175-1000-59d2-219b620451aa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a392d09-0175-1000-c0b7-59f1d522974c","parent":{"ref":"EID6a392c4e-0175-1000-59d2-219b620451aa"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"PASSED"},{"id":"EID6a392d09-0175-1000-4737-a7b64285e464","parent":{"ref":"EID6a392c4e-0175-1000-59d2-219b620451aa"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"PASSED"},{"id":"EID6a392d09-0175-1000-a09d-754106b11cba","parent":{"ref":"EID6a392c4e-0175-1000-59d2-219b620451aa"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"PASSED"},{"id":"EID6a392d09-0175-1000-7819-d92c7706a87a","parent":{"ref":"EID6a392c4e-0175-1000-59d2-219b620451aa"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"PASSED"},{"id":"EID6a392d09-0175-1000-ae2e-790b7efda98b","parent":{"ref":"EID6a392c4e-0175-1000-59d2-219b620451aa"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"PASSED"},{"id":"EID6a392d09-0175-1000-7053-064b7236438d","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6a392c4e-0175-1000-59d2-219b620451aa"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID082fb2b1-f241-41b8-a87f-c599f10907e7"},{"ref":"EID89457359-be8f-4d9a-97ea-cdc5358b3980"},{"ref":"EIDcc696506-a35c-408d-89f8-7423ee26489d"}]},"parent":{"ref":"EID6a392c43-0175-1000-2a69-29dcf92ccaa6"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-27T13:22:13Z","duration":76,"status":"FAILED"}]},"parent":{"ref":"EID6a392a02-0175-1000-49cc-b9f8e7722d74"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:22:13Z","duration":199,"status":"FAILED"},{"id":"EID6a392d0a-0175-1000-8471-e94646a6fb7f","testStepResults":{"TestStepResult":[{"id":"EID6a392d0a-0175-1000-4bd5-6f0a00e18f61","parent":{"ref":"EID6a392d0a-0175-1000-8471-e94646a6fb7f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:22:13Z","duration":305,"status":"PASSED"},{"id":"EID6a392d0a-0175-1000-3bb5-2869d687934c","messages":{"message":[{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}},{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}]},"attachments":{"attachment":[{"ref":"EID1f3c25da-edbc-4468-af9d-5c902edb9d80"},{"ref":"EIDb4de9d9a-bcc2-4c51-a42f-9d83064b165d"},{"ref":"EID4158b7fb-1f78-4512-8287-15b8de3c71b5"},{"ref":"EID9ff95e90-476f-4abd-82f2-0780bf652021"},{"ref":"EID5732a89f-61f0-4ece-9b13-30925aa22077"},{"ref":"EID834e91a9-844b-4eb2-b17a-dc7b8848388c"},{"ref":"EID76d467ff-abd5-4f9d-984b-03f0407eb4c7"},{"ref":"EID4c990831-29cd-4bff-a367-8cfbaf3eaa4c"},{"ref":"EID10d94d84-f29b-4592-a00e-fb987feff03f"},{"ref":"EID85dcdfe9-c42b-4e1a-abe6-e66e7b039a7c"},{"ref":"EIDc1dba97b-765a-4ea8-b2de-e3b7b9a9630f"},{"ref":"EID1f3c9f00-3a44-4dbe-bafc-3cf6e3510ee0"},{"ref":"EID56fb7dc7-4f65-417c-8641-7ac5734aed98"},{"ref":"EID566ea73d-dd0c-40d7-a3e7-1497f38477cc"},{"ref":"EIDfd2b9368-6c3d-4a69-8792-5e30a9dba4e9"}]},"parent":{"ref":"EID6a392d0a-0175-1000-8471-e94646a6fb7f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-27T13:22:13Z","duration":479,"status":"SKIPPED"}]},"parent":{"ref":"EID6a392a02-0175-1000-49cc-b9f8e7722d74"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:22:13Z","duration":718,"status":"SKIPPED"},{"id":"EID6a392fd8-0175-1000-48c4-ad4bdaedf0d3","testStepResults":{"TestStepResult":[{"id":"EID6a392fd8-0175-1000-b59e-b5568bb1e6b1","parent":{"ref":"EID6a392fd8-0175-1000-48c4-ad4bdaedf0d3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:22:14Z","duration":313,"status":"PASSED"},{"id":"EID6a392fe0-0175-1000-4144-ff65e73eaa09","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a393078-0175-1000-6d9c-e374d9351fc9","parent":{"ref":"EID6a392fe0-0175-1000-4144-ff65e73eaa09"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-27T13:22:14Z","duration":0,"status":"PASSED"},{"id":"EID6a393078-0175-1000-d996-36de24609bea","parent":{"ref":"EID6a392fe0-0175-1000-4144-ff65e73eaa09"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-27T13:22:14Z","duration":0,"status":"PASSED"},{"id":"EID6a393078-0175-1000-c8c5-711b879dfda4","parent":{"ref":"EID6a392fe0-0175-1000-4144-ff65e73eaa09"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-27T13:22:14Z","duration":0,"status":"PASSED"},{"id":"EID6a393078-0175-1000-b428-4f7504ac2ad1","parent":{"ref":"EID6a392fe0-0175-1000-4144-ff65e73eaa09"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-27T13:22:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDeb982dd2-5b15-4dfc-839c-396e6a2277a7"},{"ref":"EID03867412-847d-471c-bdda-3e96415dc21b"},{"ref":"EIDc5493235-de04-4018-b40f-b2d0d572d1cf"}]},"parent":{"ref":"EID6a392fd8-0175-1000-48c4-ad4bdaedf0d3"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-27T13:22:14Z","duration":81,"status":"PASSED"}]},"parent":{"ref":"EID6a392a02-0175-1000-49cc-b9f8e7722d74"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:22:14Z","duration":160,"status":"PASSED"},{"id":"EID6a393078-0175-1000-b1ad-a036254caa13","testStepResults":{"TestStepResult":[{"id":"EID6a393078-0175-1000-5bb3-f2681b543a7c","parent":{"ref":"EID6a393078-0175-1000-b1ad-a036254caa13"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:22:14Z","duration":305,"status":"PASSED"},{"id":"EID6a393078-0175-1000-9b18-b522a2f198c3","parent":{"ref":"EID6a393078-0175-1000-b1ad-a036254caa13"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-27T13:22:14Z","duration":0,"status":"PASSED"},{"id":"EID6a393078-0175-1000-1341-69f0e3d4754a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39311e-0175-1000-39d4-ffdbb210c38c","parent":{"ref":"EID6a393078-0175-1000-1341-69f0e3d4754a"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-27T13:22:14Z","duration":0,"status":"PASSED"},{"id":"EID6a39311e-0175-1000-71ac-c91355a052a5","parent":{"ref":"EID6a393078-0175-1000-1341-69f0e3d4754a"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-27T13:22:14Z","duration":0,"status":"PASSED"},{"id":"EID6a39311e-0175-1000-30fd-d35a298bd80b","parent":{"ref":"EID6a393078-0175-1000-1341-69f0e3d4754a"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-27T13:22:14Z","duration":0,"status":"PASSED"},{"id":"EID6a39311e-0175-1000-b1de-4b96ae1790bc","parent":{"ref":"EID6a393078-0175-1000-1341-69f0e3d4754a"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-27T13:22:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9cd4ce35-6100-45fa-ba8a-336c9341dc52"},{"ref":"EID5c7eca42-6938-4f02-ba1e-103811a47465"},{"ref":"EID127ccbc2-5993-492d-bb31-048f8e229df1"}]},"parent":{"ref":"EID6a393078-0175-1000-b1ad-a036254caa13"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-27T13:22:14Z","duration":98,"status":"PASSED"},{"id":"EID6a39311e-0175-1000-fe5b-0f379b292a6d","attachments":{"attachment":{"ref":"EIDd3d30c05-90be-452e-ac7e-7e37db1083b3"}},"parent":{"ref":"EID6a393078-0175-1000-b1ad-a036254caa13"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-27T13:22:14Z","duration":1,"status":"PASSED"},{"id":"EID6a39312a-0175-1000-4eda-325129dc1575","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a393137-0175-1000-04fd-1f969e16818d","parent":{"ref":"EID6a39312a-0175-1000-4eda-325129dc1575"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-27T13:22:14Z","duration":0,"status":"PASSED"},{"id":"EID6a393137-0175-1000-bb3b-9fa747f06aa2","parent":{"ref":"EID6a39312a-0175-1000-4eda-325129dc1575"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-27T13:22:14Z","duration":0,"status":"PASSED"},{"id":"EID6a393137-0175-1000-1cbe-9740aac41041","parent":{"ref":"EID6a39312a-0175-1000-4eda-325129dc1575"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-27T13:22:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3887a27c-ea1b-4e38-a02c-ff7b100752d8"},{"ref":"EIDeacd5e0e-4e3a-484a-be91-aacda7664d1e"}]},"parent":{"ref":"EID6a393078-0175-1000-b1ad-a036254caa13"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-27T13:22:14Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a392a02-0175-1000-49cc-b9f8e7722d74"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:22:14Z","duration":191,"status":"PASSED"}]},"parent":{"ref":"EIDb04d4407-fa69-43c0-891a-77acbc251073"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:22:12Z","duration":1845,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"ServiceEndpoint","id":"EID9bffce53-d3af-43ff-b7ed-666b358a5251","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceResponse","id":"EID2d0deb65-eabb-48b1-9dcb-f682f90f28f2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID2d0deb65-eabb-48b1-9dcb-f682f90f28f2"}},{"type":"ServiceResponse","id":"EID1ecf9099-9cf4-4e6f-a2eb-44be2842ded4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID1ecf9099-9cf4-4e6f-a2eb-44be2842ded4"}},{"type":"ServiceResponse","id":"EIDeb885c64-93f1-4512-a610-6d4274e5d90f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDeb885c64-93f1-4512-a610-6d4274e5d90f"}},{"type":"ServiceEndpoint","id":"EID1935bc31-b95a-4b3e-90c9-805015f43a82","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"GetParameter","id":"EID00fef132-4156-4d7a-afa1-cf172b7e8b7e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID448f8b3d-1cec-4350-9ac8-011c6eaee515","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID448f8b3d-1cec-4350-9ac8-011c6eaee515"}},{"type":"ServiceResponse","id":"EID90549a2d-9193-46c8-92e8-ef107faa1981","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID90549a2d-9193-46c8-92e8-ef107faa1981"}},{"type":"ServiceResponse","id":"EID42a5653e-ce91-46a9-a69c-4752610aa87d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID42a5653e-ce91-46a9-a69c-4752610aa87d"}},{"type":"GetParameter","id":"EIDcc8a0ed8-cb1d-454c-903c-deae88ea6a1f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceResponse","id":"EID5c7eca42-6938-4f02-ba1e-103811a47465","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID5c7eca42-6938-4f02-ba1e-103811a47465"}},{"type":"Message","id":"EID33b27155-68bd-4b4c-8970-29b358e0c878","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID33b27155-68bd-4b4c-8970-29b358e0c878"}},{"type":"Message","id":"EID69a20fbd-e917-4cc8-9189-e50f2db4a22d","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID69a20fbd-e917-4cc8-9189-e50f2db4a22d"}},{"type":"ServiceEndpoint","id":"EID065b5ea2-e776-4e51-882d-9393468700f8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDeacd5e0e-4e3a-484a-be91-aacda7664d1e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"Message","id":"EID9d2c9b16-0790-48cd-ac05-a484d61e6ff4","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID9d2c9b16-0790-48cd-ac05-a484d61e6ff4"}},{"type":"ServiceResponse","id":"EIDcf257df9-ccba-4927-8fe5-f7eb5d25e337","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDcf257df9-ccba-4927-8fe5-f7eb5d25e337"}},{"type":"ServiceResponse","id":"EID2c664538-f939-46e3-ba36-00adff9272f9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID2c664538-f939-46e3-ba36-00adff9272f9"}},{"type":"GetParameter","id":"EID39c030d8-9a31-4036-a924-7c1cb601d1df","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID9da9242a-45de-4a37-a9cc-bc2142a709ff","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID9da9242a-45de-4a37-a9cc-bc2142a709ff"}},{"type":"GetParameter","id":"EID1d11101d-1b17-4558-a197-a45db917c11d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID640ce504-3d28-42d0-8177-e309ed8dcaf9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID640ce504-3d28-42d0-8177-e309ed8dcaf9"}},{"type":"ServiceResponse","id":"EID578feed8-00e0-4472-a6ba-bbb4b83f3abd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID578feed8-00e0-4472-a6ba-bbb4b83f3abd"}},{"type":"ServiceEndpoint","id":"EID79d1c678-5ecc-4c32-b813-ffcd1d706f57","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceResponse","id":"EID8d993d7b-f04d-4484-8046-a0b3e5138229","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID8d993d7b-f04d-4484-8046-a0b3e5138229"}},{"type":"GetParameter","id":"EID23efd863-d1d4-4419-8d4b-6bec6045a217","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EIDb6ba89f3-4a8f-4d87-acf4-abc3be2362a9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID4acbbbbe-d7ea-4c41-993c-e93a8ac46fc2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EIDa5d20757-cf27-4cb2-af29-410946e96f0f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDa5d20757-cf27-4cb2-af29-410946e96f0f"}},{"type":"Message","id":"EID89caf261-49ff-44a6-b467-53a6100527d8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID89caf261-49ff-44a6-b467-53a6100527d8"}},{"type":"GetParameter","id":"EID9e77e7a9-101e-47c6-95a4-9bfb1153e536","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"GetParameter","id":"EID1b8c146f-b794-43cc-b502-6af73829ab8e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9kb3dubG9hZHMvUERfTkxfTEFVLmdwa2cuemlw"},{"type":"ServiceEndpoint","id":"EID22a444f7-4e1f-4364-8108-f9487c5855b4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDadc42420-e25b-4ba5-af3c-b3b6f27a99e4","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDadc42420-e25b-4ba5-af3c-b3b6f27a99e4"}},{"type":"ServiceResponse","id":"EIDb1540b57-458f-44b1-b3a5-1c1ef2936121","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDb1540b57-458f-44b1-b3a5-1c1ef2936121"}},{"type":"ServiceEndpoint","id":"EID082fb2b1-f241-41b8-a87f-c599f10907e7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID011980f6-abfb-4f5c-85c6-7335beb4df87","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EID8a8ca12d-9f75-41ec-ae46-e2420a01e785","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID6ab7523f-089a-45c5-8e4a-e4da0536aaf8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID6ab7523f-089a-45c5-8e4a-e4da0536aaf8"}},{"type":"ServiceEndpoint","id":"EID9fafc384-2d10-40e6-9772-46b5ac3748db","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"Message","id":"EID4158b7fb-1f78-4512-8287-15b8de3c71b5","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID4158b7fb-1f78-4512-8287-15b8de3c71b5"}},{"type":"Message","id":"EID5f5ecc7a-1820-4b20-8cfe-6e4e8bdf4444","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID5f5ecc7a-1820-4b20-8cfe-6e4e8bdf4444"}},{"type":"ServiceEndpoint","id":"EID85a9937f-b5a7-42c9-8b3b-5d4f07c64457","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9kb3dubG9hZHMvUERfTkxfTEFVLmdwa2cuemlw"},{"type":"Message","id":"EID82657fc5-862f-4c8b-a1b7-86639ccfe883","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID82657fc5-862f-4c8b-a1b7-86639ccfe883"}},{"type":"Message","id":"EIDc3f8947d-46e1-407f-9924-3a84b97f9605","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDc3f8947d-46e1-407f-9924-3a84b97f9605"}},{"type":"GetParameter","id":"EID44324c15-db3e-4288-9495-213341476d59","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID8457f1e6-5861-45a0-ba16-785fbf3085d1","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID8457f1e6-5861-45a0-ba16-785fbf3085d1"}},{"type":"GetParameter","id":"EID5a68288e-b349-457f-9200-51625d57ee46","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID98a08e83-9c63-44b0-90c5-dabbfd62b036","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID98a08e83-9c63-44b0-90c5-dabbfd62b036"}},{"type":"GetParameter","id":"EIDf423841c-6caa-4f73-9bec-95499eda475e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceResponse","id":"EID7112bb52-7758-4c34-8d91-1953a593fa3b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID7112bb52-7758-4c34-8d91-1953a593fa3b"}},{"type":"Message","id":"EID9ff95e90-476f-4abd-82f2-0780bf652021","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID9ff95e90-476f-4abd-82f2-0780bf652021"}},{"type":"GetParameter","id":"EID69614da2-18d9-40b1-9a7c-c5b313f76b18","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID96f3a296-9f35-4495-a4c5-8d2bb033d209","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"GetParameter","id":"EIDcea02aac-6cc4-4967-9618-a7de08bb23d1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID6bb0a629-5916-47df-bf4b-4f1a34feaa38","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID6bb0a629-5916-47df-bf4b-4f1a34feaa38"}},{"type":"Message","id":"EIDdb523847-f581-48e4-beaa-6a98fb79d9ab","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDdb523847-f581-48e4-beaa-6a98fb79d9ab"}},{"type":"ServiceEndpoint","id":"EID3a5c7e71-716b-4b36-bf75-26fbf98b1d25","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID56fb7dc7-4f65-417c-8641-7ac5734aed98","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID56fb7dc7-4f65-417c-8641-7ac5734aed98"}},{"type":"ServiceEndpoint","id":"EID01d2d418-231e-4614-9c64-2b1f7cb43db8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"Message","id":"EIDa48c5df7-c376-4fea-93ba-29276d5655a9","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDa48c5df7-c376-4fea-93ba-29276d5655a9"}},{"type":"GetParameter","id":"EIDde9fe389-8906-431f-bd76-abd6831be18d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID76d467ff-abd5-4f9d-984b-03f0407eb4c7","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID76d467ff-abd5-4f9d-984b-03f0407eb4c7"}},{"type":"GetParameter","id":"EIDcc42b330-5bb7-4ed7-89ae-267c7b9f6307","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID20758eab-f429-4833-bc49-af43c2b96ebe","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"Message","id":"EID5732a89f-61f0-4ece-9b13-30925aa22077","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID5732a89f-61f0-4ece-9b13-30925aa22077"}},{"type":"ServiceEndpoint","id":"EID9cd4ce35-6100-45fa-ba8a-336c9341dc52","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID014ab027-a565-4dc8-87c6-283ad5a96ae2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID014ab027-a565-4dc8-87c6-283ad5a96ae2"}},{"type":"ServiceEndpoint","id":"EID162435de-cc0b-45b6-a8db-1e4688ac5c78","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID75902964-81ae-4b5c-86ee-92d852a44b51","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID75902964-81ae-4b5c-86ee-92d852a44b51"}},{"type":"Message","id":"EIDcec17c22-ed16-41d7-a164-ffa011f92f86","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDcec17c22-ed16-41d7-a164-ffa011f92f86"}},{"type":"ServiceEndpoint","id":"EID79c79de8-0346-403f-ad3a-128aa6b34f45","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EIDcd78837a-8488-4f44-8d30-f8d8ad5aa332","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceEndpoint","id":"EIDe6356148-aafa-4418-a144-be5246e626a3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"Message","id":"EID05a7a34e-c6a5-48b7-ba35-70e57a960f79","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID05a7a34e-c6a5-48b7-ba35-70e57a960f79"}},{"type":"Message","id":"EID4d1da9f4-cd26-4646-9c3b-c2af3a509057","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID4d1da9f4-cd26-4646-9c3b-c2af3a509057"}},{"type":"GetParameter","id":"EID28f41e64-dcf0-46f2-b657-8eac045ee3b1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID9ae38ec1-7910-486e-a894-a291c2e7699b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID9ae38ec1-7910-486e-a894-a291c2e7699b"}},{"type":"GetParameter","id":"EID9084a425-11bf-4f78-b8ca-123b00145358","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDac1b1d22-3d0f-4f29-975a-9046e8e8bdda","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDac1b1d22-3d0f-4f29-975a-9046e8e8bdda"}},{"type":"ServiceEndpoint","id":"EID9072c3d7-1c7a-4f94-b312-7a998363bdc1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceEndpoint","id":"EID7e2ef014-24ad-4753-b879-8a6be7325c11","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID55cd3c39-717f-43bf-83c5-a1164bd9ffb2","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID55cd3c39-717f-43bf-83c5-a1164bd9ffb2"}},{"type":"Message","id":"EID6f1142f3-9aae-4d49-b44e-118999287eaf","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID6f1142f3-9aae-4d49-b44e-118999287eaf"}},{"type":"Message","id":"EID85dcdfe9-c42b-4e1a-abe6-e66e7b039a7c","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID85dcdfe9-c42b-4e1a-abe6-e66e7b039a7c"}},{"type":"GetParameter","id":"EIDa8054fa8-e9cc-489c-9d55-0ca94628ccf4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDdf5024d1-f44c-4213-bdf8-4e44a5873b31","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDa86bd922-b8ae-48e8-b217-d1adcd24b6e3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID1f257eed-cd1c-4025-80eb-18808067dd29","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID1f257eed-cd1c-4025-80eb-18808067dd29"}},{"type":"GetParameter","id":"EID83815f47-e954-400f-b9ad-2a48f2721d97","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L2Nzdw=="},{"type":"Message","id":"EID120d9261-7cf8-49fa-a766-112c65a9499c","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID120d9261-7cf8-49fa-a766-112c65a9499c"}},{"type":"ServiceEndpoint","id":"EIDf9c8f1d6-3d7f-4450-8f91-119eeebea520","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID04f0e616-b756-454b-99ff-56b823290432","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID2b233de3-0094-4edf-8025-3c70469c201f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID2b233de3-0094-4edf-8025-3c70469c201f"}},{"type":"ServiceResponse","id":"EID1a491d92-a84d-40fa-875b-7c8957b86a77","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID1a491d92-a84d-40fa-875b-7c8957b86a77"}},{"type":"ServiceEndpoint","id":"EID4ac71780-a647-43f3-b732-1235926a0f9d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID5a965140-56b6-4e3a-8dd5-4da8778459b9","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID5a965140-56b6-4e3a-8dd5-4da8778459b9"}},{"type":"Message","id":"EIDb4cc5b5a-e20c-46e8-b203-a37b1c2e3ad4","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDb4cc5b5a-e20c-46e8-b203-a37b1c2e3ad4"}},{"type":"ServiceEndpoint","id":"EIDa82ab63e-050b-45ca-a3a0-3610893bdb42","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EIDd1c3ffae-2abc-4040-9215-c915e2ee2bdb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDd1c3ffae-2abc-4040-9215-c915e2ee2bdb"}},{"type":"ServiceResponse","id":"EID272a1770-3847-4551-af29-1bbda1a8e9e1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID272a1770-3847-4551-af29-1bbda1a8e9e1"}},{"type":"ServiceResponse","id":"EID66d2e9f5-d800-4703-a058-1da10c7e1080","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID66d2e9f5-d800-4703-a058-1da10c7e1080"}},{"type":"Message","id":"EID4ec00fbc-8b34-480e-ac91-383259b6fe89","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID4ec00fbc-8b34-480e-ac91-383259b6fe89"}},{"type":"GetParameter","id":"EIDc4190b8e-1d27-4786-ba00-882bd56f5827","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID986e9aa5-83e1-4778-ac84-a49ab4b94df2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"GetParameter","id":"EIDe29a253f-3bb8-4e1e-95f5-ada5026000cb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDc8d8b4e3-649a-4168-8c1c-f4568394d9f3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDc8d8b4e3-649a-4168-8c1c-f4568394d9f3"}},{"type":"ServiceEndpoint","id":"EID42001d40-e0cf-423f-ac7a-8d33414d2044","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"Message","id":"EID566ea73d-dd0c-40d7-a3e7-1497f38477cc","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID566ea73d-dd0c-40d7-a3e7-1497f38477cc"}},{"type":"GetParameter","id":"EID51db1248-dc75-47e0-9ecb-7411a81f4c69","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EIDa69e9f4a-990a-46df-9173-b978cd017f5b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID2a03e37a-1399-4a17-8930-7cd8d7319eaa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EIDaf8c29b4-8863-4917-ab4b-0a5a2d10d481","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDda5a3824-58c6-4dc7-8cd0-dd1bcbca870b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EID10d94d84-f29b-4592-a00e-fb987feff03f","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID10d94d84-f29b-4592-a00e-fb987feff03f"}},{"type":"ServiceEndpoint","id":"EID014d1b23-53ea-422f-8d79-cb4264bea5b9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"GetParameter","id":"EIDcc696506-a35c-408d-89f8-7423ee26489d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDdfd35954-b9e4-4cea-a996-c080e7cbbf07","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDdfd35954-b9e4-4cea-a996-c080e7cbbf07"}},{"type":"Message","id":"EIDd3d30c05-90be-452e-ac7e-7e37db1083b3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDd3d30c05-90be-452e-ac7e-7e37db1083b3"}},{"type":"ServiceResponse","id":"EID8f03e4fb-7f2b-4c61-af0a-cf6dbf8592c2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID8f03e4fb-7f2b-4c61-af0a-cf6dbf8592c2"}},{"type":"Message","id":"EIDfd2b9368-6c3d-4a69-8792-5e30a9dba4e9","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDfd2b9368-6c3d-4a69-8792-5e30a9dba4e9"}},{"type":"ServiceEndpoint","id":"EID9a139ae2-0ce8-4119-8022-794266f50269","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDc439036c-9daf-41a2-ae1a-19a8ca2c70a2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDc439036c-9daf-41a2-ae1a-19a8ca2c70a2"}},{"type":"ServiceEndpoint","id":"EID5792038a-af74-4202-8430-70b63c1f73ac","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID9f09f60b-cf9c-46c5-a29b-29b94f11b702","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID9f09f60b-cf9c-46c5-a29b-29b94f11b702"}},{"type":"Message","id":"EID1ac559c8-6ec6-4b22-925e-a1dd4470b344","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID1ac559c8-6ec6-4b22-925e-a1dd4470b344"}},{"type":"GetParameter","id":"EID336c3f27-eabb-437f-a888-d82574705ba5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceEndpoint","id":"EID39a883ff-ae7e-4ab9-933d-9fbf241ee779","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"GetParameter","id":"EID518db58b-c02d-4d8f-805b-259182bc623a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceResponse","id":"EIDd1f6db61-c49f-48c4-8984-d63339660062","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDd1f6db61-c49f-48c4-8984-d63339660062"}},{"type":"GetParameter","id":"EIDd5b55cdd-21da-4b25-99f8-68f58e2e7316","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceEndpoint","id":"EID3887a27c-ea1b-4e38-a02c-ff7b100752d8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"GetParameter","id":"EID2d625686-13f3-40da-99ea-b013020b98f6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID6c34c4c7-1fa1-462c-a521-8b2edc408108","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDada2f8a4-3ac0-47e3-8d15-a570a10e199e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID11cad9cc-4405-479b-b53d-be9447891418","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID11cad9cc-4405-479b-b53d-be9447891418"}},{"type":"Message","id":"EID1f3c25da-edbc-4468-af9d-5c902edb9d80","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID1f3c25da-edbc-4468-af9d-5c902edb9d80"}},{"type":"ServiceEndpoint","id":"EIDbbd9c8f6-2686-496c-ad6c-6a58a9d32359","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDdbe2290d-d7e0-4159-8485-66cd33b81d0b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceEndpoint","id":"EIDc4c97ff4-d25c-4fa2-86ff-ac318282403c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID4bbf620b-3412-4d9c-93b6-b8fe0db468e9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID4bbf620b-3412-4d9c-93b6-b8fe0db468e9"}},{"type":"Message","id":"EIDd9d16264-c14c-4be9-a6b1-890ade978cc5","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDd9d16264-c14c-4be9-a6b1-890ade978cc5"}},{"type":"GetParameter","id":"EID245ea30d-599d-4752-9541-125ca902905a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID9e47ec9c-42d2-4e93-b72f-1128452808c4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"GetParameter","id":"EIDff1ec0a1-8e5d-4a09-bd4f-93f202282169","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID89457359-be8f-4d9a-97ea-cdc5358b3980","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID89457359-be8f-4d9a-97ea-cdc5358b3980"}},{"type":"Message","id":"EID6fffdfe3-8e40-46a3-a8a0-61c16e9a006d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID6fffdfe3-8e40-46a3-a8a0-61c16e9a006d"}},{"type":"ServiceEndpoint","id":"EID67e480be-dc01-471a-ab1b-58eda8783366","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"GetParameter","id":"EID3245c3ec-0b01-45c8-8e7b-8fcd8bcb1535","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDe4717820-2439-4361-97b8-89e8c346266d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDe4717820-2439-4361-97b8-89e8c346266d"}},{"type":"ServiceResponse","id":"EIDa8ea4c42-5aec-486e-a6b3-d7d17f27154a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDa8ea4c42-5aec-486e-a6b3-d7d17f27154a"}},{"type":"Message","id":"EID41d06f0b-9d34-4630-8003-852d734911be","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID41d06f0b-9d34-4630-8003-852d734911be"}},{"type":"Message","id":"EIDafd56515-7e3e-45b9-8758-6c6d1cd6c07e","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDafd56515-7e3e-45b9-8758-6c6d1cd6c07e"}},{"type":"Message","id":"EID55190bbb-0c95-44df-9828-48893c903f9d","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID55190bbb-0c95-44df-9828-48893c903f9d"}},{"type":"ServiceResponse","id":"EIDf69401e8-925d-49d4-a291-e35f7c3ef612","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDf69401e8-925d-49d4-a291-e35f7c3ef612"}},{"type":"GetParameter","id":"EID127ccbc2-5993-492d-bb31-048f8e229df1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID423290ce-356f-4759-a796-c1651a435aa0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDb8cff6c6-e99e-4779-9bdc-146866b40cfe","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDb8cff6c6-e99e-4779-9bdc-146866b40cfe"}},{"type":"Message","id":"EID1f3c9f00-3a44-4dbe-bafc-3cf6e3510ee0","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID1f3c9f00-3a44-4dbe-bafc-3cf6e3510ee0"}},{"type":"GetParameter","id":"EIDcc606c96-c924-4b4f-9ac3-7962f9bff47f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDc5493235-de04-4018-b40f-b2d0d572d1cf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDcc28c819-8a57-4d24-b094-d3c48f5a830f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDdc84215f-f3a8-4706-a858-186f5912542b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDdc84215f-f3a8-4706-a858-186f5912542b"}},{"type":"ServiceResponse","id":"EID30185029-89ac-4110-a4a1-008bf5760738","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID30185029-89ac-4110-a4a1-008bf5760738"}},{"type":"Message","id":"EID73d0877e-9630-4c40-b5f6-e9cfc38fe169","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID73d0877e-9630-4c40-b5f6-e9cfc38fe169"}},{"type":"GetParameter","id":"EIDb45ab409-7d58-4141-a0a1-c9e722ff3f8c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID93ebb31e-be43-4498-ad4e-6ce4e4497ba2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDeb982dd2-5b15-4dfc-839c-396e6a2277a7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDc1dba97b-765a-4ea8-b2de-e3b7b9a9630f","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDc1dba97b-765a-4ea8-b2de-e3b7b9a9630f"}},{"type":"ServiceResponse","id":"EIDd4619344-3b16-42f9-b6e4-5e3533349056","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDd4619344-3b16-42f9-b6e4-5e3533349056"}},{"type":"Message","id":"EID10c943e0-5417-457a-a9ea-2ab18c93b06d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID10c943e0-5417-457a-a9ea-2ab18c93b06d"}},{"type":"LogFile","id":"EID195158d7-210b-47b9-94a9-db755db77ec4","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID195158d7-210b-47b9-94a9-db755db77ec4"}},{"type":"ServiceEndpoint","id":"EID2750f6ec-2942-42b6-b1da-7cec6ee36bd0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"Message","id":"EIDab411827-c9c9-4261-ae87-3986a2ee442a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDab411827-c9c9-4261-ae87-3986a2ee442a"}},{"type":"ServiceResponse","id":"EID66dab741-7b63-4ac6-869d-bc28750f2f6f","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID66dab741-7b63-4ac6-869d-bc28750f2f6f"}},{"type":"GetParameter","id":"EID441eb80c-a767-419d-a93a-d8ae7233724c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceEndpoint","id":"EID8fe90792-162c-4ee2-9b71-1b0ea4590ad7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID12fc8156-7258-4fba-b186-8df78f9bdaab","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDed926d10-b28c-4706-be37-624f0d486b98","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID9fae9b59-6681-4d86-b64e-b719ddf9843c","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID9fae9b59-6681-4d86-b64e-b719ddf9843c"}},{"type":"GetParameter","id":"EIDab98dc74-aa13-4e56-8fc7-023475735afc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"Message","id":"EID834e91a9-844b-4eb2-b17a-dc7b8848388c","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID834e91a9-844b-4eb2-b17a-dc7b8848388c"}},{"type":"ServiceResponse","id":"EID03867412-847d-471c-bdda-3e96415dc21b","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID03867412-847d-471c-bdda-3e96415dc21b"}},{"type":"Message","id":"EIDaca0e445-f078-43a0-a7e1-d94bd6b726b4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDaca0e445-f078-43a0-a7e1-d94bd6b726b4"}},{"type":"GetParameter","id":"EID5e904795-4c3f-4ac1-bcca-638e291b5d84","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"Message","id":"EID4c990831-29cd-4bff-a367-8cfbaf3eaa4c","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID4c990831-29cd-4bff-a367-8cfbaf3eaa4c"}},{"type":"ServiceEndpoint","id":"EIDa01ade89-6746-48df-b40c-f75b2321d324","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDa3cfdbc9-d54a-452c-985f-5778a28488fe","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"Message","id":"EID2998d845-9eeb-4e6c-9057-3e745213da6c","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID2998d845-9eeb-4e6c-9057-3e745213da6c"}},{"type":"ServiceEndpoint","id":"EID12416cc2-e756-4ed5-8577-62fd39e38b46","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID8e866cfc-13f9-43ca-8dd8-e7b69984b4ac","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID8e866cfc-13f9-43ca-8dd8-e7b69984b4ac"}},{"type":"Message","id":"EIDf0df3b48-f942-4a35-a538-bdf2ee5bf472","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDf0df3b48-f942-4a35-a538-bdf2ee5bf472"}},{"type":"Message","id":"EID78278209-8736-4d66-b267-fa824551754c","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID78278209-8736-4d66-b267-fa824551754c"}},{"type":"ServiceResponse","id":"EID324b4d1d-31d5-4cbc-9896-38452c2a572b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID324b4d1d-31d5-4cbc-9896-38452c2a572b"}},{"type":"ServiceResponse","id":"EID3dbd82e6-8908-4633-bc69-0e76981e203d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID3dbd82e6-8908-4633-bc69-0e76981e203d"}},{"type":"ServiceEndpoint","id":"EID86ea0dd1-8049-479f-9302-a860aabd4add","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID8b4e4de7-9d9e-4097-83b4-020d77541207","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID490de9fb-b2ff-4bbd-a831-9f07526d4f69","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"GetParameter","id":"EID86ea0098-c08b-4fa2-b8e7-024d840b78fd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9OTC1wb3B1bGF0aW9uLTIwMTgtcGVyLUxBVS1yZWdpb24tQVRPTS54bWw="},{"type":"ServiceEndpoint","id":"EID3cba3340-42c9-4915-8a78-795e5a60bc0f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDccca3d4f-36c7-4258-8aa8-04d008b709aa","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDccca3d4f-36c7-4258-8aa8-04d008b709aa"}},{"type":"ServiceResponse","id":"EID3204cf4f-4c6d-4c27-80a5-3f81aacaccc7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID3204cf4f-4c6d-4c27-80a5-3f81aacaccc7"}},{"type":"Message","id":"EID5551cea7-b631-47d5-bd0a-a7ff2d44151f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID5551cea7-b631-47d5-bd0a-a7ff2d44151f"}},{"type":"GetParameter","id":"EIDead31bd2-880d-409a-baef-3ee22dae45dc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID49650e74-17ae-4b32-b197-ed8d58a94aea","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L2Nzdw=="},{"type":"ServiceResponse","id":"EID9cc5db46-a36c-4f36-9221-398eb1d4796d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID9cc5db46-a36c-4f36-9221-398eb1d4796d"}},{"type":"GetParameter","id":"EIDce35528d-3e06-4072-a42f-b6b721c99f3f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMzdlNTViZC1hMWRjLTRmZGUtYWRmZS00NjEwZDNhM2Q1Y2IvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID21421243-2bd6-4f7f-97ac-61acd1d58ac3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL3BkL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID8dc91343-e83b-4c5c-8d0d-5210669116f1","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EID8dc91343-e83b-4c5c-8d0d-5210669116f1"}},{"type":"Message","id":"EIDb4de9d9a-bcc2-4c51-a42f-9d83064b165d","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb04d4407-fa69-43c0-891a-77acbc251073/Attachments/EIDb4de9d9a-bcc2-4c51-a42f-9d83064b165d"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:22:03Z","duration":11289,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:22:39.357 [print] EID5671eeba-0f9e-4105-b886-fa69717693d3
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:22:39.357 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:22:39.357 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:22:39.357 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:22:39.357 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/5671eeba-0f9e-4105-b886-fa69717693d3.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:22:39.357 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/5671eeba-0f9e-4105-b886-fa69717693d3.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:22:39.357 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID5671eeba-0f9e-4105-b886-fa69717693d3/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.012
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
13:22:39.371 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
13:22:39.372 [print] [
  "TR.uniqueDatasetIdentifiers",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* print sortedrefs 0.000
13:22:39.372 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1.724
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.001
13:19:28.847 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-a/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.722
13:19:28.848 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 279
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-a/wfs?request=GetCapabilities"}}}

13:19:30.570 response time in milliseconds: 1616.73
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:19:30 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804770393","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:19:30.570 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
23.080
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:18:06.177 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/atom/bestandbodemgebruik2015.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 4.960
13:18:06.178 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 295
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/atom/bestandbodemgebruik2015.xml"}}}

13:18:11.136 response time in milliseconds: 4209.79
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:18:10 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:18:08 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/a98726ca-febc-41c0-b37f-edb369be69c0.json","testRuns":{"TestRun":{"id":"EIDa98726ca-febc-41c0-b37f-edb369be69c0","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:18:07.722Z","testTasks":{"TestTask":{"id":"EID0dd821dc-7e9d-4084-add7-711069fe8d65","parent":{"ref":"EIDa98726ca-febc-41c0-b37f-edb369be69c0"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDfff124d2-ddcb-4ed1-bf6e-b09cb1267587"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa98726ca-febc-41c0-b37f-edb369be69c0/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDfff124d2-ddcb-4ed1-bf6e-b09cb1267587","remoteResource":"https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/atom/bestandbodemgebruik2015.xml","label":"bestandbodemgebruik2015.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:18:06.609Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:18:07.202Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/atom/bestandbodemgebruik2015.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.002
13:18:11.141 [print] EIDa98726ca-febc-41c0-b37f-edb369be69c0
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:18:11.141 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.001
13:18:11.142 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:18:11.142 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/a98726ca-febc-41c0-b37f-edb369be69c0.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:18:11.143 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa98726ca-febc-41c0-b37f-edb369be69c0/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:18:11.143 [print] statuspath TestRuns/EIDa98726ca-febc-41c0-b37f-edb369be69c0
* print 'progresspath ', progresspath 0.000
13:18:11.143 [print] progresspath  TestRuns/EIDa98726ca-febc-41c0-b37f-edb369be69c0/progress
Given path progresspath 0.000
When method GET 0.570
13:18:11.144 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa98726ca-febc-41c0-b37f-edb369be69c0/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:11.714 response time in milliseconds: 569.62
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:18:11 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"25","max":"26","log":["27.10.2020 13:18:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:07 UTC 2020)","27.10.2020 13:18:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:07 - Preparing 1 Test Task:","27.10.2020 13:18:07 -  TestTask 1 (0dd821dc-7e9d-4084-add7-711069fe8d65)","27.10.2020 13:18:07 -  will perform tests on Test Object \u0027bestandbodemgebruik2015.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:07 -  with parameters: ","27.10.2020 13:18:07 - etf.testcases = *","27.10.2020 13:18:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:07 - Setting state to CREATED","27.10.2020 13:18:07 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:08 - Starting TestRun.a98726ca-febc-41c0-b37f-edb369be69c0 at 2020-10-27T13:18:09Z","27.10.2020 13:18:09 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:09 - Project Properties: ","27.10.2020 13:18:09 - etf.testcases - * ","27.10.2020 13:18:09 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/atom/bestandbodemgebruik2015.xml ","27.10.2020 13:18:09 - username -  ","27.10.2020 13:18:09 - authUser -  ","27.10.2020 13:18:09 - authMethod - basic ","27.10.2020 13:18:09 - TestRunTask initialized","27.10.2020 13:18:11 ERROR Assertion failed with error \u0027TR.missingSpatialDatasetIdentifierCode\u0027","27.10.2020 13:18:11 ERROR Assertion failed with error \u0027TR.missingSpatialDatasetIdentifierNamespace\u0027"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:18:11.714 [print] {
  "val": "25",
  "max": "26",
  "log": [
    "27.10.2020 13:18:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:07 UTC 2020)",
    "27.10.2020 13:18:07 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:18:07 - Preparing 1 Test Task:",
    "27.10.2020 13:18:07 -  TestTask 1 (0dd821dc-7e9d-4084-add7-711069fe8d65)",
    "27.10.2020 13:18:07 -  will perform tests on Test Object 'bestandbodemgebruik2015.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:18:07 -  with parameters: ",
    "27.10.2020 13:18:07 - etf.testcases = *",
    "27.10.2020 13:18:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:18:07 - Setting state to CREATED",
    "27.10.2020 13:18:07 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:18:08 - Starting TestRun.a98726ca-febc-41c0-b37f-edb369be69c0 at 2020-10-27T13:18:09Z",
    "27.10.2020 13:18:09 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:18:09 - Project Properties: ",
    "27.10.2020 13:18:09 - etf.testcases - * ",
    "27.10.2020 13:18:09 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/atom/bestandbodemgebruik2015.xml ",
    "27.10.2020 13:18:09 - username -  ",
    "27.10.2020 13:18:09 - authUser -  ",
    "27.10.2020 13:18:09 - authMethod - basic ",
    "27.10.2020 13:18:09 - TestRunTask initialized",
    "27.10.2020 13:18:11 ERROR Assertion failed with error 'TR.missingSpatialDatasetIdentifierCode'",
    "27.10.2020 13:18:11 ERROR Assertion failed with error 'TR.missingSpatialDatasetIdentifierNamespace'"
  ]
}
Given path progresspath 0.000
When method GET 13.125
13:18:11.715 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa98726ca-febc-41c0-b37f-edb369be69c0/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:12.226 response time in milliseconds: 511.00
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:18:12 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"34","max":"35","log":["27.10.2020 13:18:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:07 UTC 2020)","27.10.2020 13:18:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:07 - Preparing 1 Test Task:","27.10.2020 13:18:07 -  TestTask 1 (0dd821dc-7e9d-4084-add7-711069fe8d65)","27.10.2020 13:18:07 -  will perform tests on Test Object \u0027bestandbodemgebruik2015.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:07 -  with parameters: ","27.10.2020 13:18:07 - etf.testcases = *","27.10.2020 13:18:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:07 - Setting state to CREATED","27.10.2020 13:18:07 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:08 - Starting TestRun.a98726ca-febc-41c0-b37f-edb369be69c0 at 2020-10-27T13:18:09Z","27.10.2020 13:18:09 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:09 - Project Properties: ","27.10.2020 13:18:09 - etf.testcases - * ","27.10.2020 13:18:09 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/atom/bestandbodemgebruik2015.xml ","27.10.2020 13:18:09 - username -  ","27.10.2020 13:18:09 - authUser -  ","27.10.2020 13:18:09 - authMethod - basic ","27.10.2020 13:18:09 - TestRunTask initialized","27.10.2020 13:18:11 ERROR Assertion failed with error \u0027TR.missingSpatialDatasetIdentifierCode\u0027","27.10.2020 13:18:11 ERROR Assertion failed with error \u0027TR.missingSpatialDatasetIdentifierNamespace\u0027"]}

13:18:12.227 retry condition not satisfied: response.val == response.max
13:18:12.227 sleeping before retry #1
13:18:17.228 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa98726ca-febc-41c0-b37f-edb369be69c0/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:17.791 response time in milliseconds: 562.21
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:18:17 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"86","max":"87","log":["27.10.2020 13:18:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:07 UTC 2020)","27.10.2020 13:18:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:07 - Preparing 1 Test Task:","27.10.2020 13:18:07 -  TestTask 1 (0dd821dc-7e9d-4084-add7-711069fe8d65)","27.10.2020 13:18:07 -  will perform tests on Test Object \u0027bestandbodemgebruik2015.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:07 -  with parameters: ","27.10.2020 13:18:07 - etf.testcases = *","27.10.2020 13:18:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:07 - Setting state to CREATED","27.10.2020 13:18:07 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:08 - Starting TestRun.a98726ca-febc-41c0-b37f-edb369be69c0 at 2020-10-27T13:18:09Z","27.10.2020 13:18:09 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:09 - Project Properties: ","27.10.2020 13:18:09 - etf.testcases - * ","27.10.2020 13:18:09 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/atom/bestandbodemgebruik2015.xml ","27.10.2020 13:18:09 - username -  ","27.10.2020 13:18:09 - authUser -  ","27.10.2020 13:18:09 - authMethod - basic ","27.10.2020 13:18:09 - TestRunTask initialized","27.10.2020 13:18:11 ERROR Assertion failed with error \u0027TR.missingSpatialDatasetIdentifierCode\u0027","27.10.2020 13:18:11 ERROR Assertion failed with error \u0027TR.missingSpatialDatasetIdentifierNamespace\u0027","27.10.2020 13:18:12 ERROR Assertion failed with error \u0027TR.missingOpenSearchDescriptionDocumentLink\u0027","27.10.2020 13:18:12 ERROR Assertion failed with error \u0027TR.missingLinkToDatasetMetadataRecord\u0027","27.10.2020 13:18:13 ERROR Assertion failed with error \u0027TR.missingOpenSearchDescriptionDocumentLink\u0027","27.10.2020 13:18:14 ERROR Assertion failed with error \u0027TR.missingSpatialDatasetIdentifierCode\u0027","27.10.2020 13:18:14 ERROR Assertion failed with error \u0027TR.missingSpatialDatasetIdentifierNamespace\u0027","27.10.2020 13:18:15 ERROR Assertion failed with error \u0027TR.invalidDatasetFeedLinks\u0027","27.10.2020 13:18:15 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:18:15 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:18:15 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:18:15 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:18:15 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:18:15 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:18:15 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:18:15 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:18:15 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:18:15 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:18:15 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:18:15 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:18:16 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:18:16 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:18:17.791 retry condition not satisfied: response.val == response.max
13:18:17.791 sleeping before retry #2
13:18:22.792 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa98726ca-febc-41c0-b37f-edb369be69c0/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:24.839 response time in milliseconds: 2046.55
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:18:24 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:18:24.839 retry condition satisfied
* print response 0.000
13:18:24.839 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 4.391
13:18:24.840 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa98726ca-febc-41c0-b37f-edb369be69c0
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:29.228 response time in milliseconds: 3539.83
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Cache-Control: public, max-age=120
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:18:28 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Last-Modified: Tue, 27 Oct 2020 13:18:08 GMT
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/a98726ca-febc-41c0-b37f-edb369be69c0.json","testRuns":{"TestRun":{"id":"EIDa98726ca-febc-41c0-b37f-edb369be69c0","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:18:07.722Z","testTasks":{"TestTask":{"id":"EID0dd821dc-7e9d-4084-add7-711069fe8d65","parent":{"ref":"EIDa98726ca-febc-41c0-b37f-edb369be69c0"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDfff124d2-ddcb-4ed1-bf6e-b09cb1267587"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID571a2ee6-9067-4cb3-9360-449ce25b2db1"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa98726ca-febc-41c0-b37f-edb369be69c0/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDfff124d2-ddcb-4ed1-bf6e-b09cb1267587","remoteResource":"https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/atom/bestandbodemgebruik2015.xml","label":"bestandbodemgebruik2015.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:18:06.609Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:18:07.202Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/atom/bestandbodemgebruik2015.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID571a2ee6-9067-4cb3-9360-449ce25b2db1","testObject":{"ref":"EIDfff124d2-ddcb-4ed1-bf6e-b09cb1267587"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a3575fe-0175-1000-6ef4-5d7dbffe950f","testCaseResults":{"TestCaseResult":[{"id":"EID6a3575fe-0175-1000-f3f4-8bbe840ad746","testStepResults":{"TestStepResult":[{"id":"EID6a3575fe-0175-1000-93b7-4f53028a1411","parent":{"ref":"EID6a3575fe-0175-1000-f3f4-8bbe840ad746"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:18:09Z","duration":18,"status":"PASSED"},{"id":"EID6a357611-0175-1000-773d-2f809ef91d1b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3576b4-0175-1000-73a2-9b2c035b1b81","parent":{"ref":"EID6a357611-0175-1000-773d-2f809ef91d1b"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a3576b4-0175-1000-95d5-9f8583c4fbfb","parent":{"ref":"EID6a357611-0175-1000-773d-2f809ef91d1b"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:18:10Z","duration":1,"status":"PASSED"},{"id":"EID6a3576b5-0175-1000-962c-c1f2ed427698","parent":{"ref":"EID6a357611-0175-1000-773d-2f809ef91d1b"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a3576b5-0175-1000-aa95-5cb026ef8ef3","parent":{"ref":"EID6a357611-0175-1000-773d-2f809ef91d1b"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfe0c0019-25ae-47a5-8601-68c88d8f54ec"},{"ref":"EIDcb42cf96-2d79-45dd-96b8-47f15c1aa7cd"},{"ref":"EID0090f747-f2d6-4c04-b91b-56973a74bf1e"}]},"parent":{"ref":"EID6a3575fe-0175-1000-f3f4-8bbe840ad746"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:18:09Z","duration":51,"status":"PASSED"}]},"parent":{"ref":"EID6a3575fe-0175-1000-6ef4-5d7dbffe950f"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:18:09Z","duration":183,"status":"PASSED"},{"id":"EID6a3576b5-0175-1000-fae1-fcf858ac3807","testStepResults":{"TestStepResult":{"id":"EID6a3576b5-0175-1000-ea28-92bb73ccdf0f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a357742-0175-1000-1aad-1527c4ec1317","parent":{"ref":"EID6a3576b5-0175-1000-ea28-92bb73ccdf0f"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:18:10Z","duration":1,"status":"PASSED"},{"id":"EID6a357743-0175-1000-05d8-6491c5cfdb21","parent":{"ref":"EID6a3576b5-0175-1000-ea28-92bb73ccdf0f"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a357743-0175-1000-2e79-f97f0993a312","parent":{"ref":"EID6a3576b5-0175-1000-ea28-92bb73ccdf0f"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcb67eb85-ef2c-4b0e-bb64-376828fd117f"},{"ref":"EID950c56f8-4fc2-46d6-ba25-f53cf169d76e"},{"ref":"EID4dca0add-7d33-4883-be14-52d436c44f8e"}]},"parent":{"ref":"EID6a3576b5-0175-1000-fae1-fcf858ac3807"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:18:10Z","duration":60,"status":"PASSED"}},"parent":{"ref":"EID6a3575fe-0175-1000-6ef4-5d7dbffe950f"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:18:10Z","duration":142,"status":"PASSED"}]},"parent":{"ref":"EID571a2ee6-9067-4cb3-9360-449ce25b2db1"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:18:09Z","duration":325,"status":"PASSED"},{"id":"EID6a357743-0175-1000-799b-29ded93787c1","testCaseResults":{"TestCaseResult":[{"id":"EID6a357743-0175-1000-fdc6-c8baa2db44e1","testStepResults":{"TestStepResult":[{"id":"EID6a357743-0175-1000-2372-71e02810ab95","parent":{"ref":"EID6a357743-0175-1000-fdc6-c8baa2db44e1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:18:10Z","duration":60,"status":"PASSED"},{"id":"EID6a357743-0175-1000-bfcf-4251518c66f6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3577c9-0175-1000-3c25-df80edef7bd2","parent":{"ref":"EID6a357743-0175-1000-bfcf-4251518c66f6"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a3577ca-0175-1000-0449-d2a46466736b","parent":{"ref":"EID6a357743-0175-1000-bfcf-4251518c66f6"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a3577ca-0175-1000-52c7-32a650f90d02","parent":{"ref":"EID6a357743-0175-1000-bfcf-4251518c66f6"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a3577ca-0175-1000-946c-ae7404e5b86b","parent":{"ref":"EID6a357743-0175-1000-bfcf-4251518c66f6"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a3577ca-0175-1000-a65d-12c71a0c8c07","parent":{"ref":"EID6a357743-0175-1000-bfcf-4251518c66f6"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID66e63b43-a25f-4e75-a31f-24b4066ec110"},{"ref":"EID58382979-00bd-4b19-ad87-cc2e40a37086"},{"ref":"EID747b1ee5-2d81-41b9-b736-16ccd01b390f"}]},"parent":{"ref":"EID6a357743-0175-1000-fdc6-c8baa2db44e1"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:18:10Z","duration":42,"status":"PASSED"}]},"parent":{"ref":"EID6a357743-0175-1000-799b-29ded93787c1"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:18:10Z","duration":148,"status":"PASSED"},{"id":"EID6a3577d7-0175-1000-ed64-b1938de5f2d0","testStepResults":{"TestStepResult":[{"id":"EID6a3577d7-0175-1000-18d7-6ec1e458835f","attachments":{"attachment":[{"ref":"EID0fc61ce8-ed04-4584-86b6-4f166da75c69"},{"ref":"EID27fd0959-8b26-44c2-8bab-37ab0cdcf4fc"}]},"parent":{"ref":"EID6a3577d7-0175-1000-ed64-b1938de5f2d0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:18:10Z","duration":77,"status":"PASSED"},{"id":"EID6a357874-0175-1000-71ce-f4deae105f0d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3578d8-0175-1000-0549-85eb2ea8b0a9","parent":{"ref":"EID6a357874-0175-1000-71ce-f4deae105f0d"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a3578d8-0175-1000-0361-4f6c6c9f744e","parent":{"ref":"EID6a357874-0175-1000-71ce-f4deae105f0d"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a3578d8-0175-1000-de92-ee68727d2e67","parent":{"ref":"EID6a357874-0175-1000-71ce-f4deae105f0d"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a3578d8-0175-1000-1ffd-37000300addd","parent":{"ref":"EID6a357874-0175-1000-71ce-f4deae105f0d"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID346dfb75-acdc-40bd-856f-1c5070417c97"},{"ref":"EID7c3ebd7c-2001-4cda-b722-65614f235114"},{"ref":"EID4d88a881-9010-42ab-b11d-7126e6fbbff2"}]},"parent":{"ref":"EID6a3577d7-0175-1000-ed64-b1938de5f2d0"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:18:10Z","duration":38,"status":"PASSED"}]},"parent":{"ref":"EID6a357743-0175-1000-799b-29ded93787c1"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:18:10Z","duration":266,"status":"PASSED"},{"id":"EID6a3578e1-0175-1000-9462-2cbb8ec3f604","testStepResults":{"TestStepResult":[{"id":"EID6a3578e1-0175-1000-512b-b3c4737f06c7","attachments":{"attachment":[{"ref":"EID7062d229-4e71-44cd-8f26-0750af195730"},{"ref":"EID6331d94e-be57-40f0-b707-a2f83a5fd17e"}]},"parent":{"ref":"EID6a3578e1-0175-1000-9462-2cbb8ec3f604"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:18:10Z","duration":94,"status":"PASSED"},{"id":"EID6a357972-0175-1000-1810-b09fea19fe19","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a357aa5-0175-1000-21b8-5b374aa70bbf","parent":{"ref":"EID6a357972-0175-1000-1810-b09fea19fe19"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"},{"id":"EID6a357aa5-0175-1000-d281-4b18b30978eb","parent":{"ref":"EID6a357972-0175-1000-1810-b09fea19fe19"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"},{"id":"EID6a357aa5-0175-1000-7e0c-8664a8bfa741","parent":{"ref":"EID6a357972-0175-1000-1810-b09fea19fe19"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"},{"id":"EID6a357aa5-0175-1000-9d27-71c6580ef738","messages":{"message":{"ref":"TR.missingSpatialDatasetIdentifierCode","translationArguments":{"argument":[{"token":"elementName","$":"entry"},{"token":"xpath","$":"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]"}]}}},"parent":{"ref":"EID6a357972-0175-1000-1810-b09fea19fe19"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"FAILED"},{"id":"EID6a357aa5-0175-1000-704b-375888c10bfa","messages":{"message":{"ref":"TR.missingSpatialDatasetIdentifierNamespace","translationArguments":{"argument":[{"token":"elementName","$":"entry"},{"token":"xpath","$":"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]"}]}}},"parent":{"ref":"EID6a357972-0175-1000-1810-b09fea19fe19"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID1340d8ea-ca53-4c7f-95f9-d1f1bc89b1e8"},{"ref":"EID106d817b-f25c-4e1a-8ab1-00606b8ac5a0"},{"ref":"EID5b8137fb-e49a-4f92-9dd9-943680fc12ea"}]},"parent":{"ref":"EID6a3578e1-0175-1000-9462-2cbb8ec3f604"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:18:10Z","duration":232,"status":"FAILED"}]},"parent":{"ref":"EID6a357743-0175-1000-799b-29ded93787c1"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:18:10Z","duration":452,"status":"FAILED"},{"id":"EID6a357aa5-0175-1000-9bee-e37a7d877332","testStepResults":{"TestStepResult":[{"id":"EID6a357aa6-0175-1000-5441-61cedce56166","attachments":{"attachment":[{"ref":"EID9fa684f7-ca9e-4cc4-9751-2d37258958e7"},{"ref":"EID9378a9e5-7327-460d-884d-da5b59ebdf2c"}]},"parent":{"ref":"EID6a357aa5-0175-1000-9bee-e37a7d877332"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:18:11Z","duration":134,"status":"PASSED"},{"id":"EID6a357b71-0175-1000-c120-820a694587cb","parent":{"ref":"EID6a357aa5-0175-1000-9bee-e37a7d877332"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"},{"id":"EID6a357b71-0175-1000-a045-8b2e0c8516bb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a357c2d-0175-1000-78da-7566a2ac5833","parent":{"ref":"EID6a357b71-0175-1000-a045-8b2e0c8516bb"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"},{"id":"EID6a357c2d-0175-1000-225c-f5b44dab0005","parent":{"ref":"EID6a357b71-0175-1000-a045-8b2e0c8516bb"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"},{"id":"EID6a357c2d-0175-1000-f47e-ebedb712eb9e","parent":{"ref":"EID6a357b71-0175-1000-a045-8b2e0c8516bb"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"},{"id":"EID6a357c2d-0175-1000-73ab-caf24ceaa192","parent":{"ref":"EID6a357b71-0175-1000-a045-8b2e0c8516bb"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf282f875-c8a6-4b33-bd9e-8786b4868738"},{"ref":"EIDb0ec40d0-385f-4f8d-b898-05d5fa88cd60"},{"ref":"EIDdfbdf2ea-08ef-4fb5-82fd-11d72ae00926"}]},"parent":{"ref":"EID6a357aa5-0175-1000-9bee-e37a7d877332"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:18:11Z","duration":44,"status":"PASSED"},{"id":"EID6a357c2d-0175-1000-60de-0bfe051b014a","attachments":{"attachment":{"ref":"EIDeb2e61bd-31ac-4954-87ff-36882e113349"}},"parent":{"ref":"EID6a357aa5-0175-1000-9bee-e37a7d877332"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:18:11Z","duration":1,"status":"PASSED"},{"id":"EID6a357c3a-0175-1000-7a98-f97b49c54d8f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a357cdd-0175-1000-6114-eacac2d2a0c0","parent":{"ref":"EID6a357c3a-0175-1000-7a98-f97b49c54d8f"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"},{"id":"EID6a357cdd-0175-1000-2565-b9d7d390f7f2","parent":{"ref":"EID6a357c3a-0175-1000-7a98-f97b49c54d8f"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"},{"id":"EID6a357cdd-0175-1000-ed64-9c714227ea59","parent":{"ref":"EID6a357c3a-0175-1000-7a98-f97b49c54d8f"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"},{"id":"EID6a357cdd-0175-1000-4e83-eebe649de49b","parent":{"ref":"EID6a357c3a-0175-1000-7a98-f97b49c54d8f"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"},{"id":"EID6a357cdd-0175-1000-fde1-b14ba9aaec03","parent":{"ref":"EID6a357c3a-0175-1000-7a98-f97b49c54d8f"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2903f349-b29e-4fbb-aea2-8ac3e7e2646d"},{"ref":"EID3fa2a9d2-93bf-4ab3-a81a-e3e96231d178"},{"ref":"EIDba8cdfba-6233-4f8c-bb6c-9b9f5064aadf"}]},"parent":{"ref":"EID6a357aa5-0175-1000-9bee-e37a7d877332"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:18:11Z","duration":51,"status":"PASSED"}]},"parent":{"ref":"EID6a357743-0175-1000-799b-29ded93787c1"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:18:11Z","duration":568,"status":"PASSED"},{"id":"EID6a357cfa-0175-1000-a8f5-d482558693b5","testStepResults":{"TestStepResult":[{"id":"EID6a357cfa-0175-1000-960d-b485d5117e45","attachments":{"attachment":[{"ref":"EID12f814c1-800a-4ab9-8cd1-9356d65c74fe"},{"ref":"EID1f74f863-8a38-4a3b-83a7-e177730d8c7d"}]},"parent":{"ref":"EID6a357cfa-0175-1000-a8f5-d482558693b5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:18:11Z","duration":159,"status":"PASSED"},{"id":"EID6a357de4-0175-1000-08b4-b3cbcb679062","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a357e64-0175-1000-0d71-7ff005ad6d80","parent":{"ref":"EID6a357de4-0175-1000-08b4-b3cbcb679062"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a357e65-0175-1000-b0c3-8b89ff730597","parent":{"ref":"EID6a357de4-0175-1000-08b4-b3cbcb679062"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a357e65-0175-1000-1b68-791527457376","parent":{"ref":"EID6a357de4-0175-1000-08b4-b3cbcb679062"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a357e65-0175-1000-116d-e628572e3d43","parent":{"ref":"EID6a357de4-0175-1000-08b4-b3cbcb679062"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdb479e2a-6409-4106-a9e1-2660f44089d4"},{"ref":"EID25e8d095-a57d-4eee-814a-1db892e66a56"},{"ref":"EIDd4d81fc2-2591-404f-b64c-05763d974d10"}]},"parent":{"ref":"EID6a357cfa-0175-1000-a8f5-d482558693b5"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:18:11Z","duration":47,"status":"PASSED"}]},"parent":{"ref":"EID6a357743-0175-1000-799b-29ded93787c1"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:18:11Z","duration":363,"status":"PASSED"},{"id":"EID6a357e65-0175-1000-d6ba-0b8c25c5c510","testStepResults":{"TestStepResult":[{"id":"EID6a357e65-0175-1000-8c82-4dfd68e56db6","attachments":{"attachment":[{"ref":"EIDc983325f-3aab-4655-8a94-2f36dbee6f37"},{"ref":"EIDa064f81e-b753-4312-a8e5-7621fe4c9979"}]},"parent":{"ref":"EID6a357e65-0175-1000-d6ba-0b8c25c5c510"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:18:12Z","duration":90,"status":"PASSED"},{"id":"EID6a357f29-0175-1000-b59f-f48d9c45385b","parent":{"ref":"EID6a357e65-0175-1000-d6ba-0b8c25c5c510"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a357f29-0175-1000-1e5b-150809c47940","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a357f9d-0175-1000-adad-33c6c22846d3","parent":{"ref":"EID6a357f29-0175-1000-1e5b-150809c47940"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a357f9d-0175-1000-d87f-63da98c98419","parent":{"ref":"EID6a357f29-0175-1000-1e5b-150809c47940"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a357f9d-0175-1000-f5f2-b57027fb6fe4","parent":{"ref":"EID6a357f29-0175-1000-1e5b-150809c47940"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a357f9d-0175-1000-c8d1-c3d5bdb08480","messages":{"message":{"ref":"TR.missingOpenSearchDescriptionDocumentLink","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href"}]}}},"parent":{"ref":"EID6a357f29-0175-1000-1e5b-150809c47940"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDc58e7a15-e01e-4b23-9b55-3ffc74eba979"},{"ref":"EID55c28768-b346-4139-9f15-87aed3a4ff95"},{"ref":"EIDc2ecc1d7-f056-432a-a937-2d6e78a86f9c"}]},"parent":{"ref":"EID6a357e65-0175-1000-d6ba-0b8c25c5c510"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:18:12Z","duration":48,"status":"FAILED"}]},"parent":{"ref":"EID6a357743-0175-1000-799b-29ded93787c1"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:18:12Z","duration":312,"status":"FAILED"},{"id":"EID6a357f9d-0175-1000-0dfc-099c9732bfad","testStepResults":{"TestStepResult":[{"id":"EID6a357f9d-0175-1000-85e0-989803453125","attachments":{"attachment":[{"ref":"EID06839735-1912-465d-8e91-b9d31a04975a"},{"ref":"EID04c2cc79-4fb8-4b30-8986-2f5b6c003866"}]},"parent":{"ref":"EID6a357f9d-0175-1000-0dfc-099c9732bfad"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:18:12Z","duration":95,"status":"PASSED"},{"id":"EID6a358079-0175-1000-8b0f-bcd346947e06","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a358131-0175-1000-2940-3cb2f37af1cb","parent":{"ref":"EID6a358079-0175-1000-8b0f-bcd346947e06"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a358131-0175-1000-9fc4-25dcdcf149c4","parent":{"ref":"EID6a358079-0175-1000-8b0f-bcd346947e06"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a358131-0175-1000-fb1d-b59e6f80b629","parent":{"ref":"EID6a358079-0175-1000-8b0f-bcd346947e06"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a358131-0175-1000-41b2-bcdf3d2c243b","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a358079-0175-1000-8b0f-bcd346947e06"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EIDf1541a56-e9e8-4cd5-8e2d-d12629f27fa9"},{"ref":"EID0e62061f-bd59-4fac-96f2-b3b8b6a9c73d"},{"ref":"EIDfd8437bf-6c14-4738-8dd9-1e870394590b"}]},"parent":{"ref":"EID6a357f9d-0175-1000-0dfc-099c9732bfad"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:18:12Z","duration":52,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a357743-0175-1000-799b-29ded93787c1"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:18:12Z","duration":404,"status":"PASSED_MANUAL"},{"id":"EID6a358132-0175-1000-a1b4-32eed100d711","testStepResults":{"TestStepResult":{"id":"EID6a358132-0175-1000-7b21-4fab65b93104","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3581e7-0175-1000-eb3e-ccc9421b65d4","parent":{"ref":"EID6a358132-0175-1000-7b21-4fab65b93104"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3581e7-0175-1000-ac19-a75362e22dff","parent":{"ref":"EID6a358132-0175-1000-7b21-4fab65b93104"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3581e7-0175-1000-94a3-359199ab8de3","parent":{"ref":"EID6a358132-0175-1000-7b21-4fab65b93104"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3581e7-0175-1000-e4dd-72fe4a8be79b","messages":{"message":{"ref":"TR.missingLinkToDatasetMetadataRecord","translationArguments":{"argument":[{"token":"elementName","$":"entry"},{"token":"xpath","$":"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]"}]}}},"parent":{"ref":"EID6a358132-0175-1000-7b21-4fab65b93104"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:18:12Z","duration":1,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID36b12eb0-6c41-430e-8e8e-4057083b1d4a"},{"ref":"EID6e14d8bc-f4ee-4367-abbc-701f84d80674"},{"ref":"EIDf0fac3a9-a5b7-4f1e-ae7e-6fb816b4f034"}]},"parent":{"ref":"EID6a358132-0175-1000-a1b4-32eed100d711"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:18:12Z","duration":41,"status":"FAILED"}},"parent":{"ref":"EID6a357743-0175-1000-799b-29ded93787c1"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:18:12Z","duration":182,"status":"FAILED"},{"id":"EID6a3581e8-0175-1000-09a9-52e8bf4eecb9","testStepResults":{"TestStepResult":{"id":"EID6a3581e8-0175-1000-d42d-8bfed2282d54","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a358295-0175-1000-805e-f1d720b003f8","parent":{"ref":"EID6a3581e8-0175-1000-d42d-8bfed2282d54"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"},{"id":"EID6a358295-0175-1000-0bb8-e72370340a7d","parent":{"ref":"EID6a3581e8-0175-1000-d42d-8bfed2282d54"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"},{"id":"EID6a358295-0175-1000-ef86-0a44760329d2","parent":{"ref":"EID6a3581e8-0175-1000-d42d-8bfed2282d54"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"},{"id":"EID6a358295-0175-1000-3d78-c74a4a5a473f","parent":{"ref":"EID6a3581e8-0175-1000-d42d-8bfed2282d54"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdf50933e-7a8d-4ce6-becc-8c038d935e8a"},{"ref":"EID20b6e113-5be2-4441-b779-5d7c6c3efa06"},{"ref":"EID1e1b52dc-4a09-435a-b9ef-1b8b4fab8172"}]},"parent":{"ref":"EID6a3581e8-0175-1000-09a9-52e8bf4eecb9"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:18:12Z","duration":39,"status":"PASSED"}},"parent":{"ref":"EID6a357743-0175-1000-799b-29ded93787c1"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:18:12Z","duration":173,"status":"PASSED"},{"id":"EID6a358295-0175-1000-dadf-45aaf8b79baa","testStepResults":{"TestStepResult":{"id":"EID6a358295-0175-1000-0305-0537dc4e75e1","messages":{"message":{"ref":"TR.missingOpenSearchDescriptionDocumentLink","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href"}]}}},"attachments":{"attachment":[{"ref":"EID4f24699c-bd07-4ad9-83b6-09ab997a529c"},{"ref":"EID427d64f4-8a47-4d01-8d09-d90b2a75f1d5"},{"ref":"EID4077f1cb-c148-45e0-a5fc-31a9fc34b539"},{"ref":"EIDc600768c-85d4-4e2d-bb33-49c42f2d837a"},{"ref":"EIDb592cb38-ddec-409e-99c0-e14fec6f1e20"}]},"parent":{"ref":"EID6a358295-0175-1000-dadf-45aaf8b79baa"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:18:13Z","duration":234,"status":"SKIPPED"}},"parent":{"ref":"EID6a357743-0175-1000-799b-29ded93787c1"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:18:13Z","duration":376,"status":"SKIPPED"},{"id":"EID6a35840d-0175-1000-5f09-bd112b5496fa","testStepResults":{"TestStepResult":{"id":"EID6a35840d-0175-1000-4544-80ac39f51048","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a358519-0175-1000-14cc-22326e949c77","parent":{"ref":"EID6a35840d-0175-1000-4544-80ac39f51048"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"},{"id":"EID6a358519-0175-1000-548b-0eb1c5b169c1","parent":{"ref":"EID6a35840d-0175-1000-4544-80ac39f51048"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"},{"id":"EID6a358519-0175-1000-902a-c7fd4c4f4172","parent":{"ref":"EID6a35840d-0175-1000-4544-80ac39f51048"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"},{"id":"EID6a358519-0175-1000-a077-7934e1fa78fe","parent":{"ref":"EID6a35840d-0175-1000-4544-80ac39f51048"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd49185cb-afff-47a8-85c6-80d31c5eaa15"},{"ref":"EIDbd734edb-e6aa-4c8c-b99f-b3a7c621fe7e"},{"ref":"EID233ef311-9b25-47b6-9095-3a72f6cee307"}]},"parent":{"ref":"EID6a35840d-0175-1000-5f09-bd112b5496fa"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:18:13Z","duration":52,"status":"PASSED"}},"parent":{"ref":"EID6a357743-0175-1000-799b-29ded93787c1"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:18:13Z","duration":268,"status":"PASSED"},{"id":"EID6a358519-0175-1000-5df1-3e42aee43380","testStepResults":{"TestStepResult":{"id":"EID6a358519-0175-1000-08f9-63d787e3be5e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3585bb-0175-1000-598d-74aa21e0525d","parent":{"ref":"EID6a358519-0175-1000-08f9-63d787e3be5e"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3585bb-0175-1000-5010-2a054357ca71","parent":{"ref":"EID6a358519-0175-1000-08f9-63d787e3be5e"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3585bb-0175-1000-2085-98e6d0c0040d","parent":{"ref":"EID6a358519-0175-1000-08f9-63d787e3be5e"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3585bb-0175-1000-f351-0a45259628bb","parent":{"ref":"EID6a358519-0175-1000-08f9-63d787e3be5e"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3585bb-0175-1000-d7b1-242bc1402743","parent":{"ref":"EID6a358519-0175-1000-08f9-63d787e3be5e"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3585bb-0175-1000-e654-32d20f5eb2b6","parent":{"ref":"EID6a358519-0175-1000-08f9-63d787e3be5e"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID98f9c830-3181-4765-bedb-557cc0036639"},{"ref":"EID15776cd1-2966-4eaf-85b1-113a9e864aab"},{"ref":"EID314b9324-6f97-4aa5-8579-de92dd8fc9f0"}]},"parent":{"ref":"EID6a358519-0175-1000-5df1-3e42aee43380"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:18:13Z","duration":50,"status":"PASSED"}},"parent":{"ref":"EID6a357743-0175-1000-799b-29ded93787c1"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:18:13Z","duration":177,"status":"PASSED"},{"id":"EID6a3585ca-0175-1000-abf0-cbdde1e14806","testStepResults":{"TestStepResult":{"id":"EID6a3585ca-0175-1000-610d-8369d2508f1d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35864d-0175-1000-aba8-4989f956fa92","parent":{"ref":"EID6a3585ca-0175-1000-610d-8369d2508f1d"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"PASSED"},{"id":"EID6a35864d-0175-1000-600f-186524a36167","parent":{"ref":"EID6a3585ca-0175-1000-610d-8369d2508f1d"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"PASSED"},{"id":"EID6a35864d-0175-1000-32f8-2e197ad7807c","parent":{"ref":"EID6a3585ca-0175-1000-610d-8369d2508f1d"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"PASSED"},{"id":"EID6a35864d-0175-1000-0e00-f3090fc56d91","parent":{"ref":"EID6a3585ca-0175-1000-610d-8369d2508f1d"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"PASSED"},{"id":"EID6a35864d-0175-1000-09e5-34434bde1c18","parent":{"ref":"EID6a3585ca-0175-1000-610d-8369d2508f1d"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"PASSED"},{"id":"EID6a35864d-0175-1000-267a-531d39d1b420","parent":{"ref":"EID6a3585ca-0175-1000-610d-8369d2508f1d"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3126cba7-e05b-445c-a405-19749b5b0cdf"},{"ref":"EID478fde5b-9ce4-4607-a8ae-a00c9c0b86d8"},{"ref":"EID9b20bad1-1c8f-4f5c-87b5-bbd1e72f89f0"}]},"parent":{"ref":"EID6a3585ca-0175-1000-abf0-cbdde1e14806"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:18:13Z","duration":40,"status":"PASSED"}},"parent":{"ref":"EID6a357743-0175-1000-799b-29ded93787c1"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:18:13Z","duration":131,"status":"PASSED"},{"id":"EID6a35864d-0175-1000-147d-c640d434b61e","testStepResults":{"TestStepResult":{"id":"EID6a35864d-0175-1000-601e-95bb477d4a66","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3586d7-0175-1000-98e5-aac6573fb98b","parent":{"ref":"EID6a35864d-0175-1000-601e-95bb477d4a66"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"PASSED"},{"id":"EID6a3586d7-0175-1000-07a8-ad6a384b7303","parent":{"ref":"EID6a35864d-0175-1000-601e-95bb477d4a66"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"PASSED"},{"id":"EID6a3586d7-0175-1000-613b-0d2ecfd149c4","parent":{"ref":"EID6a35864d-0175-1000-601e-95bb477d4a66"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"PASSED"},{"id":"EID6a3586d7-0175-1000-7cad-876b6dcc3aae","parent":{"ref":"EID6a35864d-0175-1000-601e-95bb477d4a66"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfbb87716-4f11-4edb-8f41-2a48fd6e23ce"},{"ref":"EID2320ceac-8550-4ec2-9cb5-d48ce9290197"},{"ref":"EIDe5d1a5dd-31c4-4b3e-b737-8eaf5639561b"}]},"parent":{"ref":"EID6a35864d-0175-1000-147d-c640d434b61e"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:18:14Z","duration":44,"status":"PASSED"}},"parent":{"ref":"EID6a357743-0175-1000-799b-29ded93787c1"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:18:14Z","duration":138,"status":"PASSED"},{"id":"EID6a3586d7-0175-1000-8ec7-54f7f4773701","testStepResults":{"TestStepResult":{"id":"EID6a3586d7-0175-1000-148e-f25370a19d35","messages":{"message":[{"ref":"TR.missingSpatialDatasetIdentifierCode","translationArguments":{"argument":[{"token":"elementName","$":"entry"},{"token":"xpath","$":"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]"}]}},{"ref":"TR.missingSpatialDatasetIdentifierNamespace","translationArguments":{"argument":[{"token":"elementName","$":"entry"},{"token":"xpath","$":"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]"}]}}]},"attachments":{"attachment":[{"ref":"EID258acf12-061f-4ccc-a000-8ce2f5f6ed46"},{"ref":"EIDce1900d3-e952-4a77-a9fa-4da849e29ad7"},{"ref":"EID7d371ba9-225e-4899-aa17-a6411a98f22f"},{"ref":"EID6b4b88e1-db6a-40c4-9a7b-1bddd6ea13cb"}]},"parent":{"ref":"EID6a3586d7-0175-1000-8ec7-54f7f4773701"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:18:14Z","duration":297,"status":"SKIPPED"}},"parent":{"ref":"EID6a357743-0175-1000-799b-29ded93787c1"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:18:14Z","duration":579,"status":"SKIPPED"},{"id":"EID6a35891a-0175-1000-b421-8071eb8954e8","testStepResults":{"TestStepResult":{"id":"EID6a35891a-0175-1000-bd9d-d9d9274376c2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a358a56-0175-1000-940e-f6b1b2741778","parent":{"ref":"EID6a35891a-0175-1000-bd9d-d9d9274376c2"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"PASSED"},{"id":"EID6a358a56-0175-1000-5d03-ebf1433ac55f","parent":{"ref":"EID6a35891a-0175-1000-bd9d-d9d9274376c2"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"PASSED"},{"id":"EID6a358a56-0175-1000-be4b-04cb9d159a28","parent":{"ref":"EID6a35891a-0175-1000-bd9d-d9d9274376c2"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"PASSED"},{"id":"EID6a358a56-0175-1000-6af9-fb191e10febb","messages":{"message":{"ref":"TR.invalidDatasetFeedLinks","translationArguments":{"argument":[{"token":"elementName","$":"entry"},{"token":"xpath","$":"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]"}]}}},"parent":{"ref":"EID6a35891a-0175-1000-bd9d-d9d9274376c2"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDe4be7d42-b1d5-43ae-a696-0bebcafb0f65"},{"ref":"EIDca2f9291-e281-48de-bf6e-fb5be35d2e29"},{"ref":"EID35a33232-25c2-4f9e-9112-9cd0af44cf8b"}]},"parent":{"ref":"EID6a35891a-0175-1000-b421-8071eb8954e8"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:18:14Z","duration":46,"status":"FAILED"}},"parent":{"ref":"EID6a357743-0175-1000-799b-29ded93787c1"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:18:14Z","duration":332,"status":"FAILED"},{"id":"EID6a358a6f-0175-1000-b12c-7a4146c1754f","testStepResults":{"TestStepResult":[{"id":"EID6a358a6f-0175-1000-7351-b1f10fb87e2e","parent":{"ref":"EID6a358a6f-0175-1000-b12c-7a4146c1754f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"PASSED"},{"id":"EID6a358a6f-0175-1000-5aa4-18b528e205c6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a358b13-0175-1000-61ae-6c10b0ff4efa","parent":{"ref":"EID6a358a6f-0175-1000-5aa4-18b528e205c6"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"PASSED"},{"id":"EID6a358b13-0175-1000-f385-cae501740acb","parent":{"ref":"EID6a358a6f-0175-1000-5aa4-18b528e205c6"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"PASSED"},{"id":"EID6a358b13-0175-1000-7a32-48163dedd6d3","parent":{"ref":"EID6a358a6f-0175-1000-5aa4-18b528e205c6"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"PASSED"},{"id":"EID6a358b13-0175-1000-98b9-d6d6a003be28","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6a358a6f-0175-1000-5aa4-18b528e205c6"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID123013fe-d649-4307-8ee2-a0167cbb3826"},{"ref":"EIDccfcf78e-0273-40d7-8923-ef64f7fad5cc"},{"ref":"EID798b9d30-f35d-4ce5-a346-21932ce9a347"}]},"parent":{"ref":"EID6a358a6f-0175-1000-b12c-7a4146c1754f"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:18:15Z","duration":43,"status":"FAILED"}]},"parent":{"ref":"EID6a357743-0175-1000-799b-29ded93787c1"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:18:15Z","duration":164,"status":"FAILED"}]},"parent":{"ref":"EID571a2ee6-9067-4cb3-9360-449ce25b2db1"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:18:10Z","duration":5073,"status":"FAILED"},{"id":"EID6a358b14-0175-1000-7e21-c6fdea0724a0","testCaseResults":{"TestCaseResult":[{"id":"EID6a358b14-0175-1000-8612-7f5250a0ca93","testStepResults":{"TestStepResult":[{"id":"EID6a358b14-0175-1000-4151-8cb4fb78e783","parent":{"ref":"EID6a358b14-0175-1000-8612-7f5250a0ca93"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"PASSED"},{"id":"EID6a358b14-0175-1000-f155-c89053b0c458","parent":{"ref":"EID6a358b14-0175-1000-8612-7f5250a0ca93"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:18:15Z","duration":46,"status":"SKIPPED"}]},"parent":{"ref":"EID6a358b14-0175-1000-7e21-c6fdea0724a0"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"SKIPPED"},{"id":"EID6a358b14-0175-1000-3657-15eeb6a55216","testStepResults":{"TestStepResult":[{"id":"EID6a358b14-0175-1000-b0d2-5430e5de0835","parent":{"ref":"EID6a358b14-0175-1000-3657-15eeb6a55216"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:18:15Z","duration":60,"status":"PASSED"},{"id":"EID6a358b14-0175-1000-9dae-7737d9516df8","parent":{"ref":"EID6a358b14-0175-1000-3657-15eeb6a55216"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:18:15Z","duration":1,"status":"UNDEFINED"}]},"parent":{"ref":"EID6a358b14-0175-1000-7e21-c6fdea0724a0"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:18:15Z","duration":1,"status":"UNDEFINED"},{"id":"EID6a358b15-0175-1000-c2d1-8872b6db2484","testStepResults":{"TestStepResult":{"id":"EID6a358b15-0175-1000-cc94-7948b066a387","parent":{"ref":"EID6a358b15-0175-1000-c2d1-8872b6db2484"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:18:15Z","duration":1,"status":"UNDEFINED"}},"parent":{"ref":"EID6a358b14-0175-1000-7e21-c6fdea0724a0"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:18:15Z","duration":1,"status":"UNDEFINED"},{"id":"EID6a358b16-0175-1000-91a8-76a01e91309f","testStepResults":{"TestStepResult":{"id":"EID6a358b16-0175-1000-bc75-a69bccde79ee","parent":{"ref":"EID6a358b16-0175-1000-91a8-76a01e91309f"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"UNDEFINED"}},"parent":{"ref":"EID6a358b14-0175-1000-7e21-c6fdea0724a0"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"UNDEFINED"},{"id":"EID6a358b16-0175-1000-464c-34c758d1b67f","testStepResults":{"TestStepResult":{"id":"EID6a358b16-0175-1000-e8c8-1e41605bd361","parent":{"ref":"EID6a358b16-0175-1000-464c-34c758d1b67f"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:18:15Z","duration":1,"status":"UNDEFINED"}},"parent":{"ref":"EID6a358b14-0175-1000-7e21-c6fdea0724a0"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:18:15Z","duration":1,"status":"UNDEFINED"},{"id":"EID6a358b17-0175-1000-6865-9eade60b12a6","testStepResults":{"TestStepResult":{"id":"EID6a358b17-0175-1000-a82f-3ff2386529a7","parent":{"ref":"EID6a358b17-0175-1000-6865-9eade60b12a6"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"UNDEFINED"}},"parent":{"ref":"EID6a358b14-0175-1000-7e21-c6fdea0724a0"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"UNDEFINED"},{"id":"EID6a358b17-0175-1000-6a2b-b2065e086e3f","testStepResults":{"TestStepResult":{"id":"EID6a358b17-0175-1000-3425-8564cc678ed8","parent":{"ref":"EID6a358b17-0175-1000-6a2b-b2065e086e3f"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:18:15Z","duration":1,"status":"UNDEFINED"}},"parent":{"ref":"EID6a358b14-0175-1000-7e21-c6fdea0724a0"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:18:15Z","duration":1,"status":"UNDEFINED"},{"id":"EID6a358b18-0175-1000-ff0a-f9e066b4b782","testStepResults":{"TestStepResult":{"id":"EID6a358b18-0175-1000-995a-1ce086e27668","parent":{"ref":"EID6a358b18-0175-1000-ff0a-f9e066b4b782"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"UNDEFINED"}},"parent":{"ref":"EID6a358b14-0175-1000-7e21-c6fdea0724a0"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"UNDEFINED"},{"id":"EID6a358b19-0175-1000-6193-bd5f9e6a3c5d","testStepResults":{"TestStepResult":{"id":"EID6a358b19-0175-1000-c7b5-191449988a63","parent":{"ref":"EID6a358b19-0175-1000-6193-bd5f9e6a3c5d"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"UNDEFINED"}},"parent":{"ref":"EID6a358b14-0175-1000-7e21-c6fdea0724a0"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"UNDEFINED"},{"id":"EID6a358b19-0175-1000-0e8f-e5ae85cecb50","testStepResults":{"TestStepResult":{"id":"EID6a358b19-0175-1000-f4ce-4a2197a210f9","parent":{"ref":"EID6a358b19-0175-1000-0e8f-e5ae85cecb50"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"UNDEFINED"}},"parent":{"ref":"EID6a358b14-0175-1000-7e21-c6fdea0724a0"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:18:15Z","duration":1,"status":"UNDEFINED"},{"id":"EID6a358b1a-0175-1000-43bc-cf365ad67e98","testStepResults":{"TestStepResult":{"id":"EID6a358b1a-0175-1000-dbd0-14010301a63d","parent":{"ref":"EID6a358b1a-0175-1000-43bc-cf365ad67e98"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"UNDEFINED"}},"parent":{"ref":"EID6a358b14-0175-1000-7e21-c6fdea0724a0"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"UNDEFINED"},{"id":"EID6a358b1a-0175-1000-7fb4-7a085385958f","testStepResults":{"TestStepResult":[{"id":"EID6a358b1a-0175-1000-0b80-d602ae244e29","parent":{"ref":"EID6a358b1a-0175-1000-7fb4-7a085385958f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:18:15Z","duration":11,"status":"PASSED"},{"id":"EID6a358b25-0175-1000-c954-cd9f4dac0052","parent":{"ref":"EID6a358b1a-0175-1000-7fb4-7a085385958f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:18:15Z","duration":102,"status":"PASSED"},{"id":"EID6a358b25-0175-1000-2bc2-b7b460c222e5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a358bba-0175-1000-0eaa-e3ca4f5b81a4","parent":{"ref":"EID6a358b25-0175-1000-2bc2-b7b460c222e5"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"PASSED"},{"id":"EID6a358bba-0175-1000-c882-eee4db252348","parent":{"ref":"EID6a358b25-0175-1000-2bc2-b7b460c222e5"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"PASSED"},{"id":"EID6a358bba-0175-1000-1153-8ee5b4838b11","parent":{"ref":"EID6a358b25-0175-1000-2bc2-b7b460c222e5"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"PASSED"},{"id":"EID6a358bba-0175-1000-ee0e-d3087f2fe59e","parent":{"ref":"EID6a358b25-0175-1000-2bc2-b7b460c222e5"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4e61578c-bdea-4e11-8bfe-d8ed593287bf"},{"ref":"EID089d4fc9-5e52-4f34-b01d-8e930b3333cb"},{"ref":"EID5b7c003e-81df-4531-88c6-faa7838a943c"}]},"parent":{"ref":"EID6a358b1a-0175-1000-7fb4-7a085385958f"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:18:15Z","duration":53,"status":"PASSED"},{"id":"EID6a358bba-0175-1000-27a1-8f4a9f2c3756","attachments":{"attachment":{"ref":"EID0e553a32-2eb5-4bec-824b-0f64ea138286"}},"parent":{"ref":"EID6a358b1a-0175-1000-7fb4-7a085385958f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:18:15Z","duration":1,"status":"PASSED"},{"id":"EID6a358bed-0175-1000-7b56-51bddbd632ac","parent":{"ref":"EID6a358b1a-0175-1000-7fb4-7a085385958f"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:18:15Z","duration":1,"status":"UNDEFINED"}]},"parent":{"ref":"EID6a358b14-0175-1000-7e21-c6fdea0724a0"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:18:15Z","duration":212,"status":"UNDEFINED"},{"id":"EID6a358bee-0175-1000-59ed-2c08d37c06ff","testStepResults":{"TestStepResult":[{"id":"EID6a358bee-0175-1000-1708-98ae3255ccf0","parent":{"ref":"EID6a358bee-0175-1000-59ed-2c08d37c06ff"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"PASSED"},{"id":"EID6a358bee-0175-1000-c978-22d41d4a4352","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a358d10-0175-1000-d5f1-08983c9de82c","parent":{"ref":"EID6a358bee-0175-1000-c978-22d41d4a4352"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"PASSED"},{"id":"EID6a358d10-0175-1000-c58c-233c5cba2b6b","parent":{"ref":"EID6a358bee-0175-1000-c978-22d41d4a4352"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"PASSED"},{"id":"EID6a358d10-0175-1000-d8c7-c5a8a6381525","parent":{"ref":"EID6a358bee-0175-1000-c978-22d41d4a4352"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"PASSED"},{"id":"EID6a358d10-0175-1000-db29-492070794fa8","parent":{"ref":"EID6a358bee-0175-1000-c978-22d41d4a4352"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:18:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6cf3a3ab-1966-4a33-9d72-cde4615b84d5"},{"ref":"EIDd3b724d7-9fdb-47d5-86d1-b6b63b7f9abf"},{"ref":"EID05818e0e-38dc-4f27-9971-61fa8c47cf47"}]},"parent":{"ref":"EID6a358bee-0175-1000-59ed-2c08d37c06ff"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:18:15Z","duration":50,"status":"PASSED"},{"id":"EID6a358d10-0175-1000-070a-791024eda5a8","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a358d26-0175-1000-ade9-4435e3c622e2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a358dcb-0175-1000-5d27-cf95cda72d38","parent":{"ref":"EID6a358d26-0175-1000-ade9-4435e3c622e2"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:18:16Z","duration":0,"status":"PASSED"},{"id":"EID6a358dcb-0175-1000-7fd9-0c5d0ca9177c","parent":{"ref":"EID6a358d26-0175-1000-ade9-4435e3c622e2"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:18:16Z","duration":0,"status":"PASSED"},{"id":"EID6a358dcb-0175-1000-d095-ce3003619abd","parent":{"ref":"EID6a358d26-0175-1000-ade9-4435e3c622e2"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:18:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc99da3b3-8f7e-465c-af93-32a0390140fd"},{"ref":"EIDcc612174-b5bc-4e04-b347-985dc3a7f144"},{"ref":"EIDd6964989-ab62-474e-a336-1b79635d3851"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:18:15Z","duration":42,"status":"PASSED"},{"id":"EID6a358de2-0175-1000-4ef4-52584b1226e7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a358e6a-0175-1000-90dc-97c9eb4d988a","parent":{"ref":"EID6a358de2-0175-1000-4ef4-52584b1226e7"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:18:16Z","duration":0,"status":"PASSED"},{"id":"EID6a358e6a-0175-1000-1f38-418793fe0823","parent":{"ref":"EID6a358de2-0175-1000-4ef4-52584b1226e7"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:18:16Z","duration":0,"status":"PASSED"},{"id":"EID6a358e6a-0175-1000-9974-c9ae615b85e4","parent":{"ref":"EID6a358de2-0175-1000-4ef4-52584b1226e7"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:18:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID23865e6f-bdbd-4614-84bf-ac1fb57eeeae"},{"ref":"EID86b14170-6b99-479b-9054-1abbb5b0acb9"},{"ref":"EID3f922db6-8527-4ae8-bcb2-f6d646018cdd"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:18:16Z","duration":40,"status":"PASSED"},{"id":"EID6a358e6f-0175-1000-9bc8-96600fa237ae","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a358f1b-0175-1000-df02-9a352f9439de","parent":{"ref":"EID6a358e6f-0175-1000-9bc8-96600fa237ae"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:18:16Z","duration":0,"status":"PASSED"},{"id":"EID6a358f1b-0175-1000-001c-29a762ec3ae3","parent":{"ref":"EID6a358e6f-0175-1000-9bc8-96600fa237ae"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:18:16Z","duration":0,"status":"PASSED"},{"id":"EID6a358f1b-0175-1000-f1da-1b77cef4a000","parent":{"ref":"EID6a358e6f-0175-1000-9bc8-96600fa237ae"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:18:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa7f29efc-7089-4b31-b96b-35ad4131defd"},{"ref":"EIDf666e6c2-8844-4b96-a3f7-fe16ad00af15"},{"ref":"EID3be326c4-693e-421e-b703-99ba385eb236"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:18:16Z","duration":40,"status":"PASSED"}]},"parent":{"ref":"EID6a358bee-0175-1000-59ed-2c08d37c06ff"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:18:15Z","duration":523,"status":"PASSED"},{"id":"EID6a358f1c-0175-1000-96fd-4a6418fdbf46","parent":{"ref":"EID6a358bee-0175-1000-59ed-2c08d37c06ff"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:18:16Z","duration":1,"status":"UNDEFINED"}]},"parent":{"ref":"EID6a358b14-0175-1000-7e21-c6fdea0724a0"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:18:15Z","duration":815,"status":"UNDEFINED"},{"id":"EID6a358f1d-0175-1000-f8a7-17d08890cccd","testStepResults":{"TestStepResult":{"id":"EID6a358f1d-0175-1000-a7b3-4be136c6ec4c","parent":{"ref":"EID6a358f1d-0175-1000-f8a7-17d08890cccd"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:18:16Z","duration":1,"status":"UNDEFINED"}},"parent":{"ref":"EID6a358b14-0175-1000-7e21-c6fdea0724a0"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:18:16Z","duration":1,"status":"UNDEFINED"}]},"parent":{"ref":"EID571a2ee6-9067-4cb3-9360-449ce25b2db1"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:18:15Z","duration":1034,"status":"SKIPPED"},{"id":"EID6a358f1e-0175-1000-928b-c2d79200ff7f","testCaseResults":{"TestCaseResult":[{"id":"EID6a358f1e-0175-1000-cb37-919d286e69a7","testStepResults":{"TestStepResult":{"id":"EID6a358f1e-0175-1000-9fcc-144fccf6593b","parent":{"ref":"EID6a358f1e-0175-1000-cb37-919d286e69a7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:18:16Z","duration":139,"status":"SKIPPED"}},"parent":{"ref":"EID6a358f1e-0175-1000-928b-c2d79200ff7f"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:18:16Z","duration":1,"status":"SKIPPED"},{"id":"EID6a358f1f-0175-1000-2389-7e3aaa83e796","testStepResults":{"TestStepResult":{"id":"EID6a358f1f-0175-1000-2b3d-6e34ee980917","parent":{"ref":"EID6a358f1f-0175-1000-2389-7e3aaa83e796"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:18:16Z","duration":138,"status":"SKIPPED"}},"parent":{"ref":"EID6a358f1e-0175-1000-928b-c2d79200ff7f"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:18:16Z","duration":0,"status":"SKIPPED"},{"id":"EID6a358f1f-0175-1000-9a69-95b535021248","testStepResults":{"TestStepResult":{"id":"EID6a358f1f-0175-1000-c171-1e26889e0b05","parent":{"ref":"EID6a358f1f-0175-1000-9a69-95b535021248"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:18:16Z","duration":138,"status":"SKIPPED"}},"parent":{"ref":"EID6a358f1e-0175-1000-928b-c2d79200ff7f"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:18:16Z","duration":0,"status":"SKIPPED"},{"id":"EID6a358f1f-0175-1000-35d8-77470ee036c2","testStepResults":{"TestStepResult":{"id":"EID6a358f1f-0175-1000-5a0c-6a80e5feb158","parent":{"ref":"EID6a358f1f-0175-1000-35d8-77470ee036c2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:18:16Z","duration":138,"status":"SKIPPED"}},"parent":{"ref":"EID6a358f1e-0175-1000-928b-c2d79200ff7f"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:18:16Z","duration":0,"status":"SKIPPED"},{"id":"EID6a358f1f-0175-1000-3537-02adfa1ed206","testStepResults":{"TestStepResult":{"id":"EID6a358f1f-0175-1000-0eeb-dcaa172cc287","parent":{"ref":"EID6a358f1f-0175-1000-3537-02adfa1ed206"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:18:16Z","duration":138,"status":"SKIPPED"}},"parent":{"ref":"EID6a358f1e-0175-1000-928b-c2d79200ff7f"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:18:16Z","duration":0,"status":"SKIPPED"},{"id":"EID6a358f1f-0175-1000-7f27-1c919feb6e71","testStepResults":{"TestStepResult":{"id":"EID6a358f1f-0175-1000-3080-5caa08f32f31","parent":{"ref":"EID6a358f1f-0175-1000-7f27-1c919feb6e71"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:18:16Z","duration":138,"status":"SKIPPED"}},"parent":{"ref":"EID6a358f1e-0175-1000-928b-c2d79200ff7f"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:18:16Z","duration":0,"status":"SKIPPED"},{"id":"EID6a358f1f-0175-1000-064f-c63e975a7364","testStepResults":{"TestStepResult":{"id":"EID6a358f20-0175-1000-b6a9-f1ffb647a461","parent":{"ref":"EID6a358f1f-0175-1000-064f-c63e975a7364"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:18:16Z","duration":138,"status":"SKIPPED"}},"parent":{"ref":"EID6a358f1e-0175-1000-928b-c2d79200ff7f"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:18:16Z","duration":1,"status":"SKIPPED"}]},"parent":{"ref":"EID571a2ee6-9067-4cb3-9360-449ce25b2db1"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:18:16Z","duration":2,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"ServiceEndpoint","id":"EIDcb67eb85-ef2c-4b0e-bb64-376828fd117f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"GetParameter","id":"EID35a33232-25c2-4f9e-9112-9cd0af44cf8b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDd49185cb-afff-47a8-85c6-80d31c5eaa15","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"ServiceResponse","id":"EID15776cd1-2966-4eaf-85b1-113a9e864aab","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID15776cd1-2966-4eaf-85b1-113a9e864aab"}},{"type":"GetParameter","id":"EID4d88a881-9010-42ab-b11d-7126e6fbbff2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDdf50933e-7a8d-4ce6-becc-8c038d935e8a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"ServiceResponse","id":"EID2320ceac-8550-4ec2-9cb5-d48ce9290197","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID2320ceac-8550-4ec2-9cb5-d48ce9290197"}},{"type":"ServiceResponse","id":"EID106d817b-f25c-4e1a-8ab1-00606b8ac5a0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID106d817b-f25c-4e1a-8ab1-00606b8ac5a0"}},{"type":"Message","id":"EID4f24699c-bd07-4ad9-83b6-09ab997a529c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID4f24699c-bd07-4ad9-83b6-09ab997a529c"}},{"type":"Message","id":"EID6331d94e-be57-40f0-b707-a2f83a5fd17e","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID6331d94e-be57-40f0-b707-a2f83a5fd17e"}},{"type":"ServiceResponse","id":"EID3fa2a9d2-93bf-4ab3-a81a-e3e96231d178","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID3fa2a9d2-93bf-4ab3-a81a-e3e96231d178"}},{"type":"ServiceResponse","id":"EID25e8d095-a57d-4eee-814a-1db892e66a56","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID25e8d095-a57d-4eee-814a-1db892e66a56"}},{"type":"ServiceResponse","id":"EID86b14170-6b99-479b-9054-1abbb5b0acb9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID86b14170-6b99-479b-9054-1abbb5b0acb9"}},{"type":"Message","id":"EID9378a9e5-7327-460d-884d-da5b59ebdf2c","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID9378a9e5-7327-460d-884d-da5b59ebdf2c"}},{"type":"GetParameter","id":"EIDf0fac3a9-a5b7-4f1e-ae7e-6fb816b4f034","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"ServiceResponse","id":"EIDd3b724d7-9fdb-47d5-86d1-b6b63b7f9abf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EIDd3b724d7-9fdb-47d5-86d1-b6b63b7f9abf"}},{"type":"ServiceResponse","id":"EIDbd734edb-e6aa-4c8c-b99f-b3a7c621fe7e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EIDbd734edb-e6aa-4c8c-b99f-b3a7c621fe7e"}},{"type":"GetParameter","id":"EIDd4d81fc2-2591-404f-b64c-05763d974d10","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"GetParameter","id":"EIDe5d1a5dd-31c4-4b3e-b737-8eaf5639561b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"ServiceResponse","id":"EIDcb42cf96-2d79-45dd-96b8-47f15c1aa7cd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EIDcb42cf96-2d79-45dd-96b8-47f15c1aa7cd"}},{"type":"ServiceResponse","id":"EIDccfcf78e-0273-40d7-8923-ef64f7fad5cc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EIDccfcf78e-0273-40d7-8923-ef64f7fad5cc"}},{"type":"ServiceEndpoint","id":"EIDdb479e2a-6409-4106-a9e1-2660f44089d4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"ServiceResponse","id":"EID6e14d8bc-f4ee-4367-abbc-701f84d80674","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID6e14d8bc-f4ee-4367-abbc-701f84d80674"}},{"type":"Message","id":"EID4077f1cb-c148-45e0-a5fc-31a9fc34b539","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID4077f1cb-c148-45e0-a5fc-31a9fc34b539"}},{"type":"ServiceEndpoint","id":"EID123013fe-d649-4307-8ee2-a0167cbb3826","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDa7f29efc-7089-4b31-b96b-35ad4131defd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EID3be326c4-693e-421e-b703-99ba385eb236","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EID1340d8ea-ca53-4c7f-95f9-d1f1bc89b1e8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"Message","id":"EID04c2cc79-4fb8-4b30-8986-2f5b6c003866","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID04c2cc79-4fb8-4b30-8986-2f5b6c003866"}},{"type":"Message","id":"EID258acf12-061f-4ccc-a000-8ce2f5f6ed46","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID258acf12-061f-4ccc-a000-8ce2f5f6ed46"}},{"type":"ServiceResponse","id":"EIDf666e6c2-8844-4b96-a3f7-fe16ad00af15","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EIDf666e6c2-8844-4b96-a3f7-fe16ad00af15"}},{"type":"ServiceResponse","id":"EID58382979-00bd-4b19-ad87-cc2e40a37086","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID58382979-00bd-4b19-ad87-cc2e40a37086"}},{"type":"Message","id":"EID0fc61ce8-ed04-4584-86b6-4f166da75c69","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID0fc61ce8-ed04-4584-86b6-4f166da75c69"}},{"type":"Message","id":"EIDa064f81e-b753-4312-a8e5-7621fe4c9979","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EIDa064f81e-b753-4312-a8e5-7621fe4c9979"}},{"type":"GetParameter","id":"EID05818e0e-38dc-4f27-9971-61fa8c47cf47","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EID4e61578c-bdea-4e11-8bfe-d8ed593287bf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EID36b12eb0-6c41-430e-8e8e-4057083b1d4a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"GetParameter","id":"EIDfd8437bf-6c14-4738-8dd9-1e870394590b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"Message","id":"EIDce1900d3-e952-4a77-a9fa-4da849e29ad7","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EIDce1900d3-e952-4a77-a9fa-4da849e29ad7"}},{"type":"ServiceEndpoint","id":"EIDfe0c0019-25ae-47a5-8601-68c88d8f54ec","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"ServiceResponse","id":"EID950c56f8-4fc2-46d6-ba25-f53cf169d76e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID950c56f8-4fc2-46d6-ba25-f53cf169d76e"}},{"type":"Message","id":"EID6b4b88e1-db6a-40c4-9a7b-1bddd6ea13cb","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID6b4b88e1-db6a-40c4-9a7b-1bddd6ea13cb"}},{"type":"GetParameter","id":"EID5b7c003e-81df-4531-88c6-faa7838a943c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EID98f9c830-3181-4765-bedb-557cc0036639","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"Message","id":"EID27fd0959-8b26-44c2-8bab-37ab0cdcf4fc","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID27fd0959-8b26-44c2-8bab-37ab0cdcf4fc"}},{"type":"Message","id":"EID1f74f863-8a38-4a3b-83a7-e177730d8c7d","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID1f74f863-8a38-4a3b-83a7-e177730d8c7d"}},{"type":"LogFile","id":"EIDc5e6cf89-7b33-4542-8edd-7eba10db1ea9","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EIDc5e6cf89-7b33-4542-8edd-7eba10db1ea9"}},{"type":"GetParameter","id":"EIDd6964989-ab62-474e-a336-1b79635d3851","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EIDb592cb38-ddec-409e-99c0-e14fec6f1e20","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EIDb592cb38-ddec-409e-99c0-e14fec6f1e20"}},{"type":"GetParameter","id":"EID314b9324-6f97-4aa5-8579-de92dd8fc9f0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDe4be7d42-b1d5-43ae-a696-0bebcafb0f65","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"Message","id":"EID7062d229-4e71-44cd-8f26-0750af195730","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID7062d229-4e71-44cd-8f26-0750af195730"}},{"type":"ServiceEndpoint","id":"EID6cf3a3ab-1966-4a33-9d72-cde4615b84d5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EIDc600768c-85d4-4e2d-bb33-49c42f2d837a","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EIDc600768c-85d4-4e2d-bb33-49c42f2d837a"}},{"type":"ServiceResponse","id":"EID20b6e113-5be2-4441-b779-5d7c6c3efa06","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID20b6e113-5be2-4441-b779-5d7c6c3efa06"}},{"type":"ServiceEndpoint","id":"EID66e63b43-a25f-4e75-a31f-24b4066ec110","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EID2903f349-b29e-4fbb-aea2-8ac3e7e2646d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUvYXRvbS9iZXN0YW5kYm9kZW1nZWJydWlrMjAxNS54bWw="},{"type":"ServiceEndpoint","id":"EID23865e6f-bdbd-4614-84bf-ac1fb57eeeae","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EID0090f747-f2d6-4c04-b91b-56973a74bf1e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDf282f875-c8a6-4b33-bd9e-8786b4868738","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"ServiceResponse","id":"EID55c28768-b346-4139-9f15-87aed3a4ff95","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID55c28768-b346-4139-9f15-87aed3a4ff95"}},{"type":"ServiceEndpoint","id":"EIDfbb87716-4f11-4edb-8f41-2a48fd6e23ce","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"Message","id":"EID06839735-1912-465d-8e91-b9d31a04975a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID06839735-1912-465d-8e91-b9d31a04975a"}},{"type":"GetParameter","id":"EIDc2ecc1d7-f056-432a-a937-2d6e78a86f9c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"GetParameter","id":"EID233ef311-9b25-47b6-9095-3a72f6cee307","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"Message","id":"EID12f814c1-800a-4ab9-8cd1-9356d65c74fe","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID12f814c1-800a-4ab9-8cd1-9356d65c74fe"}},{"type":"ServiceResponse","id":"EIDca2f9291-e281-48de-bf6e-fb5be35d2e29","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EIDca2f9291-e281-48de-bf6e-fb5be35d2e29"}},{"type":"ServiceResponse","id":"EID089d4fc9-5e52-4f34-b01d-8e930b3333cb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID089d4fc9-5e52-4f34-b01d-8e930b3333cb"}},{"type":"ServiceEndpoint","id":"EID346dfb75-acdc-40bd-856f-1c5070417c97","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDf1541a56-e9e8-4cd5-8e2d-d12629f27fa9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"ServiceResponse","id":"EID478fde5b-9ce4-4607-a8ae-a00c9c0b86d8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID478fde5b-9ce4-4607-a8ae-a00c9c0b86d8"}},{"type":"ServiceEndpoint","id":"EIDc58e7a15-e01e-4b23-9b55-3ffc74eba979","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"GetParameter","id":"EID1e1b52dc-4a09-435a-b9ef-1b8b4fab8172","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"Message","id":"EIDc983325f-3aab-4655-8a94-2f36dbee6f37","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EIDc983325f-3aab-4655-8a94-2f36dbee6f37"}},{"type":"ServiceResponse","id":"EID0e62061f-bd59-4fac-96f2-b3b8b6a9c73d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID0e62061f-bd59-4fac-96f2-b3b8b6a9c73d"}},{"type":"GetParameter","id":"EID9b20bad1-1c8f-4f5c-87b5-bbd1e72f89f0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"GetParameter","id":"EIDdfbdf2ea-08ef-4fb5-82fd-11d72ae00926","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"GetParameter","id":"EID798b9d30-f35d-4ce5-a346-21932ce9a347","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"ServiceResponse","id":"EIDcc612174-b5bc-4e04-b347-985dc3a7f144","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EIDcc612174-b5bc-4e04-b347-985dc3a7f144"}},{"type":"Message","id":"EID9fa684f7-ca9e-4cc4-9751-2d37258958e7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID9fa684f7-ca9e-4cc4-9751-2d37258958e7"}},{"type":"Message","id":"EID427d64f4-8a47-4d01-8d09-d90b2a75f1d5","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID427d64f4-8a47-4d01-8d09-d90b2a75f1d5"}},{"type":"GetParameter","id":"EID4dca0add-7d33-4883-be14-52d436c44f8e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"GetParameter","id":"EID3f922db6-8527-4ae8-bcb2-f6d646018cdd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EIDc99da3b3-8f7e-465c-af93-32a0390140fd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EID5b8137fb-e49a-4f92-9dd9-943680fc12ea","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"ServiceResponse","id":"EIDb0ec40d0-385f-4f8d-b898-05d5fa88cd60","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EIDb0ec40d0-385f-4f8d-b898-05d5fa88cd60"}},{"type":"Message","id":"EID0e553a32-2eb5-4bec-824b-0f64ea138286","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID0e553a32-2eb5-4bec-824b-0f64ea138286"}},{"type":"ServiceEndpoint","id":"EID3126cba7-e05b-445c-a405-19749b5b0cdf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"},{"type":"Message","id":"EID7d371ba9-225e-4899-aa17-a6411a98f22f","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID7d371ba9-225e-4899-aa17-a6411a98f22f"}},{"type":"ServiceResponse","id":"EID7c3ebd7c-2001-4cda-b722-65614f235114","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EID7c3ebd7c-2001-4cda-b722-65614f235114"}},{"type":"Message","id":"EIDeb2e61bd-31ac-4954-87ff-36882e113349","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID571a2ee6-9067-4cb3-9360-449ce25b2db1/Attachments/EIDeb2e61bd-31ac-4954-87ff-36882e113349"}},{"type":"GetParameter","id":"EIDba8cdfba-6233-4f8c-bb6c-9b9f5064aadf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUvYXRvbS9iZXN0YW5kYm9kZW1nZWJydWlrMjAxNS54bWw="},{"type":"GetParameter","id":"EID747b1ee5-2d81-41b9-b736-16ccd01b390f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2Jlc3RhbmRib2RlbWdlYnJ1aWsyMDE1L2F0b20vYmVzdGFuZGJvZGVtZ2VicnVpazIwMTUueG1s"}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:18:09Z","duration":6481,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:18:29.232 [print] EIDa98726ca-febc-41c0-b37f-edb369be69c0
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:18:29.232 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:18:29.232 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:18:29.232 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:18:29.232 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/a98726ca-febc-41c0-b37f-edb369be69c0.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:18:29.232 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/a98726ca-febc-41c0-b37f-edb369be69c0.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:18:29.232 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa98726ca-febc-41c0-b37f-edb369be69c0/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.009
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.004
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
13:18:29.247 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
13:18:29.248 [print] [
  "TR.missingSpatialDatasetIdentifierCode",
  "TR.missingSpatialDatasetIdentifierNamespace",
  "TR.missingOpenSearchDescriptionDocumentLink",
  "TR.missingLinkToDatasetMetadataRecord",
  "TR.invalidDatasetFeedLinks",
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* print sortedrefs 0.000
13:18:29.248 [print] [
  "TR.invalidDatasetFeedLinks",
  "TR.missingLinkToDatasetMetadataRecord",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingOpenSearchDescriptionDocumentLink",
  "TR.missingSpatialDatasetIdentifierCode",
  "TR.missingSpatialDatasetIdentifierNamespace"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.009
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1:20.014
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.001
13:12:21.493 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 22.344
13:12:21.495 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 295
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml"}}}

13:12:43.835 response time in milliseconds: 21553.80
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:12:42 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:12:37 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/75e408a9-10b7-4628-b9bf-d7b4ee10c78b.json","testRuns":{"TestRun":{"id":"EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:12:34.428Z","testTasks":{"TestTask":{"id":"EIDf0a4a446-fa44-4a3c-8b17-be8db18312da","parent":{"ref":"EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID12c62c66-b2a2-4a75-a1f9-b7b8cbec55a0"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID12c62c66-b2a2-4a75-a1f9-b7b8cbec55a0","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:12:21.936Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:12:30.085Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:12:43.839 [print] EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b
* print response.EtfItemCollection.testRuns.TestRun.status 0.001
13:12:43.840 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.001
13:12:43.842 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.004
13:12:43.846 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/75e408a9-10b7-4628-b9bf-d7b4ee10c78b.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:12:43.847 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:12:43.847 [print] statuspath TestRuns/EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b
* print 'progresspath ', progresspath 0.000
13:12:43.848 [print] progresspath  TestRuns/EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b/progress
Given path progresspath 0.000
When method GET 0.546
13:12:43.849 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:12:44.394 response time in milliseconds: 544.31
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:12:44 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"45","max":"46","log":["27.10.2020 13:12:34 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:12:34 UTC 2020)","27.10.2020 13:12:34 - Resolving Executable Test Suite dependencies","27.10.2020 13:12:34 - Preparing 1 Test Task:","27.10.2020 13:12:34 -  TestTask 1 (f0a4a446-fa44-4a3c-8b17-be8db18312da)","27.10.2020 13:12:34 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:12:34 -  with parameters: ","27.10.2020 13:12:34 - etf.testcases = *","27.10.2020 13:12:34 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:12:34 - Setting state to CREATED","27.10.2020 13:12:34 - Changed state from CREATED to INITIALIZING","27.10.2020 13:12:37 - Starting TestRun.75e408a9-10b7-4628-b9bf-d7b4ee10c78b at 2020-10-27T13:12:38Z","27.10.2020 13:12:38 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:12:38 - Project Properties: ","27.10.2020 13:12:38 - etf.testcases - * ","27.10.2020 13:12:38 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","27.10.2020 13:12:38 - username -  ","27.10.2020 13:12:38 - authUser -  ","27.10.2020 13:12:38 - authMethod - basic ","27.10.2020 13:12:38 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:12:44.394 [print] {
  "val": "45",
  "max": "46",
  "log": [
    "27.10.2020 13:12:34 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:12:34 UTC 2020)",
    "27.10.2020 13:12:34 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:12:34 - Preparing 1 Test Task:",
    "27.10.2020 13:12:34 -  TestTask 1 (f0a4a446-fa44-4a3c-8b17-be8db18312da)",
    "27.10.2020 13:12:34 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:12:34 -  with parameters: ",
    "27.10.2020 13:12:34 - etf.testcases = *",
    "27.10.2020 13:12:34 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:12:34 - Setting state to CREATED",
    "27.10.2020 13:12:34 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:12:37 - Starting TestRun.75e408a9-10b7-4628-b9bf-d7b4ee10c78b at 2020-10-27T13:12:38Z",
    "27.10.2020 13:12:38 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:12:38 - Project Properties: ",
    "27.10.2020 13:12:38 - etf.testcases - * ",
    "27.10.2020 13:12:38 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ",
    "27.10.2020 13:12:38 - username -  ",
    "27.10.2020 13:12:38 - authUser -  ",
    "27.10.2020 13:12:38 - authMethod - basic ",
    "27.10.2020 13:12:38 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 51.756
13:12:44.395 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:12:44.965 response time in milliseconds: 565.42
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:12:44 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"49","max":"50","log":["27.10.2020 13:12:34 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:12:34 UTC 2020)","27.10.2020 13:12:34 - Resolving Executable Test Suite dependencies","27.10.2020 13:12:34 - Preparing 1 Test Task:","27.10.2020 13:12:34 -  TestTask 1 (f0a4a446-fa44-4a3c-8b17-be8db18312da)","27.10.2020 13:12:34 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:12:34 -  with parameters: ","27.10.2020 13:12:34 - etf.testcases = *","27.10.2020 13:12:34 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:12:34 - Setting state to CREATED","27.10.2020 13:12:34 - Changed state from CREATED to INITIALIZING","27.10.2020 13:12:37 - Starting TestRun.75e408a9-10b7-4628-b9bf-d7b4ee10c78b at 2020-10-27T13:12:38Z","27.10.2020 13:12:38 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:12:38 - Project Properties: ","27.10.2020 13:12:38 - etf.testcases - * ","27.10.2020 13:12:38 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","27.10.2020 13:12:38 - username -  ","27.10.2020 13:12:38 - authUser -  ","27.10.2020 13:12:38 - authMethod - basic ","27.10.2020 13:12:38 - TestRunTask initialized"]}

13:12:44.969 retry condition not satisfied: response.val == response.max
13:12:44.969 sleeping before retry #1
13:12:49.970 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:12:50.496 response time in milliseconds: 525.93
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:12:50 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"122","max":"123","log":["27.10.2020 13:12:34 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:12:34 UTC 2020)","27.10.2020 13:12:34 - Resolving Executable Test Suite dependencies","27.10.2020 13:12:34 - Preparing 1 Test Task:","27.10.2020 13:12:34 -  TestTask 1 (f0a4a446-fa44-4a3c-8b17-be8db18312da)","27.10.2020 13:12:34 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:12:34 -  with parameters: ","27.10.2020 13:12:34 - etf.testcases = *","27.10.2020 13:12:34 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:12:34 - Setting state to CREATED","27.10.2020 13:12:34 - Changed state from CREATED to INITIALIZING","27.10.2020 13:12:37 - Starting TestRun.75e408a9-10b7-4628-b9bf-d7b4ee10c78b at 2020-10-27T13:12:38Z","27.10.2020 13:12:38 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:12:38 - Project Properties: ","27.10.2020 13:12:38 - etf.testcases - * ","27.10.2020 13:12:38 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","27.10.2020 13:12:38 - username -  ","27.10.2020 13:12:38 - authUser -  ","27.10.2020 13:12:38 - authMethod - basic ","27.10.2020 13:12:38 - TestRunTask initialized","27.10.2020 13:12:48 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:12:50.497 retry condition not satisfied: response.val == response.max
13:12:50.497 sleeping before retry #2
13:12:55.499 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:12:56.022 response time in milliseconds: 517.79
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:12:55 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:12:34 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:12:34 UTC 2020)","27.10.2020 13:12:34 - Resolving Executable Test Suite dependencies","27.10.2020 13:12:34 - Preparing 1 Test Task:","27.10.2020 13:12:34 -  TestTask 1 (f0a4a446-fa44-4a3c-8b17-be8db18312da)","27.10.2020 13:12:34 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:12:34 -  with parameters: ","27.10.2020 13:12:34 - etf.testcases = *","27.10.2020 13:12:34 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:12:34 - Setting state to CREATED","27.10.2020 13:12:34 - Changed state from CREATED to INITIALIZING","27.10.2020 13:12:37 - Starting TestRun.75e408a9-10b7-4628-b9bf-d7b4ee10c78b at 2020-10-27T13:12:38Z","27.10.2020 13:12:38 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:12:38 - Project Properties: ","27.10.2020 13:12:38 - etf.testcases - * ","27.10.2020 13:12:38 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","27.10.2020 13:12:38 - username -  ","27.10.2020 13:12:38 - authUser -  ","27.10.2020 13:12:38 - authMethod - basic ","27.10.2020 13:12:38 - TestRunTask initialized","27.10.2020 13:12:48 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:12:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:55 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:55 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

13:12:56.023 retry condition not satisfied: response.val == response.max
13:12:56.023 sleeping before retry #3
13:13:01.024 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:01.542 response time in milliseconds: 517.63
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:13:01 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:12:34 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:12:34 UTC 2020)","27.10.2020 13:12:34 - Resolving Executable Test Suite dependencies","27.10.2020 13:12:34 - Preparing 1 Test Task:","27.10.2020 13:12:34 -  TestTask 1 (f0a4a446-fa44-4a3c-8b17-be8db18312da)","27.10.2020 13:12:34 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:12:34 -  with parameters: ","27.10.2020 13:12:34 - etf.testcases = *","27.10.2020 13:12:34 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:12:34 - Setting state to CREATED","27.10.2020 13:12:34 - Changed state from CREATED to INITIALIZING","27.10.2020 13:12:37 - Starting TestRun.75e408a9-10b7-4628-b9bf-d7b4ee10c78b at 2020-10-27T13:12:38Z","27.10.2020 13:12:38 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:12:38 - Project Properties: ","27.10.2020 13:12:38 - etf.testcases - * ","27.10.2020 13:12:38 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","27.10.2020 13:12:38 - username -  ","27.10.2020 13:12:38 - authUser -  ","27.10.2020 13:12:38 - authMethod - basic ","27.10.2020 13:12:38 - TestRunTask initialized","27.10.2020 13:12:48 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:12:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:55 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:55 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

13:13:01.543 retry condition not satisfied: response.val == response.max
13:13:01.543 sleeping before retry #4
13:13:06.544 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:07.074 response time in milliseconds: 526.86
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:13:06 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:12:34 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:12:34 UTC 2020)","27.10.2020 13:12:34 - Resolving Executable Test Suite dependencies","27.10.2020 13:12:34 - Preparing 1 Test Task:","27.10.2020 13:12:34 -  TestTask 1 (f0a4a446-fa44-4a3c-8b17-be8db18312da)","27.10.2020 13:12:34 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:12:34 -  with parameters: ","27.10.2020 13:12:34 - etf.testcases = *","27.10.2020 13:12:34 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:12:34 - Setting state to CREATED","27.10.2020 13:12:34 - Changed state from CREATED to INITIALIZING","27.10.2020 13:12:37 - Starting TestRun.75e408a9-10b7-4628-b9bf-d7b4ee10c78b at 2020-10-27T13:12:38Z","27.10.2020 13:12:38 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:12:38 - Project Properties: ","27.10.2020 13:12:38 - etf.testcases - * ","27.10.2020 13:12:38 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","27.10.2020 13:12:38 - username -  ","27.10.2020 13:12:38 - authUser -  ","27.10.2020 13:12:38 - authMethod - basic ","27.10.2020 13:12:38 - TestRunTask initialized","27.10.2020 13:12:48 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:12:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:55 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:55 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

13:13:07.079 retry condition not satisfied: response.val == response.max
13:13:07.079 sleeping before retry #5
13:13:12.080 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:12.594 response time in milliseconds: 513.66
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:13:12 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:12:34 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:12:34 UTC 2020)","27.10.2020 13:12:34 - Resolving Executable Test Suite dependencies","27.10.2020 13:12:34 - Preparing 1 Test Task:","27.10.2020 13:12:34 -  TestTask 1 (f0a4a446-fa44-4a3c-8b17-be8db18312da)","27.10.2020 13:12:34 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:12:34 -  with parameters: ","27.10.2020 13:12:34 - etf.testcases = *","27.10.2020 13:12:34 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:12:34 - Setting state to CREATED","27.10.2020 13:12:34 - Changed state from CREATED to INITIALIZING","27.10.2020 13:12:37 - Starting TestRun.75e408a9-10b7-4628-b9bf-d7b4ee10c78b at 2020-10-27T13:12:38Z","27.10.2020 13:12:38 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:12:38 - Project Properties: ","27.10.2020 13:12:38 - etf.testcases - * ","27.10.2020 13:12:38 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","27.10.2020 13:12:38 - username -  ","27.10.2020 13:12:38 - authUser -  ","27.10.2020 13:12:38 - authMethod - basic ","27.10.2020 13:12:38 - TestRunTask initialized","27.10.2020 13:12:48 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:12:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:55 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:55 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

13:13:12.594 retry condition not satisfied: response.val == response.max
13:13:12.594 sleeping before retry #6
13:13:17.596 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:18.114 response time in milliseconds: 517.08
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:13:18 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:12:34 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:12:34 UTC 2020)","27.10.2020 13:12:34 - Resolving Executable Test Suite dependencies","27.10.2020 13:12:34 - Preparing 1 Test Task:","27.10.2020 13:12:34 -  TestTask 1 (f0a4a446-fa44-4a3c-8b17-be8db18312da)","27.10.2020 13:12:34 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:12:34 -  with parameters: ","27.10.2020 13:12:34 - etf.testcases = *","27.10.2020 13:12:34 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:12:34 - Setting state to CREATED","27.10.2020 13:12:34 - Changed state from CREATED to INITIALIZING","27.10.2020 13:12:37 - Starting TestRun.75e408a9-10b7-4628-b9bf-d7b4ee10c78b at 2020-10-27T13:12:38Z","27.10.2020 13:12:38 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:12:38 - Project Properties: ","27.10.2020 13:12:38 - etf.testcases - * ","27.10.2020 13:12:38 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","27.10.2020 13:12:38 - username -  ","27.10.2020 13:12:38 - authUser -  ","27.10.2020 13:12:38 - authMethod - basic ","27.10.2020 13:12:38 - TestRunTask initialized","27.10.2020 13:12:48 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:12:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:55 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:55 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

13:13:18.115 retry condition not satisfied: response.val == response.max
13:13:18.115 sleeping before retry #7
13:13:23.116 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:23.624 response time in milliseconds: 506.23
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Tue, 27 Oct 2020 13:13:23 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:12:34 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:12:34 UTC 2020)","27.10.2020 13:12:34 - Resolving Executable Test Suite dependencies","27.10.2020 13:12:34 - Preparing 1 Test Task:","27.10.2020 13:12:34 -  TestTask 1 (f0a4a446-fa44-4a3c-8b17-be8db18312da)","27.10.2020 13:12:34 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:12:34 -  with parameters: ","27.10.2020 13:12:34 - etf.testcases = *","27.10.2020 13:12:34 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:12:34 - Setting state to CREATED","27.10.2020 13:12:34 - Changed state from CREATED to INITIALIZING","27.10.2020 13:12:37 - Starting TestRun.75e408a9-10b7-4628-b9bf-d7b4ee10c78b at 2020-10-27T13:12:38Z","27.10.2020 13:12:38 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:12:38 - Project Properties: ","27.10.2020 13:12:38 - etf.testcases - * ","27.10.2020 13:12:38 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","27.10.2020 13:12:38 - username -  ","27.10.2020 13:12:38 - authUser -  ","27.10.2020 13:12:38 - authMethod - basic ","27.10.2020 13:12:38 - TestRunTask initialized","27.10.2020 13:12:48 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:12:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:55 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:55 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

13:13:23.624 retry condition not satisfied: response.val == response.max
13:13:23.624 sleeping before retry #8
13:13:28.625 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:29.129 response time in milliseconds: 502.99
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Tue, 27 Oct 2020 13:13:29 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:12:34 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:12:34 UTC 2020)","27.10.2020 13:12:34 - Resolving Executable Test Suite dependencies","27.10.2020 13:12:34 - Preparing 1 Test Task:","27.10.2020 13:12:34 -  TestTask 1 (f0a4a446-fa44-4a3c-8b17-be8db18312da)","27.10.2020 13:12:34 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:12:34 -  with parameters: ","27.10.2020 13:12:34 - etf.testcases = *","27.10.2020 13:12:34 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:12:34 - Setting state to CREATED","27.10.2020 13:12:34 - Changed state from CREATED to INITIALIZING","27.10.2020 13:12:37 - Starting TestRun.75e408a9-10b7-4628-b9bf-d7b4ee10c78b at 2020-10-27T13:12:38Z","27.10.2020 13:12:38 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:12:38 - Project Properties: ","27.10.2020 13:12:38 - etf.testcases - * ","27.10.2020 13:12:38 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","27.10.2020 13:12:38 - username -  ","27.10.2020 13:12:38 - authUser -  ","27.10.2020 13:12:38 - authMethod - basic ","27.10.2020 13:12:38 - TestRunTask initialized","27.10.2020 13:12:48 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:12:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:55 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:55 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

13:13:29.129 retry condition not satisfied: response.val == response.max
13:13:29.130 sleeping before retry #9
13:13:34.131 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:36.150 response time in milliseconds: 2019.00
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Tue, 27 Oct 2020 13:13:36 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:13:36.151 retry condition satisfied
* print response 0.000
13:13:36.151 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 5.319
13:13:36.151 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:41.467 response time in milliseconds: 4357.41
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Cache-Control: public, max-age=120
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Tue, 27 Oct 2020 13:13:40 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Last-Modified: Tue, 27 Oct 2020 13:13:36 GMT
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/75e408a9-10b7-4628-b9bf-d7b4ee10c78b.json","testRuns":{"TestRun":{"id":"EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:12:34.428Z","testTasks":{"TestTask":{"id":"EIDf0a4a446-fa44-4a3c-8b17-be8db18312da","parent":{"ref":"EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID12c62c66-b2a2-4a75-a1f9-b7b8cbec55a0"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EIDb741ff5d-1d05-4968-bfde-9d5769544903"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID12c62c66-b2a2-4a75-a1f9-b7b8cbec55a0","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:12:21.936Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:12:30.085Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EIDb741ff5d-1d05-4968-bfde-9d5769544903","testObject":{"ref":"EID12c62c66-b2a2-4a75-a1f9-b7b8cbec55a0"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a306865-0175-1000-1869-f8e5d4575bf7","testCaseResults":{"TestCaseResult":[{"id":"EID6a306865-0175-1000-a466-e8a6060ddb3a","testStepResults":{"TestStepResult":[{"id":"EID6a306865-0175-1000-7797-040eebf9b72b","parent":{"ref":"EID6a306865-0175-1000-a466-e8a6060ddb3a"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:12:38Z","duration":17,"status":"PASSED"},{"id":"EID6a306877-0175-1000-1183-4ff706141ab9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3069c8-0175-1000-825e-8281f22f8d17","parent":{"ref":"EID6a306877-0175-1000-1183-4ff706141ab9"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:12:39Z","duration":0,"status":"PASSED"},{"id":"EID6a3069c8-0175-1000-af87-b4ea8757ca3d","parent":{"ref":"EID6a306877-0175-1000-1183-4ff706141ab9"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:12:39Z","duration":0,"status":"PASSED"},{"id":"EID6a3069c8-0175-1000-7252-fb6872223d67","parent":{"ref":"EID6a306877-0175-1000-1183-4ff706141ab9"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:12:39Z","duration":0,"status":"PASSED"},{"id":"EID6a3069c8-0175-1000-78da-aa9802e574f4","parent":{"ref":"EID6a306877-0175-1000-1183-4ff706141ab9"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:12:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID93c69897-85a5-4c66-a760-7ece5df797e6"},{"ref":"EID024866f3-cada-4730-9361-bd475519e515"},{"ref":"EIDb71a86b9-5361-45b7-8bd9-2693a2217a85"}]},"parent":{"ref":"EID6a306865-0175-1000-a466-e8a6060ddb3a"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:12:38Z","duration":163,"status":"PASSED"}]},"parent":{"ref":"EID6a306865-0175-1000-1869-f8e5d4575bf7"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:12:38Z","duration":367,"status":"PASSED"},{"id":"EID6a3069d4-0175-1000-7a87-2424bd4a2c17","testStepResults":{"TestStepResult":{"id":"EID6a3069d4-0175-1000-0a1c-00794c556e3b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a306b4c-0175-1000-b67b-61bc08feb104","parent":{"ref":"EID6a3069d4-0175-1000-0a1c-00794c556e3b"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:12:39Z","duration":0,"status":"PASSED"},{"id":"EID6a306b4c-0175-1000-be1c-bc7138b0dd54","parent":{"ref":"EID6a3069d4-0175-1000-0a1c-00794c556e3b"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:12:39Z","duration":0,"status":"PASSED"},{"id":"EID6a306b4c-0175-1000-e417-7c70c85cecc0","parent":{"ref":"EID6a3069d4-0175-1000-0a1c-00794c556e3b"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:12:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf78b60cd-ae1f-4edd-9931-95a4963302ca"},{"ref":"EIDf584525a-2da1-4e12-a1c9-0cb02d44d610"},{"ref":"EID77986757-bf0f-4e2e-a6b7-fab951bba939"}]},"parent":{"ref":"EID6a3069d4-0175-1000-7a87-2424bd4a2c17"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:12:39Z","duration":173,"status":"PASSED"}},"parent":{"ref":"EID6a306865-0175-1000-1869-f8e5d4575bf7"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:12:39Z","duration":376,"status":"PASSED"}]},"parent":{"ref":"EIDb741ff5d-1d05-4968-bfde-9d5769544903"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:12:38Z","duration":743,"status":"PASSED"},{"id":"EID6a306b4c-0175-1000-63ce-311061ef5056","testCaseResults":{"TestCaseResult":[{"id":"EID6a306b4c-0175-1000-8319-69af6e0696a5","testStepResults":{"TestStepResult":[{"id":"EID6a306b4c-0175-1000-7c15-b41469c60a64","parent":{"ref":"EID6a306b4c-0175-1000-8319-69af6e0696a5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:12:39Z","duration":173,"status":"PASSED"},{"id":"EID6a306b4c-0175-1000-b78c-502bcfb7182c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a306cf9-0175-1000-a046-b930f4618121","parent":{"ref":"EID6a306b4c-0175-1000-b78c-502bcfb7182c"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:12:39Z","duration":0,"status":"PASSED"},{"id":"EID6a306cf9-0175-1000-f069-2a49d6be897f","parent":{"ref":"EID6a306b4c-0175-1000-b78c-502bcfb7182c"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:12:39Z","duration":0,"status":"PASSED"},{"id":"EID6a306cf9-0175-1000-55dd-5513a034bd62","parent":{"ref":"EID6a306b4c-0175-1000-b78c-502bcfb7182c"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:12:39Z","duration":0,"status":"PASSED"},{"id":"EID6a306cf9-0175-1000-f9b4-aac01157634c","parent":{"ref":"EID6a306b4c-0175-1000-b78c-502bcfb7182c"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:12:39Z","duration":0,"status":"PASSED"},{"id":"EID6a306cf9-0175-1000-b52f-6ca4ba919325","parent":{"ref":"EID6a306b4c-0175-1000-b78c-502bcfb7182c"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:12:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID33768640-9251-4ab8-bafd-a5b0613712e7"},{"ref":"EIDa956289e-9113-4125-9031-23ae8ba4acaf"},{"ref":"EID759e6b3b-f05e-42d9-b294-14a5adfee8ec"}]},"parent":{"ref":"EID6a306b4c-0175-1000-8319-69af6e0696a5"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:12:39Z","duration":216,"status":"PASSED"}]},"parent":{"ref":"EID6a306b4c-0175-1000-63ce-311061ef5056"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:12:39Z","duration":429,"status":"PASSED"},{"id":"EID6a306cf9-0175-1000-d084-477942c4f9db","testStepResults":{"TestStepResult":[{"id":"EID6a306cf9-0175-1000-f76b-148bc477e4c2","attachments":{"attachment":[{"ref":"EIDe1a5fd92-ad76-45eb-a757-66127a0b71b4"},{"ref":"EIDb63053ad-0a3c-44e5-89fd-c94bb1e6c8ad"}]},"parent":{"ref":"EID6a306cf9-0175-1000-d084-477942c4f9db"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:12:39Z","duration":309,"status":"PASSED"},{"id":"EID6a306e7f-0175-1000-718e-8ebab8761562","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a306f4f-0175-1000-109c-e4f6e7396560","parent":{"ref":"EID6a306e7f-0175-1000-718e-8ebab8761562"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:12:40Z","duration":0,"status":"PASSED"},{"id":"EID6a306f4f-0175-1000-7e89-2a8c02483b98","parent":{"ref":"EID6a306e7f-0175-1000-718e-8ebab8761562"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:12:40Z","duration":0,"status":"PASSED"},{"id":"EID6a306f4f-0175-1000-c4e1-4598d0728eaa","parent":{"ref":"EID6a306e7f-0175-1000-718e-8ebab8761562"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:12:40Z","duration":0,"status":"PASSED"},{"id":"EID6a306f4f-0175-1000-2dd9-364f98bd7e87","parent":{"ref":"EID6a306e7f-0175-1000-718e-8ebab8761562"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:12:40Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0c0e86de-008e-4a05-a029-a12a3e63eda6"},{"ref":"EID84c13a68-cf07-46e4-a9c3-29dd852031a6"},{"ref":"EID685f2528-88b1-404e-93f9-c9b9ef40cc9d"}]},"parent":{"ref":"EID6a306cf9-0175-1000-d084-477942c4f9db"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:12:40Z","duration":50,"status":"PASSED"}]},"parent":{"ref":"EID6a306b4c-0175-1000-63ce-311061ef5056"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:12:39Z","duration":598,"status":"PASSED"},{"id":"EID6a306f58-0175-1000-488f-f5f497b0bdc1","testStepResults":{"TestStepResult":[{"id":"EID6a306f58-0175-1000-9940-cab5f6bfe4a6","attachments":{"attachment":[{"ref":"EIDbcf644e9-15db-4493-bff9-01fa9971aa32"},{"ref":"EIDde227233-2f9b-4a29-9a64-1a0d88c55bd3"}]},"parent":{"ref":"EID6a306f58-0175-1000-488f-f5f497b0bdc1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:12:40Z","duration":278,"status":"PASSED"},{"id":"EID6a307099-0175-1000-1261-55db0928ab73","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30721c-0175-1000-657e-e3d502aabe26","parent":{"ref":"EID6a307099-0175-1000-1261-55db0928ab73"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:12:41Z","duration":0,"status":"PASSED"},{"id":"EID6a30721c-0175-1000-7881-3233275fb3ad","parent":{"ref":"EID6a307099-0175-1000-1261-55db0928ab73"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:12:41Z","duration":0,"status":"PASSED"},{"id":"EID6a30721c-0175-1000-8485-059135037b8c","parent":{"ref":"EID6a307099-0175-1000-1261-55db0928ab73"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:12:41Z","duration":0,"status":"PASSED"},{"id":"EID6a30721c-0175-1000-667b-19f7ccdda02e","parent":{"ref":"EID6a307099-0175-1000-1261-55db0928ab73"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:12:41Z","duration":0,"status":"PASSED"},{"id":"EID6a30721c-0175-1000-c038-42436fd0d97f","parent":{"ref":"EID6a307099-0175-1000-1261-55db0928ab73"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:12:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID73f6d449-fcb0-4ace-ac19-7ca1b58f6e17"},{"ref":"EID1274669f-1b88-4d0f-bdb9-0204b1940656"},{"ref":"EID45c52474-e4ef-451f-832f-9340752402ea"}]},"parent":{"ref":"EID6a306f58-0175-1000-488f-f5f497b0bdc1"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:12:40Z","duration":134,"status":"PASSED"}]},"parent":{"ref":"EID6a306b4c-0175-1000-63ce-311061ef5056"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:12:40Z","duration":708,"status":"PASSED"},{"id":"EID6a30721c-0175-1000-9e28-7f86e623ea7d","testStepResults":{"TestStepResult":[{"id":"EID6a30721c-0175-1000-f2e9-8798b91875e2","attachments":{"attachment":[{"ref":"EID05240092-c475-4fb4-bfe9-fe9608d2e600"},{"ref":"EID848580fc-02e8-4dbb-88ea-c696dfa74f74"}]},"parent":{"ref":"EID6a30721c-0175-1000-9e28-7f86e623ea7d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:12:41Z","duration":164,"status":"PASSED"},{"id":"EID6a3072e7-0175-1000-b989-2a19ce82a91d","parent":{"ref":"EID6a30721c-0175-1000-9e28-7f86e623ea7d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:12:41Z","duration":0,"status":"PASSED"},{"id":"EID6a3072e7-0175-1000-9f0b-55b922f82225","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30738f-0175-1000-7af2-bb8e6f329bfe","parent":{"ref":"EID6a3072e7-0175-1000-9f0b-55b922f82225"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:12:41Z","duration":0,"status":"PASSED"},{"id":"EID6a30738f-0175-1000-a769-44abcd5186d8","parent":{"ref":"EID6a3072e7-0175-1000-9f0b-55b922f82225"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:12:41Z","duration":0,"status":"PASSED"},{"id":"EID6a30738f-0175-1000-dc8c-4e6c0a9f0c35","parent":{"ref":"EID6a3072e7-0175-1000-9f0b-55b922f82225"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:12:41Z","duration":0,"status":"PASSED"},{"id":"EID6a30738f-0175-1000-8e87-fbf99d53ec80","parent":{"ref":"EID6a3072e7-0175-1000-9f0b-55b922f82225"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:12:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc7bdd86f-51fb-48c8-9c4f-6ab234a797f9"},{"ref":"EID54a1cd28-f252-4c0f-b625-dadaad0e6d3b"},{"ref":"EID50c7c0b4-d8ef-4086-a0e5-5e05329ff2f3"}]},"parent":{"ref":"EID6a30721c-0175-1000-9e28-7f86e623ea7d"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:12:41Z","duration":49,"status":"PASSED"},{"id":"EID6a30738f-0175-1000-fbd7-7026454172ef","attachments":{"attachment":{"ref":"EIDb8b71c2c-1fc0-4493-badc-2447a0cb7fe6"}},"parent":{"ref":"EID6a30721c-0175-1000-9e28-7f86e623ea7d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:12:41Z","duration":0,"status":"PASSED"},{"id":"EID6a30739a-0175-1000-151a-808f9f993dae","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3074d0-0175-1000-3257-fba05d1c1ba3","parent":{"ref":"EID6a30739a-0175-1000-151a-808f9f993dae"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:12:41Z","duration":0,"status":"PASSED"},{"id":"EID6a3074d0-0175-1000-a6e3-fce9f748964c","parent":{"ref":"EID6a30739a-0175-1000-151a-808f9f993dae"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:12:41Z","duration":0,"status":"PASSED"},{"id":"EID6a3074d0-0175-1000-ed80-97f268003586","parent":{"ref":"EID6a30739a-0175-1000-151a-808f9f993dae"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:12:41Z","duration":0,"status":"PASSED"},{"id":"EID6a3074d0-0175-1000-812b-676d4101f43a","parent":{"ref":"EID6a30739a-0175-1000-151a-808f9f993dae"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:12:41Z","duration":0,"status":"PASSED"},{"id":"EID6a3074d0-0175-1000-ae21-df6c629f0844","parent":{"ref":"EID6a30739a-0175-1000-151a-808f9f993dae"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:12:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8e1ace6e-5cd2-46f9-89cf-f1333898fc77"},{"ref":"EID4a9d5329-e8c7-4512-8318-a68db1879a06"},{"ref":"EID41ba429d-15b1-4752-9142-cd264ed086df"}]},"parent":{"ref":"EID6a30721c-0175-1000-9e28-7f86e623ea7d"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:12:41Z","duration":41,"status":"PASSED"}]},"parent":{"ref":"EID6a306b4c-0175-1000-63ce-311061ef5056"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:12:41Z","duration":692,"status":"PASSED"},{"id":"EID6a3074d1-0175-1000-4058-ab13c07bdd19","testStepResults":{"TestStepResult":[{"id":"EID6a3074d1-0175-1000-cef6-72d94e2d3fec","attachments":{"attachment":[{"ref":"EID693af500-fb32-4c96-b412-f40f88a6dd21"},{"ref":"EID38f91c9d-b513-484b-b806-822b10de767e"}]},"parent":{"ref":"EID6a3074d1-0175-1000-4058-ab13c07bdd19"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:12:41Z","duration":408,"status":"PASSED"},{"id":"EID6a3076a6-0175-1000-d1a9-364ef4f50d65","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30783f-0175-1000-9ac6-7d083b5a842b","parent":{"ref":"EID6a3076a6-0175-1000-d1a9-364ef4f50d65"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:12:42Z","duration":0,"status":"PASSED"},{"id":"EID6a30783f-0175-1000-0c64-1427082984c9","parent":{"ref":"EID6a3076a6-0175-1000-d1a9-364ef4f50d65"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:12:42Z","duration":0,"status":"PASSED"},{"id":"EID6a30783f-0175-1000-e941-6a870ececebc","parent":{"ref":"EID6a3076a6-0175-1000-d1a9-364ef4f50d65"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:12:42Z","duration":0,"status":"PASSED"},{"id":"EID6a30783f-0175-1000-41d3-f3a5469b83ae","parent":{"ref":"EID6a3076a6-0175-1000-d1a9-364ef4f50d65"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:12:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbd1715a8-577e-49fc-8a91-08c8f119630e"},{"ref":"EID985e3911-e482-4fa8-bfa8-a3771baafadc"},{"ref":"EID3f50f427-f4e0-4a0f-9396-81fca306e947"}]},"parent":{"ref":"EID6a3074d1-0175-1000-4058-ab13c07bdd19"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:12:42Z","duration":97,"status":"PASSED"}]},"parent":{"ref":"EID6a306b4c-0175-1000-63ce-311061ef5056"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:12:41Z","duration":878,"status":"PASSED"},{"id":"EID6a30783f-0175-1000-0654-d9b0d882351f","testStepResults":{"TestStepResult":[{"id":"EID6a30783f-0175-1000-56cf-c17393f64e14","attachments":{"attachment":[{"ref":"EID6d7510e9-cdf8-41ad-9700-c1a7b630e962"},{"ref":"EIDb036cdaf-a2e3-4024-b037-849c6381c28f"}]},"parent":{"ref":"EID6a30783f-0175-1000-0654-d9b0d882351f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:12:42Z","duration":158,"status":"PASSED"},{"id":"EID6a307933-0175-1000-6eb4-06ea8b5b1988","parent":{"ref":"EID6a30783f-0175-1000-0654-d9b0d882351f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:12:43Z","duration":0,"status":"PASSED"},{"id":"EID6a307933-0175-1000-cb00-b7c4d459c7a5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3079e8-0175-1000-cdb3-3929b8c9f71a","parent":{"ref":"EID6a307933-0175-1000-cb00-b7c4d459c7a5"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:12:43Z","duration":0,"status":"PASSED"},{"id":"EID6a3079e8-0175-1000-eb9f-087218bb3d07","parent":{"ref":"EID6a307933-0175-1000-cb00-b7c4d459c7a5"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:12:43Z","duration":0,"status":"PASSED"},{"id":"EID6a3079e8-0175-1000-48ce-f2b71bd93d54","parent":{"ref":"EID6a307933-0175-1000-cb00-b7c4d459c7a5"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:12:43Z","duration":0,"status":"PASSED"},{"id":"EID6a3079e8-0175-1000-2f4c-85662278ee71","parent":{"ref":"EID6a307933-0175-1000-cb00-b7c4d459c7a5"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:12:43Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa69dc260-18cf-4e94-ad09-72d196eab2c1"},{"ref":"EIDc8582d48-54a7-4929-98a6-7d1c7643157c"},{"ref":"EIDe82300e3-1fa4-481a-af4b-815825686e5c"}]},"parent":{"ref":"EID6a30783f-0175-1000-0654-d9b0d882351f"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:12:43Z","duration":56,"status":"PASSED"},{"id":"EID6a3079e8-0175-1000-2c6e-ea365b9aeecb","attachments":{"attachment":{"ref":"EID7910d745-2586-4742-970c-6a97bae4c1b5"}},"parent":{"ref":"EID6a30783f-0175-1000-0654-d9b0d882351f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:12:43Z","duration":0,"status":"PASSED"},{"id":"EID6a307a06-0175-1000-e146-eb3b7e032f80","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a307ae8-0175-1000-67f1-0fe39544f719","parent":{"ref":"EID6a307a06-0175-1000-e146-eb3b7e032f80"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:12:43Z","duration":0,"status":"PASSED"},{"id":"EID6a307ae8-0175-1000-39a1-b2240f57304b","parent":{"ref":"EID6a307a06-0175-1000-e146-eb3b7e032f80"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:12:43Z","duration":0,"status":"PASSED"},{"id":"EID6a307ae8-0175-1000-6509-231f3de86c15","parent":{"ref":"EID6a307a06-0175-1000-e146-eb3b7e032f80"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:12:43Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID802bf49a-d48b-4dd8-bfae-9c18de79b36d"},{"ref":"EID6fa51c69-5318-4777-8941-63299d86e192"},{"ref":"EID2282fcc3-859e-41ad-a86f-12d785174b1d"}]},"parent":{"ref":"EID6a30783f-0175-1000-0654-d9b0d882351f"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:12:43Z","duration":161,"status":"PASSED"},{"id":"EID6a307ae8-0175-1000-50d1-890bd234c3b4","attachments":{"attachment":{"ref":"EID861ab317-67de-4019-999b-e3c19dbafb4b"}},"parent":{"ref":"EID6a30783f-0175-1000-0654-d9b0d882351f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-27T13:12:43Z","duration":1,"status":"PASSED"},{"id":"EID6a307af5-0175-1000-dc45-9c2a81bf2e43","attachments":{"attachment":{"ref":"EID74874507-a5de-4a92-a4f7-2bd0a024b7e2"}},"parent":{"ref":"EID6a30783f-0175-1000-0654-d9b0d882351f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-27T13:12:43Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a306b4c-0175-1000-63ce-311061ef5056"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:12:42Z","duration":711,"status":"PASSED"},{"id":"EID6a307b06-0175-1000-f4d1-defeb4b9b701","testStepResults":{"TestStepResult":[{"id":"EID6a307b06-0175-1000-8e52-ee31e6ce9c8e","attachments":{"attachment":[{"ref":"EID093b64a3-180c-4f89-b5af-075ee9cce5af"},{"ref":"EID97133513-fbd0-4b1f-91d5-9363b0805717"}]},"parent":{"ref":"EID6a307b06-0175-1000-f4d1-defeb4b9b701"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:12:43Z","duration":191,"status":"PASSED"},{"id":"EID6a307beb-0175-1000-d7cf-1ec89aa28eaa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a307d9b-0175-1000-bba2-658c09554f34","parent":{"ref":"EID6a307beb-0175-1000-d7cf-1ec89aa28eaa"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:12:44Z","duration":0,"status":"PASSED"},{"id":"EID6a307d9b-0175-1000-51c6-80db9b19bc74","parent":{"ref":"EID6a307beb-0175-1000-d7cf-1ec89aa28eaa"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:12:44Z","duration":0,"status":"PASSED"},{"id":"EID6a307d9b-0175-1000-d2aa-264165650e01","parent":{"ref":"EID6a307beb-0175-1000-d7cf-1ec89aa28eaa"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:12:44Z","duration":0,"status":"PASSED"},{"id":"EID6a307d9b-0175-1000-9a36-977597fba2be","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a307beb-0175-1000-d7cf-1ec89aa28eaa"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:12:44Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID64b0e13c-bc22-4397-a412-c7dec0a18767"},{"ref":"EIDdd8865df-6a8a-48c9-8545-69f8eedb043d"},{"ref":"EIDc3de18d7-b906-4d83-8ee9-179fdfba28af"}]},"parent":{"ref":"EID6a307b06-0175-1000-f4d1-defeb4b9b701"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:12:43Z","duration":231,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a306b4c-0175-1000-63ce-311061ef5056"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:12:43Z","duration":661,"status":"PASSED_MANUAL"},{"id":"EID6a307d9b-0175-1000-dc48-0ecb596975bf","testStepResults":{"TestStepResult":{"id":"EID6a307d9b-0175-1000-f309-f9032506f91a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a307eba-0175-1000-7629-831ea46f00ec","parent":{"ref":"EID6a307d9b-0175-1000-f309-f9032506f91a"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:12:44Z","duration":0,"status":"PASSED"},{"id":"EID6a307eba-0175-1000-5c97-acbeecd6661f","parent":{"ref":"EID6a307d9b-0175-1000-f309-f9032506f91a"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:12:44Z","duration":0,"status":"PASSED"},{"id":"EID6a307eba-0175-1000-b8b6-63ee500567ad","parent":{"ref":"EID6a307d9b-0175-1000-f309-f9032506f91a"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:12:44Z","duration":0,"status":"PASSED"},{"id":"EID6a307eba-0175-1000-9a2b-3d9f01f9627c","parent":{"ref":"EID6a307d9b-0175-1000-f309-f9032506f91a"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:12:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7997b150-680c-45b4-a227-057d41d93496"},{"ref":"EID5e263430-276e-45be-94db-c664ea800c97"},{"ref":"EIDdfc8d1a7-cef4-463f-a8e5-938e8eb4bb96"}]},"parent":{"ref":"EID6a307d9b-0175-1000-dc48-0ecb596975bf"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:12:44Z","duration":162,"status":"PASSED"}},"parent":{"ref":"EID6a306b4c-0175-1000-63ce-311061ef5056"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:12:44Z","duration":288,"status":"PASSED"},{"id":"EID6a307ebb-0175-1000-c91d-b62823d38b03","testStepResults":{"TestStepResult":{"id":"EID6a307ebb-0175-1000-3940-9770d14fb950","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30817d-0175-1000-6506-bec0cfa25f3b","parent":{"ref":"EID6a307ebb-0175-1000-3940-9770d14fb950"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:12:45Z","duration":0,"status":"PASSED"},{"id":"EID6a30817d-0175-1000-01be-1241492c39b9","parent":{"ref":"EID6a307ebb-0175-1000-3940-9770d14fb950"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:12:45Z","duration":0,"status":"PASSED"},{"id":"EID6a30817d-0175-1000-c451-96b5fb0789ab","parent":{"ref":"EID6a307ebb-0175-1000-3940-9770d14fb950"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:12:45Z","duration":0,"status":"PASSED"},{"id":"EID6a30817d-0175-1000-6539-4ffea3f86daa","parent":{"ref":"EID6a307ebb-0175-1000-3940-9770d14fb950"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:12:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2e3b1ae2-6db9-4c3e-8b13-88334b33e2b2"},{"ref":"EIDf674e158-7780-4a1b-8557-b3386c75822a"},{"ref":"EID3e4b5fa1-1771-4873-8cf1-fac03a879651"}]},"parent":{"ref":"EID6a307ebb-0175-1000-c91d-b62823d38b03"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:12:44Z","duration":613,"status":"PASSED"}},"parent":{"ref":"EID6a306b4c-0175-1000-63ce-311061ef5056"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:12:44Z","duration":717,"status":"PASSED"},{"id":"EID6a308188-0175-1000-5a7e-7b52672fa59a","testStepResults":{"TestStepResult":[{"id":"EID6a308193-0175-1000-c4f9-d05d965c6a02","attachments":{"attachment":[{"ref":"EID5962b322-19b1-4f61-acb5-3665a118a184"},{"ref":"EID0274e5ef-b6ad-4a57-9901-309fa26372fc"},{"ref":"EID785c9e5e-5082-41ae-9c52-709ed7b46b97"},{"ref":"EID231ad2e6-68e5-442e-8385-4e49a7364bf9"},{"ref":"EID3b7c32b8-2248-4af6-b582-bbd0ddfbe70c"},{"ref":"EID435aadd3-06ac-4bed-b45a-f526d179f9c4"},{"ref":"EID7a9b88fb-4fd6-485c-bd76-3b4af66c86ea"},{"ref":"EID5052a98a-4e73-4edf-83a6-328767481c9c"},{"ref":"EID3ef0e84a-0dad-4023-9aec-440dbf4c5774"},{"ref":"EIDb9c0c25b-a724-4f0a-aa6e-fbd408fe9ab8"},{"ref":"EID0fe957b5-8543-4500-bfb0-aa8ebd57c08d"},{"ref":"EID3c5041ff-9078-4b7a-ad2c-c3323e7a8cd7"}]},"parent":{"ref":"EID6a308188-0175-1000-5a7e-7b52672fa59a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:12:45Z","duration":1027,"status":"PASSED"},{"id":"EID6a308675-0175-1000-6d03-5eac82d3647f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30873f-0175-1000-7436-5efe358b0bd9","parent":{"ref":"EID6a308675-0175-1000-6d03-5eac82d3647f"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-27T13:12:46Z","duration":0,"status":"PASSED"},{"id":"EID6a30873f-0175-1000-024b-7c74e961fd6e","parent":{"ref":"EID6a308675-0175-1000-6d03-5eac82d3647f"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-27T13:12:46Z","duration":0,"status":"PASSED"},{"id":"EID6a30873f-0175-1000-5438-bfcc2384371c","parent":{"ref":"EID6a308675-0175-1000-6d03-5eac82d3647f"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-27T13:12:46Z","duration":0,"status":"PASSED"},{"id":"EID6a30873f-0175-1000-4694-f6efa81e9fcf","parent":{"ref":"EID6a308675-0175-1000-6d03-5eac82d3647f"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-27T13:12:46Z","duration":0,"status":"PASSED"},{"id":"EID6a30873f-0175-1000-8ce5-3da8a223ea5b","parent":{"ref":"EID6a308675-0175-1000-6d03-5eac82d3647f"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-27T13:12:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDae6738eb-11aa-4ba0-9065-67ad7cfc9c68"},{"ref":"EID150273dd-0849-4765-a5c4-7fa9cf9ca7f6"},{"ref":"EIDd29652b0-4dec-4f75-b7c0-0712e2934ef1"}]},"parent":{"ref":"EID6a308188-0175-1000-5a7e-7b52672fa59a"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-27T13:12:46Z","duration":61,"status":"PASSED"}]},"parent":{"ref":"EID6a306b4c-0175-1000-63ce-311061ef5056"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:12:45Z","duration":1463,"status":"PASSED"},{"id":"EID6a30873f-0175-1000-549c-c0402595dd50","testStepResults":{"TestStepResult":{"id":"EID6a30873f-0175-1000-dbd9-ff4963ee3be1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3087c1-0175-1000-0849-53e8b4ab3f1c","parent":{"ref":"EID6a30873f-0175-1000-dbd9-ff4963ee3be1"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:12:46Z","duration":0,"status":"PASSED"},{"id":"EID6a3087c1-0175-1000-0934-465ce7f59405","parent":{"ref":"EID6a30873f-0175-1000-dbd9-ff4963ee3be1"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:12:46Z","duration":0,"status":"PASSED"},{"id":"EID6a3087c1-0175-1000-9589-049033ce7a4c","parent":{"ref":"EID6a30873f-0175-1000-dbd9-ff4963ee3be1"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:12:46Z","duration":0,"status":"PASSED"},{"id":"EID6a3087c1-0175-1000-7147-fcf41639b8bf","parent":{"ref":"EID6a30873f-0175-1000-dbd9-ff4963ee3be1"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:12:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa87e40d9-dbbc-464f-85f6-2708acbdd408"},{"ref":"EIDd1e9969c-dd79-4185-92d8-19c2deb7213f"},{"ref":"EIDf5487638-2c0a-4327-9b6c-4de8b6ed16fc"}]},"parent":{"ref":"EID6a30873f-0175-1000-549c-c0402595dd50"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:12:46Z","duration":44,"status":"PASSED"}},"parent":{"ref":"EID6a306b4c-0175-1000-63ce-311061ef5056"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:12:46Z","duration":130,"status":"PASSED"},{"id":"EID6a3087c2-0175-1000-85a0-e2054deaf79e","testStepResults":{"TestStepResult":{"id":"EID6a3087cd-0175-1000-1078-351db0b37e7d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3088e4-0175-1000-3575-7b82ac9ba264","parent":{"ref":"EID6a3087cd-0175-1000-1078-351db0b37e7d"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:12:47Z","duration":0,"status":"PASSED"},{"id":"EID6a3088e4-0175-1000-d025-7ed21c2a3237","parent":{"ref":"EID6a3087cd-0175-1000-1078-351db0b37e7d"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:12:47Z","duration":0,"status":"PASSED"},{"id":"EID6a3088e4-0175-1000-3827-0235855832be","parent":{"ref":"EID6a3087cd-0175-1000-1078-351db0b37e7d"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:12:47Z","duration":0,"status":"PASSED"},{"id":"EID6a3088e4-0175-1000-d391-3811702d10c0","parent":{"ref":"EID6a3087cd-0175-1000-1078-351db0b37e7d"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:12:47Z","duration":0,"status":"PASSED"},{"id":"EID6a3088e4-0175-1000-1eee-8ffbb4f0670b","parent":{"ref":"EID6a3087cd-0175-1000-1078-351db0b37e7d"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:12:47Z","duration":0,"status":"PASSED"},{"id":"EID6a3088e4-0175-1000-6fe3-3b49a85c5f5f","parent":{"ref":"EID6a3087cd-0175-1000-1078-351db0b37e7d"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:12:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDedd542a2-05e9-423a-97ab-1e64e9b1f644"},{"ref":"EID3edd2cb0-dc31-4f69-8587-d3f02c2fd757"},{"ref":"EID992100d7-5bdd-49f6-90d2-5480598e0423"}]},"parent":{"ref":"EID6a3087c2-0175-1000-85a0-e2054deaf79e"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:12:46Z","duration":55,"status":"PASSED"}},"parent":{"ref":"EID6a306b4c-0175-1000-63ce-311061ef5056"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:12:46Z","duration":290,"status":"PASSED"},{"id":"EID6a3088e4-0175-1000-21c2-966f18fce09c","testStepResults":{"TestStepResult":{"id":"EID6a3088e4-0175-1000-3571-90000fd2f99e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3089ad-0175-1000-4824-ba22fd3497aa","parent":{"ref":"EID6a3088e4-0175-1000-3571-90000fd2f99e"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:12:47Z","duration":0,"status":"PASSED"},{"id":"EID6a3089ad-0175-1000-c040-01a97b3a6861","parent":{"ref":"EID6a3088e4-0175-1000-3571-90000fd2f99e"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:12:47Z","duration":0,"status":"PASSED"},{"id":"EID6a3089ad-0175-1000-cedb-9e2c6e111a8a","parent":{"ref":"EID6a3088e4-0175-1000-3571-90000fd2f99e"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:12:47Z","duration":0,"status":"PASSED"},{"id":"EID6a3089ad-0175-1000-d4a7-c0d8dc20d639","parent":{"ref":"EID6a3088e4-0175-1000-3571-90000fd2f99e"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:12:47Z","duration":0,"status":"PASSED"},{"id":"EID6a3089ad-0175-1000-327f-63e1b21b0c1e","parent":{"ref":"EID6a3088e4-0175-1000-3571-90000fd2f99e"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:12:47Z","duration":0,"status":"PASSED"},{"id":"EID6a3089ad-0175-1000-e975-729ef9c974fa","parent":{"ref":"EID6a3088e4-0175-1000-3571-90000fd2f99e"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:12:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDba21f72b-21a5-43ff-b4c6-815d8d461058"},{"ref":"EIDcd94d509-7bff-460f-85f1-4caf30396fd4"},{"ref":"EID7968ef34-7afd-4490-9ca3-0d7fd8098415"}]},"parent":{"ref":"EID6a3088e4-0175-1000-21c2-966f18fce09c"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:12:47Z","duration":51,"status":"PASSED"}},"parent":{"ref":"EID6a306b4c-0175-1000-63ce-311061ef5056"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:12:47Z","duration":235,"status":"PASSED"},{"id":"EID6a3089d0-0175-1000-17e7-e2e762db958e","testStepResults":{"TestStepResult":{"id":"EID6a3089d0-0175-1000-9cce-522f4e25288a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a308a71-0175-1000-1ef7-dd68e506bf38","parent":{"ref":"EID6a3089d0-0175-1000-9cce-522f4e25288a"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:12:47Z","duration":0,"status":"PASSED"},{"id":"EID6a308a71-0175-1000-8313-48c0e22a8afb","parent":{"ref":"EID6a3089d0-0175-1000-9cce-522f4e25288a"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:12:47Z","duration":0,"status":"PASSED"},{"id":"EID6a308a71-0175-1000-e230-b4a3d03de4e4","parent":{"ref":"EID6a3089d0-0175-1000-9cce-522f4e25288a"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:12:47Z","duration":0,"status":"PASSED"},{"id":"EID6a308a71-0175-1000-4103-1fb698a19ddc","parent":{"ref":"EID6a3089d0-0175-1000-9cce-522f4e25288a"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:12:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID57012ed0-0ec6-4cf8-b478-72ca339e22c4"},{"ref":"EIDc9fd1bac-accb-4008-9b37-408dfbcfa771"},{"ref":"EID5273c0cf-ec7e-40c5-be31-3d083642394c"}]},"parent":{"ref":"EID6a3089d0-0175-1000-17e7-e2e762db958e"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:12:47Z","duration":52,"status":"PASSED"}},"parent":{"ref":"EID6a306b4c-0175-1000-63ce-311061ef5056"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:12:47Z","duration":161,"status":"PASSED"},{"id":"EID6a308a71-0175-1000-222e-61aa2108b93c","testStepResults":{"TestStepResult":[{"id":"EID6a308a71-0175-1000-52cb-310542e8bccc","attachments":{"attachment":[{"ref":"EIDe6b5f416-8dbc-4e14-aa67-160aee488b93"},{"ref":"EIDa07b5caa-21a1-4d82-b9e5-6b14c2d959dc"},{"ref":"EID98185c34-2a6a-459d-8c9c-1ec420a775dc"},{"ref":"EID422153d3-f635-443a-b3e4-4739e6553aeb"}]},"parent":{"ref":"EID6a308a71-0175-1000-222e-61aa2108b93c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:12:47Z","duration":246,"status":"PASSED"},{"id":"EID6a308b97-0175-1000-87e3-b66676968c7a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a308c87-0175-1000-42c8-39cc957da54f","parent":{"ref":"EID6a308b97-0175-1000-87e3-b66676968c7a"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:12:48Z","duration":0,"status":"PASSED"},{"id":"EID6a308c87-0175-1000-ef6b-2adcb8c0ca62","parent":{"ref":"EID6a308b97-0175-1000-87e3-b66676968c7a"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:12:48Z","duration":0,"status":"PASSED"},{"id":"EID6a308c87-0175-1000-4aaf-3348236ea7e4","parent":{"ref":"EID6a308b97-0175-1000-87e3-b66676968c7a"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:12:48Z","duration":0,"status":"PASSED"},{"id":"EID6a308c87-0175-1000-bfc0-bab71ce2e373","parent":{"ref":"EID6a308b97-0175-1000-87e3-b66676968c7a"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:12:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfb28898a-ad52-43b4-925b-d3dca7d2de60"},{"ref":"EIDccfd7751-d725-48df-9f6a-a467304e6236"},{"ref":"EID1a6627ee-a038-40b3-820c-b3e38323c17b"}]},"parent":{"ref":"EID6a308a71-0175-1000-222e-61aa2108b93c"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:12:47Z","duration":52,"status":"PASSED"}]},"parent":{"ref":"EID6a306b4c-0175-1000-63ce-311061ef5056"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:12:47Z","duration":534,"status":"PASSED"},{"id":"EID6a308c87-0175-1000-72f0-55eccd855656","testStepResults":{"TestStepResult":{"id":"EID6a308c87-0175-1000-25fd-96fdd8ab1559","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a308d75-0175-1000-aca4-aacafd3d4352","parent":{"ref":"EID6a308c87-0175-1000-25fd-96fdd8ab1559"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:12:48Z","duration":0,"status":"PASSED"},{"id":"EID6a308d75-0175-1000-d4f6-b023dc4ac6a5","parent":{"ref":"EID6a308c87-0175-1000-25fd-96fdd8ab1559"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:12:48Z","duration":0,"status":"PASSED"},{"id":"EID6a308d75-0175-1000-2c78-cf39d9aea739","parent":{"ref":"EID6a308c87-0175-1000-25fd-96fdd8ab1559"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:12:48Z","duration":0,"status":"PASSED"},{"id":"EID6a308d75-0175-1000-28ab-5c4990a469bf","parent":{"ref":"EID6a308c87-0175-1000-25fd-96fdd8ab1559"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:12:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4d32d184-b9d4-4073-bd72-72e65631014e"},{"ref":"EID9ba1015f-84e4-4170-b361-9852f856d70e"},{"ref":"EID97cdb413-5a34-4dae-b70a-a5b8862e52b4"}]},"parent":{"ref":"EID6a308c87-0175-1000-72f0-55eccd855656"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:12:48Z","duration":50,"status":"PASSED"}},"parent":{"ref":"EID6a306b4c-0175-1000-63ce-311061ef5056"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:12:48Z","duration":238,"status":"PASSED"},{"id":"EID6a308d75-0175-1000-6f0d-ceb1bebdfe37","testStepResults":{"TestStepResult":[{"id":"EID6a308d75-0175-1000-c001-9dbeed801b1a","parent":{"ref":"EID6a308d75-0175-1000-6f0d-ceb1bebdfe37"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:12:48Z","duration":0,"status":"PASSED"},{"id":"EID6a308d75-0175-1000-e373-36fa4a5ef394","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a308e92-0175-1000-0b21-cdc5d6af6eaa","parent":{"ref":"EID6a308d75-0175-1000-e373-36fa4a5ef394"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:12:48Z","duration":0,"status":"PASSED"},{"id":"EID6a308e92-0175-1000-bceb-ca8391ca2e4a","parent":{"ref":"EID6a308d75-0175-1000-e373-36fa4a5ef394"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:12:48Z","duration":0,"status":"PASSED"},{"id":"EID6a308e92-0175-1000-399b-af9bd09c2093","parent":{"ref":"EID6a308d75-0175-1000-e373-36fa4a5ef394"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:12:48Z","duration":0,"status":"PASSED"},{"id":"EID6a308e92-0175-1000-0460-7516966ad2d6","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6a308d75-0175-1000-e373-36fa4a5ef394"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:12:48Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID0c2a6790-1031-42fb-a389-6879c7d6a898"},{"ref":"EIDd37b800e-249a-4421-a5b4-980f619b1462"},{"ref":"EID84e60510-db4a-44d7-9f72-ebe8a5c64853"}]},"parent":{"ref":"EID6a308d75-0175-1000-6f0d-ceb1bebdfe37"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:12:48Z","duration":144,"status":"FAILED"}]},"parent":{"ref":"EID6a306b4c-0175-1000-63ce-311061ef5056"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:12:48Z","duration":285,"status":"FAILED"}]},"parent":{"ref":"EIDb741ff5d-1d05-4968-bfde-9d5769544903"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:12:39Z","duration":9030,"status":"FAILED"},{"id":"EID6a308e92-0175-1000-ed9b-2fb7fc449d22","testCaseResults":{"TestCaseResult":[{"id":"EID6a308e92-0175-1000-b1fb-66ae0941ce52","testStepResults":{"TestStepResult":[{"id":"EID6a308e92-0175-1000-3113-535453649400","parent":{"ref":"EID6a308e92-0175-1000-b1fb-66ae0941ce52"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:12:48Z","duration":0,"status":"PASSED"},{"id":"EID6a308e93-0175-1000-8a9f-78a050ca3ec3","parent":{"ref":"EID6a308e92-0175-1000-b1fb-66ae0941ce52"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:12:48Z","duration":50,"status":"PASSED"},{"id":"EID6a308e93-0175-1000-332a-1c2c2eb70aa4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a308fff-0175-1000-418e-40ffaa4b8cb0","parent":{"ref":"EID6a308e93-0175-1000-332a-1c2c2eb70aa4"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:12:48Z","duration":0,"status":"PASSED"},{"id":"EID6a308fff-0175-1000-2798-6484cd22a209","parent":{"ref":"EID6a308e93-0175-1000-332a-1c2c2eb70aa4"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:12:48Z","duration":0,"status":"PASSED"},{"id":"EID6a308fff-0175-1000-26d1-7846093b09f3","parent":{"ref":"EID6a308e93-0175-1000-332a-1c2c2eb70aa4"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:12:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID10a2fe8f-6163-4c6d-9917-695d4b5b1f3c"},{"ref":"EID10dd8fbe-980a-4411-85a4-a5b8c2720813"},{"ref":"EID7b59e667-eec8-4cf3-957b-bba50479293c"}]},"parent":{"ref":"EID6a308e92-0175-1000-b1fb-66ae0941ce52"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:12:48Z","duration":252,"status":"PASSED"},{"id":"EID6a308fff-0175-1000-5b5c-f770627803a1","attachments":{"attachment":{"ref":"EID3301f5d6-fa4e-49fb-b9db-0d62e0283994"}},"parent":{"ref":"EID6a308e92-0175-1000-b1fb-66ae0941ce52"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:12:48Z","duration":0,"status":"PASSED"},{"id":"EID6a30900b-0175-1000-8d22-952dff1829d2","parent":{"ref":"EID6a308e92-0175-1000-b1fb-66ae0941ce52"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:12:48Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6a308e92-0175-1000-ed9b-2fb7fc449d22"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:12:48Z","duration":400,"status":"PASSED"},{"id":"EID6a309022-0175-1000-d252-694ee275a988","testStepResults":{"TestStepResult":[{"id":"EID6a309022-0175-1000-4855-c2dec94ba651","parent":{"ref":"EID6a309022-0175-1000-d252-694ee275a988"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:12:48Z","duration":173,"status":"PASSED"},{"id":"EID6a309023-0175-1000-ec2b-7498784375fc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3090a6-0175-1000-cdfb-954f824326c1","parent":{"ref":"EID6a309023-0175-1000-ec2b-7498784375fc"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a3090a6-0175-1000-0d51-ded846cbce0d","parent":{"ref":"EID6a309023-0175-1000-ec2b-7498784375fc"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a3090a6-0175-1000-df3f-1fe714883b9c","parent":{"ref":"EID6a309023-0175-1000-ec2b-7498784375fc"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a3090a6-0175-1000-c560-29fa827f2b90","parent":{"ref":"EID6a309023-0175-1000-ec2b-7498784375fc"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a3090a6-0175-1000-5b3c-5261bb2ac394","parent":{"ref":"EID6a309023-0175-1000-ec2b-7498784375fc"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID935ad434-fae5-45f9-85e5-7edde1758017"},{"ref":"EID37df0e74-4e36-4aa6-9b26-dba4925a9956"},{"ref":"EID242b6ec0-47d3-473d-8dfe-5d00790100f7"}]},"parent":{"ref":"EID6a309022-0175-1000-d252-694ee275a988"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:12:48Z","duration":57,"status":"PASSED"}]},"parent":{"ref":"EID6a308e92-0175-1000-ed9b-2fb7fc449d22"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:12:48Z","duration":132,"status":"PASSED"},{"id":"EID6a3090a6-0175-1000-99ae-95c93c6a5a59","testStepResults":{"TestStepResult":[{"id":"EID6a3090a6-0175-1000-3664-bff9afc40de9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30916a-0175-1000-6af0-35b2d056d4a8","parent":{"ref":"EID6a3090a6-0175-1000-3664-bff9afc40de9"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a30916a-0175-1000-4447-34c4d4d94dfa","parent":{"ref":"EID6a3090a6-0175-1000-3664-bff9afc40de9"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a30916a-0175-1000-5965-1ed0072ff2e3","parent":{"ref":"EID6a3090a6-0175-1000-3664-bff9afc40de9"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID51e170b3-28a6-4d30-8640-902e3ffeb915"},{"ref":"EID52acfa7d-4688-4812-8d8a-2fcbc1670c9a"},{"ref":"EIDf29e39cc-c5a6-40af-8654-0b0b32983fcc"}]},"parent":{"ref":"EID6a3090a6-0175-1000-99ae-95c93c6a5a59"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:12:49Z","duration":141,"status":"PASSED"},{"id":"EID6a309174-0175-1000-d770-bd5b38b9341f","attachments":{"attachment":{"ref":"EID91d1f78a-3e56-470c-a335-f916ede9b441"}},"parent":{"ref":"EID6a3090a6-0175-1000-99ae-95c93c6a5a59"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a30917f-0175-1000-4ff2-f220cb5ee285","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3091f6-0175-1000-6d64-04bbd259bfb5","parent":{"ref":"EID6a30917f-0175-1000-4ff2-f220cb5ee285"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a3091f6-0175-1000-bbc5-471c217a9856","parent":{"ref":"EID6a30917f-0175-1000-4ff2-f220cb5ee285"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a3091f6-0175-1000-050e-2c70c4789e79","parent":{"ref":"EID6a30917f-0175-1000-4ff2-f220cb5ee285"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a3091f6-0175-1000-f02b-ba67c3c831dc","parent":{"ref":"EID6a30917f-0175-1000-4ff2-f220cb5ee285"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a3091f6-0175-1000-1aee-82f04491ad19","parent":{"ref":"EID6a30917f-0175-1000-4ff2-f220cb5ee285"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8c2709c7-f42a-4803-8d27-c5c35d6eba7f"},{"ref":"EID13a00097-3e84-4456-9203-2c50054776f4"},{"ref":"EIDdae62241-171f-45b1-b383-7613c0c1b40a"}]},"parent":{"ref":"EID6a3090a6-0175-1000-99ae-95c93c6a5a59"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-27T13:12:49Z","duration":40,"status":"PASSED"}]},"parent":{"ref":"EID6a308e92-0175-1000-ed9b-2fb7fc449d22"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:12:49Z","duration":336,"status":"PASSED"},{"id":"EID6a3091f6-0175-1000-d583-a4e3c5db7a11","testStepResults":{"TestStepResult":[{"id":"EID6a3091f6-0175-1000-f998-bc4450646d08","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3092be-0175-1000-9257-beed7e6e8555","parent":{"ref":"EID6a3091f6-0175-1000-f998-bc4450646d08"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a3092be-0175-1000-5d8f-90ed0efa8391","parent":{"ref":"EID6a3091f6-0175-1000-f998-bc4450646d08"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a3092be-0175-1000-2fc0-33e04b8298a5","parent":{"ref":"EID6a3091f6-0175-1000-f998-bc4450646d08"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a3092be-0175-1000-c2ef-e703ceae962f","parent":{"ref":"EID6a3091f6-0175-1000-f998-bc4450646d08"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb78d3469-5788-494f-91c0-031cb05da145"},{"ref":"EID800b88f1-45a9-486f-ba54-aef491563ede"},{"ref":"EID3a38c9f3-d20e-4bd1-aaa4-9c2d5652d8f3"}]},"parent":{"ref":"EID6a3091f6-0175-1000-d583-a4e3c5db7a11"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:12:49Z","duration":46,"status":"PASSED"},{"id":"EID6a3092be-0175-1000-e1b1-e9dcb74bd00d","attachments":{"attachment":{"ref":"EIDd30d1ad0-5f06-4eb4-b25d-3f6488a81c84"}},"parent":{"ref":"EID6a3091f6-0175-1000-d583-a4e3c5db7a11"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-27T13:12:49Z","duration":1,"status":"PASSED"},{"id":"EID6a3092ca-0175-1000-e042-e9a359d4181b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a309314-0175-1000-b194-01cde68c385b","parent":{"ref":"EID6a3092ca-0175-1000-e042-e9a359d4181b"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a309314-0175-1000-464f-b282fc95dd25","parent":{"ref":"EID6a3092ca-0175-1000-e042-e9a359d4181b"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf35dbe09-a0f3-4fa8-8e41-5f7506a85d8e"},{"ref":"EID08db0f5f-1131-4d50-ab97-34459e3b683e"}]},"parent":{"ref":"EID6a3091f6-0175-1000-d583-a4e3c5db7a11"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-27T13:12:49Z","duration":69,"status":"PASSED"},{"id":"EID6a309314-0175-1000-295e-d3a6d21a5015","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3093cb-0175-1000-2f2b-69e549aa85c7","parent":{"ref":"EID6a309314-0175-1000-295e-d3a6d21a5015"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a3093cb-0175-1000-27f7-eaee989a23ac","parent":{"ref":"EID6a309314-0175-1000-295e-d3a6d21a5015"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a3093cb-0175-1000-b151-00b5fddb1876","parent":{"ref":"EID6a309314-0175-1000-295e-d3a6d21a5015"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a3093cb-0175-1000-e0b2-c77da22f78f0","parent":{"ref":"EID6a309314-0175-1000-295e-d3a6d21a5015"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0081d5da-3016-400c-bdeb-75ca354922d5"},{"ref":"EIDbb828e90-a61b-4590-8c47-c398f6a11eb4"},{"ref":"EID6689737e-5901-4c17-b222-b16a430f5e36"}]},"parent":{"ref":"EID6a3091f6-0175-1000-d583-a4e3c5db7a11"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-27T13:12:49Z","duration":42,"status":"PASSED"}]},"parent":{"ref":"EID6a308e92-0175-1000-ed9b-2fb7fc449d22"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:12:49Z","duration":470,"status":"PASSED"},{"id":"EID6a3093cc-0175-1000-ac77-e8ed75495c3b","testStepResults":{"TestStepResult":{"id":"EID6a3093cc-0175-1000-d816-66868162bdc7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a309438-0175-1000-5f73-7036ee28c882","parent":{"ref":"EID6a3093cc-0175-1000-d816-66868162bdc7"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a309438-0175-1000-6383-d7d789d9ae19","parent":{"ref":"EID6a3093cc-0175-1000-d816-66868162bdc7"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a309438-0175-1000-0eda-a0d65c761e32","parent":{"ref":"EID6a3093cc-0175-1000-d816-66868162bdc7"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID27a4cd8a-6ebc-4a8d-bf8c-c1a761d5e3a7"},{"ref":"EID17c8fe6e-d7f9-49fc-b18a-ab223ee1b726"},{"ref":"EID9507fb89-c07a-4a0c-b946-b190b07ad064"}]},"parent":{"ref":"EID6a3093cc-0175-1000-ac77-e8ed75495c3b"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:12:49Z","duration":37,"status":"PASSED"}},"parent":{"ref":"EID6a308e92-0175-1000-ed9b-2fb7fc449d22"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:12:49Z","duration":110,"status":"PASSED"},{"id":"EID6a30943c-0175-1000-385a-63604a1fe50e","testStepResults":{"TestStepResult":{"id":"EID6a30943c-0175-1000-05d2-ccc63666fdfd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30956e-0175-1000-25fa-02f130cacd7b","parent":{"ref":"EID6a30943c-0175-1000-05d2-ccc63666fdfd"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"},{"id":"EID6a30956e-0175-1000-7355-2721530c0ff8","parent":{"ref":"EID6a30943c-0175-1000-05d2-ccc63666fdfd"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"},{"id":"EID6a30956e-0175-1000-64cd-34471a07a599","parent":{"ref":"EID6a30943c-0175-1000-05d2-ccc63666fdfd"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6b9d8b30-a99a-43d2-ba20-5eeab782e7cc"},{"ref":"EID7489cdf7-f3a4-4439-91e4-6d72939c3907"},{"ref":"EIDc51e5b5a-1cd5-4ff9-9099-33b9a996445d"}]},"parent":{"ref":"EID6a30943c-0175-1000-385a-63604a1fe50e"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:12:49Z","duration":207,"status":"PASSED"}},"parent":{"ref":"EID6a308e92-0175-1000-ed9b-2fb7fc449d22"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:12:49Z","duration":319,"status":"PASSED"},{"id":"EID6a30957b-0175-1000-c8ea-0fc37935906e","testStepResults":{"TestStepResult":{"id":"EID6a30957b-0175-1000-6f8f-6748b85989f7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a309655-0175-1000-c25a-f5316d5355f0","parent":{"ref":"EID6a30957b-0175-1000-6f8f-6748b85989f7"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"},{"id":"EID6a309655-0175-1000-2395-8c8e5d38bbb1","parent":{"ref":"EID6a30957b-0175-1000-6f8f-6748b85989f7"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"},{"id":"EID6a309655-0175-1000-ba85-f0b65706a4b0","parent":{"ref":"EID6a30957b-0175-1000-6f8f-6748b85989f7"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"},{"id":"EID6a309655-0175-1000-ad32-8821a3a395e2","parent":{"ref":"EID6a30957b-0175-1000-6f8f-6748b85989f7"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"},{"id":"EID6a309655-0175-1000-668c-80cdfbad630f","parent":{"ref":"EID6a30957b-0175-1000-6f8f-6748b85989f7"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7c907673-67e9-4bd1-9598-f774858c209c"},{"ref":"EID187df583-6652-4425-8611-8386b8474cbb"},{"ref":"EID55afcdba-904f-40a6-87ba-a946db2a7a7b"}]},"parent":{"ref":"EID6a30957b-0175-1000-c8ea-0fc37935906e"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:12:50Z","duration":90,"status":"PASSED"}},"parent":{"ref":"EID6a308e92-0175-1000-ed9b-2fb7fc449d22"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:12:50Z","duration":218,"status":"PASSED"},{"id":"EID6a309655-0175-1000-56a9-8c88aac4e656","testStepResults":{"TestStepResult":{"id":"EID6a309655-0175-1000-2049-05c81f938373","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3096dc-0175-1000-b6bc-a202a0da9d84","parent":{"ref":"EID6a309655-0175-1000-2049-05c81f938373"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3096dc-0175-1000-198c-e4a60cf0b75e","parent":{"ref":"EID6a309655-0175-1000-2049-05c81f938373"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3096dc-0175-1000-8805-de1141c309ba","parent":{"ref":"EID6a309655-0175-1000-2049-05c81f938373"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID34db9153-ca81-4531-915a-bb052f89039b"},{"ref":"EID18740e7a-a939-4178-94dd-9b0b660c6d5e"},{"ref":"EID59022b0c-5a27-4995-8713-afc5ef7d43c6"}]},"parent":{"ref":"EID6a309655-0175-1000-56a9-8c88aac4e656"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:12:50Z","duration":84,"status":"PASSED"}},"parent":{"ref":"EID6a308e92-0175-1000-ed9b-2fb7fc449d22"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:12:50Z","duration":135,"status":"PASSED"},{"id":"EID6a3096dc-0175-1000-cd63-7446c3a5bfbb","testStepResults":{"TestStepResult":{"id":"EID6a3096dc-0175-1000-f82e-0f380046119a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30974c-0175-1000-d9b4-18c7400dee7b","parent":{"ref":"EID6a3096dc-0175-1000-f82e-0f380046119a"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"},{"id":"EID6a30974c-0175-1000-d5fb-e103e89321c4","parent":{"ref":"EID6a3096dc-0175-1000-f82e-0f380046119a"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"},{"id":"EID6a30974c-0175-1000-cc60-3125ff6ead60","parent":{"ref":"EID6a3096dc-0175-1000-f82e-0f380046119a"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID64eec10a-8235-4d60-ba33-5d23987bd25f"},{"ref":"EID1edf9718-762b-45d7-a909-b18108fb53fc"},{"ref":"EIDeadf1588-c833-4c50-966c-7cad442b89ed"}]},"parent":{"ref":"EID6a3096dc-0175-1000-cd63-7446c3a5bfbb"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:12:50Z","duration":46,"status":"PASSED"}},"parent":{"ref":"EID6a308e92-0175-1000-ed9b-2fb7fc449d22"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:12:50Z","duration":112,"status":"PASSED"},{"id":"EID6a30974d-0175-1000-4b62-bc4eecc3c1d4","testStepResults":{"TestStepResult":{"id":"EID6a30974d-0175-1000-f19f-bb26e6d81e18","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3097fb-0175-1000-e568-e7c274be048e","parent":{"ref":"EID6a30974d-0175-1000-f19f-bb26e6d81e18"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3097fc-0175-1000-9029-d179c2e7278d","parent":{"ref":"EID6a30974d-0175-1000-f19f-bb26e6d81e18"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3097fc-0175-1000-7330-ac9c68d14758","parent":{"ref":"EID6a30974d-0175-1000-f19f-bb26e6d81e18"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3097fc-0175-1000-58e4-681c1d0a847b","parent":{"ref":"EID6a30974d-0175-1000-f19f-bb26e6d81e18"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID866bd174-74cc-47fd-aa72-e0eeee1a83a0"},{"ref":"EIDd41ccda5-f0e5-4543-bfa4-ea92a4d6fc1d"},{"ref":"EID8d2a3b2b-e7e9-4088-96cd-139a0523b23c"}]},"parent":{"ref":"EID6a30974d-0175-1000-4b62-bc4eecc3c1d4"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:12:50Z","duration":52,"status":"PASSED"}},"parent":{"ref":"EID6a308e92-0175-1000-ed9b-2fb7fc449d22"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:12:50Z","duration":175,"status":"PASSED"},{"id":"EID6a3097fc-0175-1000-a7e8-83b1e51af4e8","testStepResults":{"TestStepResult":{"id":"EID6a3097fc-0175-1000-e5a8-eafe52f1a742","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3098c2-0175-1000-9522-8eb5aa683f3d","parent":{"ref":"EID6a3097fc-0175-1000-e5a8-eafe52f1a742"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a3098c2-0175-1000-9b61-a2e3ffe586fd","parent":{"ref":"EID6a3097fc-0175-1000-e5a8-eafe52f1a742"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a3098c2-0175-1000-b453-e1bac32504d2","parent":{"ref":"EID6a3097fc-0175-1000-e5a8-eafe52f1a742"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a3098c2-0175-1000-e99e-04907b38a9d2","parent":{"ref":"EID6a3097fc-0175-1000-e5a8-eafe52f1a742"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4f56301c-a6ad-4955-90a3-ecaefe795fb4"},{"ref":"EID569b1163-fa63-43e8-aae7-32c5829a0b56"},{"ref":"EID2d1fbb6b-b6d1-46ba-9f94-1193e02da2e7"}]},"parent":{"ref":"EID6a3097fc-0175-1000-a7e8-83b1e51af4e8"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:12:50Z","duration":45,"status":"PASSED"}},"parent":{"ref":"EID6a308e92-0175-1000-ed9b-2fb7fc449d22"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:12:50Z","duration":199,"status":"PASSED"},{"id":"EID6a3098c3-0175-1000-c340-60f7af375511","testStepResults":{"TestStepResult":[{"id":"EID6a3098c3-0175-1000-e2fa-4e1ea3fd008b","parent":{"ref":"EID6a3098c3-0175-1000-c340-60f7af375511"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a3098cc-0175-1000-a820-36cb73aa4805","parent":{"ref":"EID6a3098c3-0175-1000-c340-60f7af375511"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:12:51Z","duration":388,"status":"PASSED"},{"id":"EID6a3098cc-0175-1000-5899-16b26e036765","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3099c6-0175-1000-a398-2600ca021d54","parent":{"ref":"EID6a3098cc-0175-1000-5899-16b26e036765"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a3099c6-0175-1000-b5b3-b44fc011e028","parent":{"ref":"EID6a3098cc-0175-1000-5899-16b26e036765"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a3099c6-0175-1000-886e-3c543a3ed66b","parent":{"ref":"EID6a3098cc-0175-1000-5899-16b26e036765"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a3099c6-0175-1000-a930-9c099c7ad977","parent":{"ref":"EID6a3098cc-0175-1000-5899-16b26e036765"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbbcbddd0-e226-483c-abb0-e6e91fb720c6"},{"ref":"EID498375e1-66ef-4db5-9e67-d41aea07a67b"},{"ref":"EID671b16b6-be77-4aaa-94cf-2c3b81b1c831"}]},"parent":{"ref":"EID6a3098c3-0175-1000-c340-60f7af375511"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:12:51Z","duration":52,"status":"PASSED"},{"id":"EID6a3099c6-0175-1000-8778-a9347931bffa","attachments":{"attachment":{"ref":"EID6927540e-fe19-4311-836d-b345b1286098"}},"parent":{"ref":"EID6a3098c3-0175-1000-c340-60f7af375511"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:12:51Z","duration":1,"status":"PASSED"},{"id":"EID6a3099da-0175-1000-787d-205f45111769","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a309b34-0175-1000-61dc-bcc9f61d9ea3","parent":{"ref":"EID6a3099da-0175-1000-787d-205f45111769"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a309b34-0175-1000-82da-31e1e7191157","parent":{"ref":"EID6a3099da-0175-1000-787d-205f45111769"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a309b34-0175-1000-d090-53390de072ed","parent":{"ref":"EID6a3099da-0175-1000-787d-205f45111769"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a309b34-0175-1000-cd22-06194491d8f7","parent":{"ref":"EID6a3099da-0175-1000-787d-205f45111769"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a309b34-0175-1000-7670-30260a61087e","parent":{"ref":"EID6a3099da-0175-1000-787d-205f45111769"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a309b34-0175-1000-4e06-c8a8033cdea9","parent":{"ref":"EID6a3099da-0175-1000-787d-205f45111769"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a309b34-0175-1000-5662-0e7989e9c489","parent":{"ref":"EID6a3099da-0175-1000-787d-205f45111769"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID030dce61-7fa5-42d9-b69e-301fa6cabb6a"},{"ref":"EIDa7d52b12-5e98-4d57-bbde-015df8edd2a4"},{"ref":"EID2398ef0f-0aa9-4048-a69a-c7a0cdb023b0"}]},"parent":{"ref":"EID6a3098c3-0175-1000-c340-60f7af375511"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:12:51Z","duration":85,"status":"PASSED"}]},"parent":{"ref":"EID6a308e92-0175-1000-ed9b-2fb7fc449d22"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:12:51Z","duration":625,"status":"PASSED"},{"id":"EID6a309b34-0175-1000-7028-baae986d2711","testStepResults":{"TestStepResult":[{"id":"EID6a309b34-0175-1000-2121-686676bd6785","parent":{"ref":"EID6a309b34-0175-1000-7028-baae986d2711"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a309b34-0175-1000-cc64-646ed81bc5e5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a309c5c-0175-1000-9ac2-3ba6a2c9b61f","parent":{"ref":"EID6a309b34-0175-1000-cc64-646ed81bc5e5"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:12:52Z","duration":0,"status":"PASSED"},{"id":"EID6a309c5d-0175-1000-519f-bd32b748b207","parent":{"ref":"EID6a309b34-0175-1000-cc64-646ed81bc5e5"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:12:52Z","duration":0,"status":"PASSED"},{"id":"EID6a309c5d-0175-1000-36e5-4e09e1273d70","parent":{"ref":"EID6a309b34-0175-1000-cc64-646ed81bc5e5"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:12:52Z","duration":0,"status":"PASSED"},{"id":"EID6a309c5d-0175-1000-e267-6d6ce28c46d6","parent":{"ref":"EID6a309b34-0175-1000-cc64-646ed81bc5e5"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:12:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID95385b76-af3d-4ace-a892-53cdb9732a1b"},{"ref":"EID8df107b4-4dd9-4608-82f2-ca7c006547f7"},{"ref":"EIDfd8457b6-9fef-49b9-b24b-977c1b83fd23"}]},"parent":{"ref":"EID6a309b34-0175-1000-7028-baae986d2711"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:12:51Z","duration":143,"status":"PASSED"},{"id":"EID6a309c5d-0175-1000-004d-b6320654a672","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a309c73-0175-1000-5299-37980959b9a4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a309e10-0175-1000-3ab3-f366be766e5c","parent":{"ref":"EID6a309c73-0175-1000-5299-37980959b9a4"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:12:52Z","duration":0,"status":"PASSED"},{"id":"EID6a309e10-0175-1000-9eff-e493623dd0ed","parent":{"ref":"EID6a309c73-0175-1000-5299-37980959b9a4"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:12:52Z","duration":0,"status":"PASSED"},{"id":"EID6a309e10-0175-1000-abaf-32a0abcf49f0","parent":{"ref":"EID6a309c73-0175-1000-5299-37980959b9a4"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:12:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID63be8084-8d8e-4d26-a913-3640eeb34a59"},{"ref":"EIDfd4b8ab1-17e8-425e-a6f2-f4f690b48344"},{"ref":"EID4a4f52d0-0044-4b62-a4b4-2abfb3abbe53"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:12:52Z","duration":147,"status":"PASSED"},{"id":"EID6a309e12-0175-1000-b3d4-8e7b389f81d6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a309ed9-0175-1000-41d5-23b720a9fcce","parent":{"ref":"EID6a309e12-0175-1000-b3d4-8e7b389f81d6"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:12:52Z","duration":0,"status":"PASSED"},{"id":"EID6a309ed9-0175-1000-724c-fca0ad7a6db4","parent":{"ref":"EID6a309e12-0175-1000-b3d4-8e7b389f81d6"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:12:52Z","duration":0,"status":"PASSED"},{"id":"EID6a309ed9-0175-1000-fece-474ab46f916b","parent":{"ref":"EID6a309e12-0175-1000-b3d4-8e7b389f81d6"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:12:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID78c49edb-bc91-4e89-833b-ca6b46596d04"},{"ref":"EID1e39edd7-c37c-412f-bb74-75230a2687ca"},{"ref":"EID4fd873c1-9521-443b-a0e9-d4d8a1d32058"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:12:52Z","duration":155,"status":"PASSED"},{"id":"EID6a309ee6-0175-1000-6f11-0e2be97b9751","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30a020-0175-1000-109d-6def75748ca6","parent":{"ref":"EID6a309ee6-0175-1000-6f11-0e2be97b9751"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"},{"id":"EID6a30a020-0175-1000-c339-15cf70740a77","parent":{"ref":"EID6a309ee6-0175-1000-6f11-0e2be97b9751"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"},{"id":"EID6a30a020-0175-1000-2019-25a8e57707ab","parent":{"ref":"EID6a309ee6-0175-1000-6f11-0e2be97b9751"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID775a7e7f-fc73-42fb-b09b-9aa75dad46d0"},{"ref":"EID7a34c20b-9dfb-4be0-a096-a1e7c42780c1"},{"ref":"EID93258a81-2856-43df-a282-ff950edf6543"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:12:52Z","duration":156,"status":"PASSED"}]},"parent":{"ref":"EID6a309b34-0175-1000-7028-baae986d2711"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:12:52Z","duration":964,"status":"PASSED"},{"id":"EID6a30a021-0175-1000-421b-8f1e032f06c0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30a09c-0175-1000-153f-ac99340f4cb0","parent":{"ref":"EID6a30a021-0175-1000-421b-8f1e032f06c0"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"},{"id":"EID6a30a09c-0175-1000-fd7d-907b6462731b","parent":{"ref":"EID6a30a021-0175-1000-421b-8f1e032f06c0"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"},{"id":"EID6a30a09c-0175-1000-e20c-e8d3d5920c3c","parent":{"ref":"EID6a30a021-0175-1000-421b-8f1e032f06c0"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"},{"id":"EID6a30a09c-0175-1000-b367-1ccca88f0d35","parent":{"ref":"EID6a30a021-0175-1000-421b-8f1e032f06c0"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd3359b85-11f4-45a1-9d1e-e170b17de221"},{"ref":"EIDe1146460-fda6-4ca9-a67a-de54e5545f02"},{"ref":"EID2a9be59b-9b67-4ace-94a5-bc7d9ce9d45b"}]},"parent":{"ref":"EID6a309b34-0175-1000-7028-baae986d2711"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:12:53Z","duration":61,"status":"PASSED"}]},"parent":{"ref":"EID6a308e92-0175-1000-ed9b-2fb7fc449d22"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:12:51Z","duration":1384,"status":"PASSED"},{"id":"EID6a30a09c-0175-1000-beb3-0f19801e7ae6","testStepResults":{"TestStepResult":{"id":"EID6a30a09d-0175-1000-cc8c-2f984158d4a9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30a18c-0175-1000-5fb4-f205c94400aa","parent":{"ref":"EID6a30a09d-0175-1000-cc8c-2f984158d4a9"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"},{"id":"EID6a30a18c-0175-1000-baa8-b5fed53cd6f4","parent":{"ref":"EID6a30a09d-0175-1000-cc8c-2f984158d4a9"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"},{"id":"EID6a30a18c-0175-1000-5d9f-ac9b039b8369","parent":{"ref":"EID6a30a09d-0175-1000-cc8c-2f984158d4a9"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"},{"id":"EID6a30a18c-0175-1000-529c-6265f0bfa447","parent":{"ref":"EID6a30a09d-0175-1000-cc8c-2f984158d4a9"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1350e328-ce19-42e2-b367-9ddc3506889e"},{"ref":"EID38c9e05a-ec2b-4c54-92ec-7d0f8b5f8949"},{"ref":"EID5ac7535c-eb93-43e3-b1c1-d75248114e14"}]},"parent":{"ref":"EID6a30a09c-0175-1000-beb3-0f19801e7ae6"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:12:53Z","duration":50,"status":"PASSED"}},"parent":{"ref":"EID6a308e92-0175-1000-ed9b-2fb7fc449d22"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:12:53Z","duration":240,"status":"PASSED"}]},"parent":{"ref":"EIDb741ff5d-1d05-4968-bfde-9d5769544903"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:12:48Z","duration":4858,"status":"PASSED"},{"id":"EID6a30a18c-0175-1000-ee38-d8889ae599dc","testCaseResults":{"TestCaseResult":[{"id":"EID6a30a18c-0175-1000-b7fd-9658a84dbd9d","testStepResults":{"TestStepResult":[{"id":"EID6a30a195-0175-1000-4663-64ad94e479c5","parent":{"ref":"EID6a30a18c-0175-1000-b7fd-9658a84dbd9d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:12:53Z","duration":376,"status":"PASSED"},{"id":"EID6a30a195-0175-1000-b5d6-86aad86c5010","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30a240-0175-1000-409c-cfdf1c2a1566","parent":{"ref":"EID6a30a195-0175-1000-b5d6-86aad86c5010"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"},{"id":"EID6a30a240-0175-1000-c5cd-fde1bce9d168","parent":{"ref":"EID6a30a195-0175-1000-b5d6-86aad86c5010"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"},{"id":"EID6a30a240-0175-1000-19cc-cbe730a61c37","parent":{"ref":"EID6a30a195-0175-1000-b5d6-86aad86c5010"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID30dcb19e-186a-4f15-9663-446cc297da58"},{"ref":"EIDbb53a9bc-ce53-47c8-b1ae-06e5c561c06c"},{"ref":"EID62fd334d-b1bd-429d-bbab-359a0624e350"}]},"parent":{"ref":"EID6a30a18c-0175-1000-b7fd-9658a84dbd9d"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-27T13:12:53Z","duration":85,"status":"PASSED"},{"id":"EID6a30a249-0175-1000-8f2f-60d1baa351f5","attachments":{"attachment":{"ref":"EIDf8cc8442-787b-4634-9464-b9a811dd42d0"}},"parent":{"ref":"EID6a30a18c-0175-1000-b7fd-9658a84dbd9d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-27T13:12:53Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6a30a18c-0175-1000-ee38-d8889ae599dc"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:12:53Z","duration":201,"status":"PASSED"},{"id":"EID6a30a255-0175-1000-e93d-8ccede46d2d2","testStepResults":{"TestStepResult":[{"id":"EID6a30a255-0175-1000-585b-d9869b6c979e","parent":{"ref":"EID6a30a255-0175-1000-e93d-8ccede46d2d2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:12:53Z","duration":376,"status":"PASSED"},{"id":"EID6a30a255-0175-1000-f933-485f17baf632","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30a313-0175-1000-e968-cc679df65639","parent":{"ref":"EID6a30a255-0175-1000-f933-485f17baf632"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"},{"id":"EID6a30a313-0175-1000-27fd-a9e569921e1c","parent":{"ref":"EID6a30a255-0175-1000-f933-485f17baf632"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"},{"id":"EID6a30a313-0175-1000-444d-fb97ad6f191c","parent":{"ref":"EID6a30a255-0175-1000-f933-485f17baf632"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"},{"id":"EID6a30a313-0175-1000-d5c6-3e33bbdc52dc","parent":{"ref":"EID6a30a255-0175-1000-f933-485f17baf632"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDda793af2-b7fc-4e27-b8bc-9daae90a946c"},{"ref":"EIDb621dbd1-3d79-428c-aed3-33a0ada30e2a"},{"ref":"EID4eed7988-ada3-4d79-b17d-4657e921eeb0"}]},"parent":{"ref":"EID6a30a255-0175-1000-e93d-8ccede46d2d2"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-27T13:12:53Z","duration":117,"status":"PASSED"}]},"parent":{"ref":"EID6a30a18c-0175-1000-ee38-d8889ae599dc"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:12:53Z","duration":190,"status":"PASSED"},{"id":"EID6a30a31d-0175-1000-9047-fc9ebb50b1f3","testStepResults":{"TestStepResult":[{"id":"EID6a30a31d-0175-1000-b60b-1beecd40ca34","parent":{"ref":"EID6a30a31d-0175-1000-9047-fc9ebb50b1f3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:12:53Z","duration":376,"status":"PASSED"},{"id":"EID6a30a31d-0175-1000-b939-e4488a9540d3","parent":{"ref":"EID6a30a31d-0175-1000-9047-fc9ebb50b1f3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"},{"id":"EID6a30a31d-0175-1000-c4e5-4c06b58eff91","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30a402-0175-1000-cb23-4ccd8bac298f","parent":{"ref":"EID6a30a31d-0175-1000-c4e5-4c06b58eff91"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-27T13:12:54Z","duration":0,"status":"PASSED"},{"id":"EID6a30a402-0175-1000-042e-b680be4c9b80","parent":{"ref":"EID6a30a31d-0175-1000-c4e5-4c06b58eff91"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-27T13:12:54Z","duration":0,"status":"PASSED"},{"id":"EID6a30a402-0175-1000-9b6e-1a3195388a4a","parent":{"ref":"EID6a30a31d-0175-1000-c4e5-4c06b58eff91"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-27T13:12:54Z","duration":0,"status":"PASSED"},{"id":"EID6a30a402-0175-1000-eb93-977c20f5de5f","parent":{"ref":"EID6a30a31d-0175-1000-c4e5-4c06b58eff91"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-27T13:12:54Z","duration":0,"status":"PASSED"},{"id":"EID6a30a402-0175-1000-2029-a0ee0428074d","parent":{"ref":"EID6a30a31d-0175-1000-c4e5-4c06b58eff91"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-27T13:12:54Z","duration":0,"status":"PASSED"},{"id":"EID6a30a402-0175-1000-4cd7-c07193cd8257","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}}},"parent":{"ref":"EID6a30a31d-0175-1000-c4e5-4c06b58eff91"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-27T13:12:54Z","duration":0,"status":"FAILED"},{"id":"EID6a30a402-0175-1000-0e7f-12cfe74a001a","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6a30a31d-0175-1000-c4e5-4c06b58eff91"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-27T13:12:54Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDf6d22c3a-614c-4c3c-9518-eb666cca11be"},{"ref":"EIDaac0d6fc-e5cf-44a1-a901-95a80a12d54b"},{"ref":"EIDaf9af902-7abd-40f5-8812-4b303a1e952e"}]},"parent":{"ref":"EID6a30a31d-0175-1000-9047-fc9ebb50b1f3"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-27T13:12:53Z","duration":82,"status":"FAILED"}]},"parent":{"ref":"EID6a30a18c-0175-1000-ee38-d8889ae599dc"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:12:53Z","duration":229,"status":"FAILED"},{"id":"EID6a30a403-0175-1000-0358-29bd0a744889","testStepResults":{"TestStepResult":[{"id":"EID6a30a403-0175-1000-4805-561f6c7c81c1","parent":{"ref":"EID6a30a403-0175-1000-0358-29bd0a744889"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:12:54Z","duration":376,"status":"PASSED"},{"id":"EID6a30a403-0175-1000-0f55-985d2e4fa587","parent":{"ref":"EID6a30a403-0175-1000-0358-29bd0a744889"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-27T13:12:54Z","duration":9,"status":"PASSED"},{"id":"EID6a30a40c-0175-1000-f058-ab0181058a71","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30a4cb-0175-1000-b31d-5bf8074a4105","parent":{"ref":"EID6a30a40c-0175-1000-f058-ab0181058a71"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-27T13:12:54Z","duration":0,"status":"PASSED"},{"id":"EID6a30a4cb-0175-1000-0bbc-c32101047251","parent":{"ref":"EID6a30a40c-0175-1000-f058-ab0181058a71"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-27T13:12:54Z","duration":0,"status":"PASSED"},{"id":"EID6a30a4cb-0175-1000-05f1-69213ef03ccf","parent":{"ref":"EID6a30a40c-0175-1000-f058-ab0181058a71"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-27T13:12:54Z","duration":0,"status":"PASSED"},{"id":"EID6a30a4cb-0175-1000-7ad6-2f8b84508d90","parent":{"ref":"EID6a30a40c-0175-1000-f058-ab0181058a71"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-27T13:12:54Z","duration":0,"status":"PASSED"},{"id":"EID6a30a4cb-0175-1000-f6e1-53dbb19476fe","parent":{"ref":"EID6a30a40c-0175-1000-f058-ab0181058a71"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-27T13:12:54Z","duration":0,"status":"PASSED"},{"id":"EID6a30a4cb-0175-1000-60f2-48dabed75bba","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6a30a40c-0175-1000-f058-ab0181058a71"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-27T13:12:54Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID7c328142-ff87-424b-ace4-4028f9360888"},{"ref":"EID5e975c10-74cb-4cdf-a20d-34c070a61f35"},{"ref":"EID5077c3e2-7e42-45db-a658-7ab89932614a"}]},"parent":{"ref":"EID6a30a403-0175-1000-0358-29bd0a744889"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-27T13:12:54Z","duration":82,"status":"FAILED"}]},"parent":{"ref":"EID6a30a18c-0175-1000-ee38-d8889ae599dc"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:12:54Z","duration":210,"status":"FAILED"},{"id":"EID6a30a4d5-0175-1000-6cd9-ee61724b3b66","testStepResults":{"TestStepResult":[{"id":"EID6a30a4d5-0175-1000-4022-f59708ddd84d","parent":{"ref":"EID6a30a4d5-0175-1000-6cd9-ee61724b3b66"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:12:54Z","duration":376,"status":"PASSED"},{"id":"EID6a30a4d5-0175-1000-9949-901f825a1852","messages":{"message":[{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}},{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}]},"attachments":{"attachment":[{"ref":"EIDc010f172-c83f-45e5-932c-576fc2f68c5e"},{"ref":"EIDa94b9e46-b936-46b2-a407-bd4d546a3ebd"},{"ref":"EIDb863cba6-a9f4-4851-8dca-631a1c83b7f2"},{"ref":"EID5bf0dc05-43e2-456b-8f06-052b8b812e45"},{"ref":"EIDc1807699-2226-4970-8101-5edb42c42f9b"},{"ref":"EID21c92dee-aa65-4927-be60-6c2cf7f3fec5"},{"ref":"EID7d3a58e0-6168-4bdc-85e3-fbf0aa88ba92"},{"ref":"EID9add09b4-7b94-4b09-b738-217df6d44a1f"},{"ref":"EID9a758d3c-5f21-48d4-b79d-1dc65940777f"},{"ref":"EID5273199d-dd42-4fb1-bdcf-b58d6da50be9"},{"ref":"EID9627e1be-e89f-45ed-8c02-f8cabec31cca"},{"ref":"EID9add7589-42b3-46b7-9cbb-37a0319fd8db"},{"ref":"EIDeed6a460-296c-4a46-bd6c-28d235b04cf9"},{"ref":"EID7fd661a9-d592-4418-a4b1-93805227cc53"},{"ref":"EIDe596b14c-4a2e-4b1e-8650-21b54a44787b"}]},"parent":{"ref":"EID6a30a4d5-0175-1000-6cd9-ee61724b3b66"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-27T13:12:54Z","duration":600,"status":"SKIPPED"}]},"parent":{"ref":"EID6a30a18c-0175-1000-ee38-d8889ae599dc"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:12:54Z","duration":849,"status":"SKIPPED"},{"id":"EID6a30a826-0175-1000-bae5-f2d84dadc08c","testStepResults":{"TestStepResult":[{"id":"EID6a30a826-0175-1000-7c13-4904ba83ca73","parent":{"ref":"EID6a30a826-0175-1000-bae5-f2d84dadc08c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:12:55Z","duration":376,"status":"PASSED"},{"id":"EID6a30a826-0175-1000-3c65-832ebe70e292","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30a8c6-0175-1000-526b-84fd6f927414","parent":{"ref":"EID6a30a826-0175-1000-3c65-832ebe70e292"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30a8c6-0175-1000-30da-a7c4f889c9a9","parent":{"ref":"EID6a30a826-0175-1000-3c65-832ebe70e292"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30a8c6-0175-1000-4adc-e3b752f19392","parent":{"ref":"EID6a30a826-0175-1000-3c65-832ebe70e292"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30a8c6-0175-1000-c577-47c423da5bdc","parent":{"ref":"EID6a30a826-0175-1000-3c65-832ebe70e292"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID01b2bf55-c137-4d56-a855-eac314348754"},{"ref":"EID0d4ab58f-b6e0-495c-bb8f-028b5101dc0e"},{"ref":"EID93f3ec06-f6c0-41e5-8270-30828eba1d6a"}]},"parent":{"ref":"EID6a30a826-0175-1000-bae5-f2d84dadc08c"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-27T13:12:55Z","duration":88,"status":"PASSED"}]},"parent":{"ref":"EID6a30a18c-0175-1000-ee38-d8889ae599dc"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:12:55Z","duration":160,"status":"PASSED"},{"id":"EID6a30a8c7-0175-1000-775c-48aec74c6d0b","testStepResults":{"TestStepResult":[{"id":"EID6a30a8c7-0175-1000-ccc0-e9f50b5e3cca","parent":{"ref":"EID6a30a8c7-0175-1000-775c-48aec74c6d0b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:12:55Z","duration":376,"status":"PASSED"},{"id":"EID6a30a8c7-0175-1000-ef3f-67671f3cdb55","parent":{"ref":"EID6a30a8c7-0175-1000-775c-48aec74c6d0b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30a8c7-0175-1000-b7aa-e4a8928809bc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30a985-0175-1000-4659-4ff6fc61bc32","parent":{"ref":"EID6a30a8c7-0175-1000-b7aa-e4a8928809bc"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30a985-0175-1000-0f49-27dcb92dc2fa","parent":{"ref":"EID6a30a8c7-0175-1000-b7aa-e4a8928809bc"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30a985-0175-1000-90b4-bfc7b6f36bc1","parent":{"ref":"EID6a30a8c7-0175-1000-b7aa-e4a8928809bc"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30a985-0175-1000-5ce3-0597bfc1f65a","parent":{"ref":"EID6a30a8c7-0175-1000-b7aa-e4a8928809bc"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd44cae68-51ad-4f4d-ba78-d1e6835d1022"},{"ref":"EIDb0923ec4-ec43-4612-9bdc-004ec29849c6"},{"ref":"EIDb3d1c832-1c41-46ee-9c74-bf7283d8332f"}]},"parent":{"ref":"EID6a30a8c7-0175-1000-775c-48aec74c6d0b"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-27T13:12:55Z","duration":79,"status":"PASSED"},{"id":"EID6a30a985-0175-1000-c39c-3a9c7c600336","attachments":{"attachment":{"ref":"EID085a7558-33da-4fb2-925b-7e5f3ee88f3d"}},"parent":{"ref":"EID6a30a8c7-0175-1000-775c-48aec74c6d0b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-27T13:12:55Z","duration":1,"status":"PASSED"},{"id":"EID6a30a991-0175-1000-78bf-9c97e35c7f19","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30a99f-0175-1000-511c-2fcfc5e04ecd","parent":{"ref":"EID6a30a991-0175-1000-78bf-9c97e35c7f19"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30a99f-0175-1000-317b-c92c9deeeeed","parent":{"ref":"EID6a30a991-0175-1000-78bf-9c97e35c7f19"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30a99f-0175-1000-cb2b-afe53191aefb","parent":{"ref":"EID6a30a991-0175-1000-78bf-9c97e35c7f19"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDea29e23f-efa1-407a-b392-86e0828994e8"},{"ref":"EID18591d2a-7067-4725-a7f1-6982c203d40b"}]},"parent":{"ref":"EID6a30a8c7-0175-1000-775c-48aec74c6d0b"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-27T13:12:55Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6a30a18c-0175-1000-ee38-d8889ae599dc"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:12:55Z","duration":216,"status":"PASSED"}]},"parent":{"ref":"EIDb741ff5d-1d05-4968-bfde-9d5769544903"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:12:53Z","duration":2067,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"Message","id":"EID6d7510e9-cdf8-41ad-9700-c1a7b630e962","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID6d7510e9-cdf8-41ad-9700-c1a7b630e962"}},{"type":"ServiceResponse","id":"EIDf674e158-7780-4a1b-8557-b3386c75822a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDf674e158-7780-4a1b-8557-b3386c75822a"}},{"type":"GetParameter","id":"EID3e4b5fa1-1771-4873-8cf1-fac03a879651","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID97133513-fbd0-4b1f-91d5-9363b0805717","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID97133513-fbd0-4b1f-91d5-9363b0805717"}},{"type":"GetParameter","id":"EID759e6b3b-f05e-42d9-b294-14a5adfee8ec","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID7910d745-2586-4742-970c-6a97bae4c1b5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID7910d745-2586-4742-970c-6a97bae4c1b5"}},{"type":"ServiceResponse","id":"EID18740e7a-a939-4178-94dd-9b0b660c6d5e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID18740e7a-a939-4178-94dd-9b0b660c6d5e"}},{"type":"GetParameter","id":"EIDfd8457b6-9fef-49b9-b24b-977c1b83fd23","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EID242b6ec0-47d3-473d-8dfe-5d00790100f7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EID5e975c10-74cb-4cdf-a20d-34c070a61f35","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID5e975c10-74cb-4cdf-a20d-34c070a61f35"}},{"type":"ServiceResponse","id":"EID800b88f1-45a9-486f-ba54-aef491563ede","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID800b88f1-45a9-486f-ba54-aef491563ede"}},{"type":"ServiceEndpoint","id":"EID57012ed0-0ec6-4cf8-b478-72ca339e22c4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID9627e1be-e89f-45ed-8c02-f8cabec31cca","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID9627e1be-e89f-45ed-8c02-f8cabec31cca"}},{"type":"ServiceEndpoint","id":"EIDa87e40d9-dbbc-464f-85f6-2708acbdd408","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDb71a86b9-5361-45b7-8bd9-2693a2217a85","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID59022b0c-5a27-4995-8713-afc5ef7d43c6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EIDde227233-2f9b-4a29-9a64-1a0d88c55bd3","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDde227233-2f9b-4a29-9a64-1a0d88c55bd3"}},{"type":"GetParameter","id":"EID97cdb413-5a34-4dae-b70a-a5b8862e52b4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID6927540e-fe19-4311-836d-b345b1286098","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID6927540e-fe19-4311-836d-b345b1286098"}},{"type":"GetParameter","id":"EID4fd873c1-9521-443b-a0e9-d4d8a1d32058","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EIDea29e23f-efa1-407a-b392-86e0828994e8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceResponse","id":"EIDd37b800e-249a-4421-a5b4-980f619b1462","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDd37b800e-249a-4421-a5b4-980f619b1462"}},{"type":"Message","id":"EID231ad2e6-68e5-442e-8385-4e49a7364bf9","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID231ad2e6-68e5-442e-8385-4e49a7364bf9"}},{"type":"Message","id":"EID3ef0e84a-0dad-4023-9aec-440dbf4c5774","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID3ef0e84a-0dad-4023-9aec-440dbf4c5774"}},{"type":"ServiceResponse","id":"EID9ba1015f-84e4-4170-b361-9852f856d70e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID9ba1015f-84e4-4170-b361-9852f856d70e"}},{"type":"ServiceEndpoint","id":"EID30dcb19e-186a-4f15-9663-446cc297da58","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDaac0d6fc-e5cf-44a1-a901-95a80a12d54b","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDaac0d6fc-e5cf-44a1-a901-95a80a12d54b"}},{"type":"Message","id":"EID21c92dee-aa65-4927-be60-6c2cf7f3fec5","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID21c92dee-aa65-4927-be60-6c2cf7f3fec5"}},{"type":"ServiceEndpoint","id":"EID2e3b1ae2-6db9-4c3e-8b13-88334b33e2b2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDe1146460-fda6-4ca9-a67a-de54e5545f02","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDe1146460-fda6-4ca9-a67a-de54e5545f02"}},{"type":"ServiceEndpoint","id":"EID78c49edb-bc91-4e89-833b-ca6b46596d04","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EID5962b322-19b1-4f61-acb5-3665a118a184","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID5962b322-19b1-4f61-acb5-3665a118a184"}},{"type":"GetParameter","id":"EID1a6627ee-a038-40b3-820c-b3e38323c17b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID9add7589-42b3-46b7-9cbb-37a0319fd8db","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID9add7589-42b3-46b7-9cbb-37a0319fd8db"}},{"type":"ServiceResponse","id":"EIDbb828e90-a61b-4590-8c47-c398f6a11eb4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDbb828e90-a61b-4590-8c47-c398f6a11eb4"}},{"type":"Message","id":"EID5273199d-dd42-4fb1-bdcf-b58d6da50be9","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID5273199d-dd42-4fb1-bdcf-b58d6da50be9"}},{"type":"GetParameter","id":"EIDeadf1588-c833-4c50-966c-7cad442b89ed","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDd3359b85-11f4-45a1-9d1e-e170b17de221","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EIDf8cc8442-787b-4634-9464-b9a811dd42d0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDf8cc8442-787b-4634-9464-b9a811dd42d0"}},{"type":"Message","id":"EIDb8b71c2c-1fc0-4493-badc-2447a0cb7fe6","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDb8b71c2c-1fc0-4493-badc-2447a0cb7fe6"}},{"type":"ServiceEndpoint","id":"EIDc7bdd86f-51fb-48c8-9c4f-6ab234a797f9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID671b16b6-be77-4aaa-94cf-2c3b81b1c831","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID992100d7-5bdd-49f6-90d2-5480598e0423","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID985e3911-e482-4fa8-bfa8-a3771baafadc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID985e3911-e482-4fa8-bfa8-a3771baafadc"}},{"type":"ServiceEndpoint","id":"EID7c907673-67e9-4bd1-9598-f774858c209c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EID10a2fe8f-6163-4c6d-9917-695d4b5b1f3c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID1274669f-1b88-4d0f-bdb9-0204b1940656","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID1274669f-1b88-4d0f-bdb9-0204b1940656"}},{"type":"GetParameter","id":"EID77986757-bf0f-4e2e-a6b7-fab951bba939","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID0081d5da-3016-400c-bdeb-75ca354922d5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"GetParameter","id":"EID18591d2a-7067-4725-a7f1-6982c203d40b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceEndpoint","id":"EIDf6d22c3a-614c-4c3c-9518-eb666cca11be","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID7997b150-680c-45b4-a227-057d41d93496","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDbcf644e9-15db-4493-bff9-01fa9971aa32","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDbcf644e9-15db-4493-bff9-01fa9971aa32"}},{"type":"ServiceResponse","id":"EID17c8fe6e-d7f9-49fc-b18a-ab223ee1b726","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID17c8fe6e-d7f9-49fc-b18a-ab223ee1b726"}},{"type":"ServiceEndpoint","id":"EID95385b76-af3d-4ace-a892-53cdb9732a1b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EID4a9d5329-e8c7-4512-8318-a68db1879a06","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID4a9d5329-e8c7-4512-8318-a68db1879a06"}},{"type":"Message","id":"EIDb863cba6-a9f4-4851-8dca-631a1c83b7f2","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDb863cba6-a9f4-4851-8dca-631a1c83b7f2"}},{"type":"ServiceResponse","id":"EID3edd2cb0-dc31-4f69-8587-d3f02c2fd757","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID3edd2cb0-dc31-4f69-8587-d3f02c2fd757"}},{"type":"ServiceEndpoint","id":"EID64eec10a-8235-4d60-ba33-5d23987bd25f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID9add09b4-7b94-4b09-b738-217df6d44a1f","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID9add09b4-7b94-4b09-b738-217df6d44a1f"}},{"type":"GetParameter","id":"EID93258a81-2856-43df-a282-ff950edf6543","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EID7a34c20b-9dfb-4be0-a096-a1e7c42780c1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID7a34c20b-9dfb-4be0-a096-a1e7c42780c1"}},{"type":"ServiceResponse","id":"EIDa7d52b12-5e98-4d57-bbde-015df8edd2a4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDa7d52b12-5e98-4d57-bbde-015df8edd2a4"}},{"type":"ServiceResponse","id":"EID1edf9718-762b-45d7-a909-b18108fb53fc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID1edf9718-762b-45d7-a909-b18108fb53fc"}},{"type":"ServiceResponse","id":"EIDa956289e-9113-4125-9031-23ae8ba4acaf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDa956289e-9113-4125-9031-23ae8ba4acaf"}},{"type":"ServiceResponse","id":"EID84c13a68-cf07-46e4-a9c3-29dd852031a6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID84c13a68-cf07-46e4-a9c3-29dd852031a6"}},{"type":"GetParameter","id":"EID2282fcc3-859e-41ad-a86f-12d785174b1d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDc51e5b5a-1cd5-4ff9-9099-33b9a996445d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EID0d4ab58f-b6e0-495c-bb8f-028b5101dc0e","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID0d4ab58f-b6e0-495c-bb8f-028b5101dc0e"}},{"type":"Message","id":"EID861ab317-67de-4019-999b-e3c19dbafb4b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID861ab317-67de-4019-999b-e3c19dbafb4b"}},{"type":"ServiceResponse","id":"EIDcd94d509-7bff-460f-85f1-4caf30396fd4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDcd94d509-7bff-460f-85f1-4caf30396fd4"}},{"type":"Message","id":"EID91d1f78a-3e56-470c-a335-f916ede9b441","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID91d1f78a-3e56-470c-a335-f916ede9b441"}},{"type":"Message","id":"EIDeed6a460-296c-4a46-bd6c-28d235b04cf9","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDeed6a460-296c-4a46-bd6c-28d235b04cf9"}},{"type":"GetParameter","id":"EIDe82300e3-1fa4-481a-af4b-815825686e5c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDae6738eb-11aa-4ba0-9065-67ad7cfc9c68","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDba21f72b-21a5-43ff-b4c6-815d8d461058","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID93c69897-85a5-4c66-a760-7ece5df797e6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID4a4f52d0-0044-4b62-a4b4-2abfb3abbe53","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EID785c9e5e-5082-41ae-9c52-709ed7b46b97","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID785c9e5e-5082-41ae-9c52-709ed7b46b97"}},{"type":"ServiceEndpoint","id":"EID866bd174-74cc-47fd-aa72-e0eeee1a83a0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EID0c0e86de-008e-4a05-a029-a12a3e63eda6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID422153d3-f635-443a-b3e4-4739e6553aeb","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID422153d3-f635-443a-b3e4-4739e6553aeb"}},{"type":"ServiceEndpoint","id":"EIDd44cae68-51ad-4f4d-ba78-d1e6835d1022","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID52acfa7d-4688-4812-8d8a-2fcbc1670c9a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID52acfa7d-4688-4812-8d8a-2fcbc1670c9a"}},{"type":"GetParameter","id":"EID2398ef0f-0aa9-4048-a69a-c7a0cdb023b0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID085a7558-33da-4fb2-925b-7e5f3ee88f3d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID085a7558-33da-4fb2-925b-7e5f3ee88f3d"}},{"type":"ServiceResponse","id":"EID54a1cd28-f252-4c0f-b625-dadaad0e6d3b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID54a1cd28-f252-4c0f-b625-dadaad0e6d3b"}},{"type":"GetParameter","id":"EID45c52474-e4ef-451f-832f-9340752402ea","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDbd1715a8-577e-49fc-8a91-08c8f119630e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID8df107b4-4dd9-4608-82f2-ca7c006547f7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID8df107b4-4dd9-4608-82f2-ca7c006547f7"}},{"type":"GetParameter","id":"EID55afcdba-904f-40a6-87ba-a946db2a7a7b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EID4f56301c-a6ad-4955-90a3-ecaefe795fb4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"GetParameter","id":"EIDb3d1c832-1c41-46ee-9c74-bf7283d8332f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID33768640-9251-4ab8-bafd-a5b0613712e7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID775a7e7f-fc73-42fb-b09b-9aa75dad46d0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EIDfd4b8ab1-17e8-425e-a6f2-f4f690b48344","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDfd4b8ab1-17e8-425e-a6f2-f4f690b48344"}},{"type":"GetParameter","id":"EID08db0f5f-1131-4d50-ab97-34459e3b683e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvZG93bmxvYWRzL3JzYV93YXRlcnp1aXZlcmluZ3NpbnN0YWxsYXRpZXNfZXUyMDE1X2dwa2cuemlw"},{"type":"ServiceEndpoint","id":"EID8c2709c7-f42a-4803-8d27-c5c35d6eba7f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EID4d32d184-b9d4-4073-bd72-72e65631014e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID0fe957b5-8543-4500-bfb0-aa8ebd57c08d","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID0fe957b5-8543-4500-bfb0-aa8ebd57c08d"}},{"type":"Message","id":"EIDa07b5caa-21a1-4d82-b9e5-6b14c2d959dc","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDa07b5caa-21a1-4d82-b9e5-6b14c2d959dc"}},{"type":"GetParameter","id":"EIDdfc8d1a7-cef4-463f-a8e5-938e8eb4bb96","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID435aadd3-06ac-4bed-b45a-f526d179f9c4","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID435aadd3-06ac-4bed-b45a-f526d179f9c4"}},{"type":"ServiceEndpoint","id":"EID030dce61-7fa5-42d9-b69e-301fa6cabb6a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EID6fa51c69-5318-4777-8941-63299d86e192","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID6fa51c69-5318-4777-8941-63299d86e192"}},{"type":"Message","id":"EID848580fc-02e8-4dbb-88ea-c696dfa74f74","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID848580fc-02e8-4dbb-88ea-c696dfa74f74"}},{"type":"ServiceResponse","id":"EID38c9e05a-ec2b-4c54-92ec-7d0f8b5f8949","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID38c9e05a-ec2b-4c54-92ec-7d0f8b5f8949"}},{"type":"ServiceEndpoint","id":"EID73f6d449-fcb0-4ace-ac19-7ca1b58f6e17","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID6689737e-5901-4c17-b222-b16a430f5e36","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDb78d3469-5788-494f-91c0-031cb05da145","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDa69dc260-18cf-4e94-ad09-72d196eab2c1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDaf9af902-7abd-40f5-8812-4b303a1e952e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID74874507-a5de-4a92-a4f7-2bd0a024b7e2","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID74874507-a5de-4a92-a4f7-2bd0a024b7e2"}},{"type":"ServiceEndpoint","id":"EID8e1ace6e-5cd2-46f9-89cf-f1333898fc77","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID51e170b3-28a6-4d30-8640-902e3ffeb915","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EID5e263430-276e-45be-94db-c664ea800c97","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID5e263430-276e-45be-94db-c664ea800c97"}},{"type":"Message","id":"EIDc1807699-2226-4970-8101-5edb42c42f9b","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDc1807699-2226-4970-8101-5edb42c42f9b"}},{"type":"Message","id":"EID3b7c32b8-2248-4af6-b582-bbd0ddfbe70c","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID3b7c32b8-2248-4af6-b582-bbd0ddfbe70c"}},{"type":"ServiceResponse","id":"EIDbb53a9bc-ce53-47c8-b1ae-06e5c561c06c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDbb53a9bc-ce53-47c8-b1ae-06e5c561c06c"}},{"type":"ServiceEndpoint","id":"EID34db9153-ca81-4531-915a-bb052f89039b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID5bf0dc05-43e2-456b-8f06-052b8b812e45","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID5bf0dc05-43e2-456b-8f06-052b8b812e45"}},{"type":"ServiceResponse","id":"EID150273dd-0849-4765-a5c4-7fa9cf9ca7f6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID150273dd-0849-4765-a5c4-7fa9cf9ca7f6"}},{"type":"GetParameter","id":"EID93f3ec06-f6c0-41e5-8270-30828eba1d6a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDc8582d48-54a7-4929-98a6-7d1c7643157c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDc8582d48-54a7-4929-98a6-7d1c7643157c"}},{"type":"Message","id":"EID093b64a3-180c-4f89-b5af-075ee9cce5af","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID093b64a3-180c-4f89-b5af-075ee9cce5af"}},{"type":"ServiceResponse","id":"EID187df583-6652-4425-8611-8386b8474cbb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID187df583-6652-4425-8611-8386b8474cbb"}},{"type":"GetParameter","id":"EID5ac7535c-eb93-43e3-b1c1-d75248114e14","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDedd542a2-05e9-423a-97ab-1e64e9b1f644","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDa94b9e46-b936-46b2-a407-bd4d546a3ebd","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDa94b9e46-b936-46b2-a407-bd4d546a3ebd"}},{"type":"GetParameter","id":"EID8d2a3b2b-e7e9-4088-96cd-139a0523b23c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EIDf584525a-2da1-4e12-a1c9-0cb02d44d610","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDf584525a-2da1-4e12-a1c9-0cb02d44d610"}},{"type":"ServiceEndpoint","id":"EIDf78b60cd-ae1f-4edd-9931-95a4963302ca","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDdae62241-171f-45b1-b383-7613c0c1b40a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID9a758d3c-5f21-48d4-b79d-1dc65940777f","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID9a758d3c-5f21-48d4-b79d-1dc65940777f"}},{"type":"Message","id":"EID98185c34-2a6a-459d-8c9c-1ec420a775dc","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID98185c34-2a6a-459d-8c9c-1ec420a775dc"}},{"type":"ServiceResponse","id":"EIDc9fd1bac-accb-4008-9b37-408dfbcfa771","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDc9fd1bac-accb-4008-9b37-408dfbcfa771"}},{"type":"ServiceResponse","id":"EID498375e1-66ef-4db5-9e67-d41aea07a67b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID498375e1-66ef-4db5-9e67-d41aea07a67b"}},{"type":"ServiceResponse","id":"EID13a00097-3e84-4456-9203-2c50054776f4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID13a00097-3e84-4456-9203-2c50054776f4"}},{"type":"ServiceEndpoint","id":"EID01b2bf55-c137-4d56-a855-eac314348754","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDf5487638-2c0a-4327-9b6c-4de8b6ed16fc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID685f2528-88b1-404e-93f9-c9b9ef40cc9d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID2d1fbb6b-b6d1-46ba-9f94-1193e02da2e7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EID935ad434-fae5-45f9-85e5-7edde1758017","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"GetParameter","id":"EIDf29e39cc-c5a6-40af-8654-0b0b32983fcc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"GetParameter","id":"EID7968ef34-7afd-4490-9ca3-0d7fd8098415","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID63be8084-8d8e-4d26-a913-3640eeb34a59","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EID37df0e74-4e36-4aa6-9b26-dba4925a9956","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID37df0e74-4e36-4aa6-9b26-dba4925a9956"}},{"type":"Message","id":"EIDb9c0c25b-a724-4f0a-aa6e-fbd408fe9ab8","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDb9c0c25b-a724-4f0a-aa6e-fbd408fe9ab8"}},{"type":"GetParameter","id":"EID2a9be59b-9b67-4ace-94a5-bc7d9ce9d45b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID7a9b88fb-4fd6-485c-bd76-3b4af66c86ea","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID7a9b88fb-4fd6-485c-bd76-3b4af66c86ea"}},{"type":"GetParameter","id":"EID9507fb89-c07a-4a0c-b946-b190b07ad064","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EID1e39edd7-c37c-412f-bb74-75230a2687ca","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID1e39edd7-c37c-412f-bb74-75230a2687ca"}},{"type":"ServiceEndpoint","id":"EID64b0e13c-bc22-4397-a412-c7dec0a18767","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID38f91c9d-b513-484b-b806-822b10de767e","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID38f91c9d-b513-484b-b806-822b10de767e"}},{"type":"Message","id":"EID693af500-fb32-4c96-b412-f40f88a6dd21","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID693af500-fb32-4c96-b412-f40f88a6dd21"}},{"type":"Message","id":"EID3301f5d6-fa4e-49fb-b9db-0d62e0283994","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID3301f5d6-fa4e-49fb-b9db-0d62e0283994"}},{"type":"ServiceEndpoint","id":"EID1350e328-ce19-42e2-b367-9ddc3506889e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceResponse","id":"EIDccfd7751-d725-48df-9f6a-a467304e6236","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDccfd7751-d725-48df-9f6a-a467304e6236"}},{"type":"ServiceEndpoint","id":"EIDbbcbddd0-e226-483c-abb0-e6e91fb720c6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID7c328142-ff87-424b-ace4-4028f9360888","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDf35dbe09-a0f3-4fa8-8e41-5f7506a85d8e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvZG93bmxvYWRzL3JzYV93YXRlcnp1aXZlcmluZ3NpbnN0YWxsYXRpZXNfZXUyMDE1X2dwa2cuemlw"},{"type":"Message","id":"EIDe6b5f416-8dbc-4e14-aa67-160aee488b93","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDe6b5f416-8dbc-4e14-aa67-160aee488b93"}},{"type":"GetParameter","id":"EID3f50f427-f4e0-4a0f-9396-81fca306e947","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDc3de18d7-b906-4d83-8ee9-179fdfba28af","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDd29652b0-4dec-4f75-b7c0-0712e2934ef1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDd41ccda5-f0e5-4543-bfa4-ea92a4d6fc1d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDd41ccda5-f0e5-4543-bfa4-ea92a4d6fc1d"}},{"type":"GetParameter","id":"EID7b59e667-eec8-4cf3-957b-bba50479293c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID3c5041ff-9078-4b7a-ad2c-c3323e7a8cd7","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID3c5041ff-9078-4b7a-ad2c-c3323e7a8cd7"}},{"type":"GetParameter","id":"EID62fd334d-b1bd-429d-bbab-359a0624e350","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID5273c0cf-ec7e-40c5-be31-3d083642394c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID7489cdf7-f3a4-4439-91e4-6d72939c3907","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID7489cdf7-f3a4-4439-91e4-6d72939c3907"}},{"type":"GetParameter","id":"EID4eed7988-ada3-4d79-b17d-4657e921eeb0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDb036cdaf-a2e3-4024-b037-849c6381c28f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDb036cdaf-a2e3-4024-b037-849c6381c28f"}},{"type":"Message","id":"EID7fd661a9-d592-4418-a4b1-93805227cc53","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID7fd661a9-d592-4418-a4b1-93805227cc53"}},{"type":"Message","id":"EIDe596b14c-4a2e-4b1e-8650-21b54a44787b","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDe596b14c-4a2e-4b1e-8650-21b54a44787b"}},{"type":"Message","id":"EID5052a98a-4e73-4edf-83a6-328767481c9c","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID5052a98a-4e73-4edf-83a6-328767481c9c"}},{"type":"ServiceResponse","id":"EIDdd8865df-6a8a-48c9-8545-69f8eedb043d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDdd8865df-6a8a-48c9-8545-69f8eedb043d"}},{"type":"ServiceEndpoint","id":"EID6b9d8b30-a99a-43d2-ba20-5eeab782e7cc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID7d3a58e0-6168-4bdc-85e3-fbf0aa88ba92","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID7d3a58e0-6168-4bdc-85e3-fbf0aa88ba92"}},{"type":"ServiceResponse","id":"EID024866f3-cada-4730-9361-bd475519e515","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID024866f3-cada-4730-9361-bd475519e515"}},{"type":"ServiceResponse","id":"EIDb0923ec4-ec43-4612-9bdc-004ec29849c6","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDb0923ec4-ec43-4612-9bdc-004ec29849c6"}},{"type":"GetParameter","id":"EID41ba429d-15b1-4752-9142-cd264ed086df","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDc010f172-c83f-45e5-932c-576fc2f68c5e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDc010f172-c83f-45e5-932c-576fc2f68c5e"}},{"type":"LogFile","id":"EIDbb08b758-cf9e-48b8-ad2c-c708fdab9e87","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDbb08b758-cf9e-48b8-ad2c-c708fdab9e87"}},{"type":"Message","id":"EIDe1a5fd92-ad76-45eb-a757-66127a0b71b4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDe1a5fd92-ad76-45eb-a757-66127a0b71b4"}},{"type":"Message","id":"EID0274e5ef-b6ad-4a57-9901-309fa26372fc","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID0274e5ef-b6ad-4a57-9901-309fa26372fc"}},{"type":"ServiceResponse","id":"EIDb621dbd1-3d79-428c-aed3-33a0ada30e2a","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDb621dbd1-3d79-428c-aed3-33a0ada30e2a"}},{"type":"ServiceEndpoint","id":"EIDda793af2-b7fc-4e27-b8bc-9daae90a946c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID84e60510-db4a-44d7-9f72-ebe8a5c64853","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID569b1163-fa63-43e8-aae7-32c5829a0b56","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID569b1163-fa63-43e8-aae7-32c5829a0b56"}},{"type":"GetParameter","id":"EID5077c3e2-7e42-45db-a658-7ab89932614a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDd1e9969c-dd79-4185-92d8-19c2deb7213f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDd1e9969c-dd79-4185-92d8-19c2deb7213f"}},{"type":"GetParameter","id":"EID3a38c9f3-d20e-4bd1-aaa4-9c2d5652d8f3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"Message","id":"EID05240092-c475-4fb4-bfe9-fe9608d2e600","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID05240092-c475-4fb4-bfe9-fe9608d2e600"}},{"type":"ServiceEndpoint","id":"EID0c2a6790-1031-42fb-a389-6879c7d6a898","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID50c7c0b4-d8ef-4086-a0e5-5e05329ff2f3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDb63053ad-0a3c-44e5-89fd-c94bb1e6c8ad","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDb63053ad-0a3c-44e5-89fd-c94bb1e6c8ad"}},{"type":"ServiceEndpoint","id":"EID802bf49a-d48b-4dd8-bfae-9c18de79b36d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9jMjFjNmJmNS04ODk5LTRiNDYtODk4Ni0wZjY1ZWNhMDVlZDAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID27a4cd8a-6ebc-4a8d-bf8c-c1a761d5e3a7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvcnNhX3dhdGVyenVpdmVyaW5nc2luc3RhbGxhdGllc19ldTIwMTUueG1s"},{"type":"ServiceEndpoint","id":"EIDfb28898a-ad52-43b4-925b-d3dca7d2de60","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5zdGVkZWxpamthZnZhbHdhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID10dd8fbe-980a-4411-85a4-a5b8c2720813","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EID10dd8fbe-980a-4411-85a4-a5b8c2720813"}},{"type":"Message","id":"EIDd30d1ad0-5f06-4eb4-b25d-3f6488a81c84","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb741ff5d-1d05-4968-bfde-9d5769544903/Attachments/EIDd30d1ad0-5f06-4eb4-b25d-3f6488a81c84"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:12:38Z","duration":16748,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:13:41.471 [print] EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:13:41.472 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:13:41.473 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:13:41.473 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:13:41.473 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/75e408a9-10b7-4628-b9bf-d7b4ee10c78b.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:13:41.473 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/75e408a9-10b7-4628-b9bf-d7b4ee10c78b.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:13:41.473 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID75e408a9-10b7-4628-b9bf-d7b4ee10c78b/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.017
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.005
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.004
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
13:13:41.502 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
13:13:41.503 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* print sortedrefs 0.000
13:13:41.503 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.001
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.002
1.915
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:14:26.844 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/hy-n/wfs?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.914
13:14:26.845 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 290
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/hy-n/wfs?request=GetCapabilities&service=WFS"}}}

13:14:28.759 response time in milliseconds: 1809.04
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:14:28 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804468583","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:14:28.759 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1.720
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:16:08.668 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.720
13:16:08.669 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}

13:16:10.388 response time in milliseconds: 1612.60
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:16:10 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027","timestamp":"1603804570208","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:16:10.389 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1:26.669
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:13:58.823 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 13.342
13:13:58.824 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 295
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml"}}}

13:14:12.163 response time in milliseconds: 12569.04
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:14:11 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:14:04 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/ca75fd2c-48d1-43cb-8f93-9dd1153f2f03.json","testRuns":{"TestRun":{"id":"EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:14:04.173Z","testTasks":{"TestTask":{"id":"EID8306e5c2-1485-4c0a-b8b0-ba5022c1f44d","parent":{"ref":"EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDde74d115-a727-4e3f-9c03-1ae9a0b8f7f9"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDde74d115-a727-4e3f-9c03-1ae9a0b8f7f9","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:13:59.259Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:14:02.812Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:14:12.166 [print] EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:14:12.167 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:14:12.167 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:14:12.167 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/ca75fd2c-48d1-43cb-8f93-9dd1153f2f03.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:14:12.167 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:14:12.168 [print] statuspath TestRuns/EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03
* print 'progresspath ', progresspath 0.000
13:14:12.168 [print] progresspath  TestRuns/EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03/progress
Given path progresspath 0.000
When method GET 0.545
13:14:12.178 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:12.713 response time in milliseconds: 534.57
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:14:12 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["27.10.2020 13:14:04 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:04 UTC 2020)","27.10.2020 13:14:04 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:04 - Preparing 1 Test Task:","27.10.2020 13:14:04 -  TestTask 1 (8306e5c2-1485-4c0a-b8b0-ba5022c1f44d)","27.10.2020 13:14:04 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:04 -  with parameters: ","27.10.2020 13:14:04 - etf.testcases = *","27.10.2020 13:14:04 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:04 - Setting state to CREATED","27.10.2020 13:14:04 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:04 - Starting TestRun.ca75fd2c-48d1-43cb-8f93-9dd1153f2f03 at 2020-10-27T13:14:06Z","27.10.2020 13:14:06 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:06 - Project Properties: ","27.10.2020 13:14:06 - etf.testcases - * ","27.10.2020 13:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml ","27.10.2020 13:14:06 - username -  ","27.10.2020 13:14:06 - authUser -  ","27.10.2020 13:14:06 - authMethod - basic ","27.10.2020 13:14:06 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:14:12.714 [print] {
  "val": "16",
  "max": "17",
  "log": [
    "27.10.2020 13:14:04 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:04 UTC 2020)",
    "27.10.2020 13:14:04 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:14:04 - Preparing 1 Test Task:",
    "27.10.2020 13:14:04 -  TestTask 1 (8306e5c2-1485-4c0a-b8b0-ba5022c1f44d)",
    "27.10.2020 13:14:04 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:14:04 -  with parameters: ",
    "27.10.2020 13:14:04 - etf.testcases = *",
    "27.10.2020 13:14:04 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:14:04 - Setting state to CREATED",
    "27.10.2020 13:14:04 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:14:04 - Starting TestRun.ca75fd2c-48d1-43cb-8f93-9dd1153f2f03 at 2020-10-27T13:14:06Z",
    "27.10.2020 13:14:06 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:14:06 - Project Properties: ",
    "27.10.2020 13:14:06 - etf.testcases - * ",
    "27.10.2020 13:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml ",
    "27.10.2020 13:14:06 - username -  ",
    "27.10.2020 13:14:06 - authUser -  ",
    "27.10.2020 13:14:06 - authMethod - basic ",
    "27.10.2020 13:14:06 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 1:2.822
13:14:12.715 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:13.234 response time in milliseconds: 518.71
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:14:13 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["27.10.2020 13:14:04 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:04 UTC 2020)","27.10.2020 13:14:04 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:04 - Preparing 1 Test Task:","27.10.2020 13:14:04 -  TestTask 1 (8306e5c2-1485-4c0a-b8b0-ba5022c1f44d)","27.10.2020 13:14:04 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:04 -  with parameters: ","27.10.2020 13:14:04 - etf.testcases = *","27.10.2020 13:14:04 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:04 - Setting state to CREATED","27.10.2020 13:14:04 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:04 - Starting TestRun.ca75fd2c-48d1-43cb-8f93-9dd1153f2f03 at 2020-10-27T13:14:06Z","27.10.2020 13:14:06 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:06 - Project Properties: ","27.10.2020 13:14:06 - etf.testcases - * ","27.10.2020 13:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml ","27.10.2020 13:14:06 - username -  ","27.10.2020 13:14:06 - authUser -  ","27.10.2020 13:14:06 - authMethod - basic ","27.10.2020 13:14:06 - TestRunTask initialized"]}

13:14:13.238 retry condition not satisfied: response.val == response.max
13:14:13.238 sleeping before retry #1
13:14:18.239 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:18.753 response time in milliseconds: 513.46
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:14:18 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"34","max":"35","log":["27.10.2020 13:14:04 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:04 UTC 2020)","27.10.2020 13:14:04 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:04 - Preparing 1 Test Task:","27.10.2020 13:14:04 -  TestTask 1 (8306e5c2-1485-4c0a-b8b0-ba5022c1f44d)","27.10.2020 13:14:04 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:04 -  with parameters: ","27.10.2020 13:14:04 - etf.testcases = *","27.10.2020 13:14:04 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:04 - Setting state to CREATED","27.10.2020 13:14:04 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:04 - Starting TestRun.ca75fd2c-48d1-43cb-8f93-9dd1153f2f03 at 2020-10-27T13:14:06Z","27.10.2020 13:14:06 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:06 - Project Properties: ","27.10.2020 13:14:06 - etf.testcases - * ","27.10.2020 13:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml ","27.10.2020 13:14:06 - username -  ","27.10.2020 13:14:06 - authUser -  ","27.10.2020 13:14:06 - authMethod - basic ","27.10.2020 13:14:06 - TestRunTask initialized"]}

13:14:18.753 retry condition not satisfied: response.val == response.max
13:14:18.753 sleeping before retry #2
13:14:23.754 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:24.283 response time in milliseconds: 525.28
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:14:24 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"53","max":"54","log":["27.10.2020 13:14:04 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:04 UTC 2020)","27.10.2020 13:14:04 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:04 - Preparing 1 Test Task:","27.10.2020 13:14:04 -  TestTask 1 (8306e5c2-1485-4c0a-b8b0-ba5022c1f44d)","27.10.2020 13:14:04 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:04 -  with parameters: ","27.10.2020 13:14:04 - etf.testcases = *","27.10.2020 13:14:04 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:04 - Setting state to CREATED","27.10.2020 13:14:04 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:04 - Starting TestRun.ca75fd2c-48d1-43cb-8f93-9dd1153f2f03 at 2020-10-27T13:14:06Z","27.10.2020 13:14:06 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:06 - Project Properties: ","27.10.2020 13:14:06 - etf.testcases - * ","27.10.2020 13:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml ","27.10.2020 13:14:06 - username -  ","27.10.2020 13:14:06 - authUser -  ","27.10.2020 13:14:06 - authMethod - basic ","27.10.2020 13:14:06 - TestRunTask initialized"]}

13:14:24.284 retry condition not satisfied: response.val == response.max
13:14:24.284 sleeping before retry #3
13:14:29.285 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:29.785 response time in milliseconds: 499.52
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:14:29 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"62","max":"63","log":["27.10.2020 13:14:04 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:04 UTC 2020)","27.10.2020 13:14:04 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:04 - Preparing 1 Test Task:","27.10.2020 13:14:04 -  TestTask 1 (8306e5c2-1485-4c0a-b8b0-ba5022c1f44d)","27.10.2020 13:14:04 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:04 -  with parameters: ","27.10.2020 13:14:04 - etf.testcases = *","27.10.2020 13:14:04 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:04 - Setting state to CREATED","27.10.2020 13:14:04 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:04 - Starting TestRun.ca75fd2c-48d1-43cb-8f93-9dd1153f2f03 at 2020-10-27T13:14:06Z","27.10.2020 13:14:06 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:06 - Project Properties: ","27.10.2020 13:14:06 - etf.testcases - * ","27.10.2020 13:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml ","27.10.2020 13:14:06 - username -  ","27.10.2020 13:14:06 - authUser -  ","27.10.2020 13:14:06 - authMethod - basic ","27.10.2020 13:14:06 - TestRunTask initialized"]}

13:14:29.786 retry condition not satisfied: response.val == response.max
13:14:29.786 sleeping before retry #4
13:14:34.787 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:35.303 response time in milliseconds: 515.96
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:14:35 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"78","max":"79","log":["27.10.2020 13:14:04 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:04 UTC 2020)","27.10.2020 13:14:04 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:04 - Preparing 1 Test Task:","27.10.2020 13:14:04 -  TestTask 1 (8306e5c2-1485-4c0a-b8b0-ba5022c1f44d)","27.10.2020 13:14:04 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:04 -  with parameters: ","27.10.2020 13:14:04 - etf.testcases = *","27.10.2020 13:14:04 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:04 - Setting state to CREATED","27.10.2020 13:14:04 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:04 - Starting TestRun.ca75fd2c-48d1-43cb-8f93-9dd1153f2f03 at 2020-10-27T13:14:06Z","27.10.2020 13:14:06 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:06 - Project Properties: ","27.10.2020 13:14:06 - etf.testcases - * ","27.10.2020 13:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml ","27.10.2020 13:14:06 - username -  ","27.10.2020 13:14:06 - authUser -  ","27.10.2020 13:14:06 - authMethod - basic ","27.10.2020 13:14:06 - TestRunTask initialized"]}

13:14:35.304 retry condition not satisfied: response.val == response.max
13:14:35.304 sleeping before retry #5
13:14:40.305 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:40.822 response time in milliseconds: 516.75
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:14:40 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"106","max":"107","log":["27.10.2020 13:14:04 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:04 UTC 2020)","27.10.2020 13:14:04 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:04 - Preparing 1 Test Task:","27.10.2020 13:14:04 -  TestTask 1 (8306e5c2-1485-4c0a-b8b0-ba5022c1f44d)","27.10.2020 13:14:04 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:04 -  with parameters: ","27.10.2020 13:14:04 - etf.testcases = *","27.10.2020 13:14:04 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:04 - Setting state to CREATED","27.10.2020 13:14:04 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:04 - Starting TestRun.ca75fd2c-48d1-43cb-8f93-9dd1153f2f03 at 2020-10-27T13:14:06Z","27.10.2020 13:14:06 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:06 - Project Properties: ","27.10.2020 13:14:06 - etf.testcases - * ","27.10.2020 13:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml ","27.10.2020 13:14:06 - username -  ","27.10.2020 13:14:06 - authUser -  ","27.10.2020 13:14:06 - authMethod - basic ","27.10.2020 13:14:06 - TestRunTask initialized"]}

13:14:40.823 retry condition not satisfied: response.val == response.max
13:14:40.823 sleeping before retry #6
13:14:45.824 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:46.354 response time in milliseconds: 527.28
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:14:46 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"120","max":"121","log":["27.10.2020 13:14:04 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:04 UTC 2020)","27.10.2020 13:14:04 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:04 - Preparing 1 Test Task:","27.10.2020 13:14:04 -  TestTask 1 (8306e5c2-1485-4c0a-b8b0-ba5022c1f44d)","27.10.2020 13:14:04 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:04 -  with parameters: ","27.10.2020 13:14:04 - etf.testcases = *","27.10.2020 13:14:04 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:04 - Setting state to CREATED","27.10.2020 13:14:04 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:04 - Starting TestRun.ca75fd2c-48d1-43cb-8f93-9dd1153f2f03 at 2020-10-27T13:14:06Z","27.10.2020 13:14:06 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:06 - Project Properties: ","27.10.2020 13:14:06 - etf.testcases - * ","27.10.2020 13:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml ","27.10.2020 13:14:06 - username -  ","27.10.2020 13:14:06 - authUser -  ","27.10.2020 13:14:06 - authMethod - basic ","27.10.2020 13:14:06 - TestRunTask initialized"]}

13:14:46.357 retry condition not satisfied: response.val == response.max
13:14:46.358 sleeping before retry #7
13:14:51.359 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:51.881 response time in milliseconds: 519.00
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Tue, 27 Oct 2020 13:14:51 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"138","max":"139","log":["27.10.2020 13:14:04 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:04 UTC 2020)","27.10.2020 13:14:04 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:04 - Preparing 1 Test Task:","27.10.2020 13:14:04 -  TestTask 1 (8306e5c2-1485-4c0a-b8b0-ba5022c1f44d)","27.10.2020 13:14:04 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:04 -  with parameters: ","27.10.2020 13:14:04 - etf.testcases = *","27.10.2020 13:14:04 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:04 - Setting state to CREATED","27.10.2020 13:14:04 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:04 - Starting TestRun.ca75fd2c-48d1-43cb-8f93-9dd1153f2f03 at 2020-10-27T13:14:06Z","27.10.2020 13:14:06 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:06 - Project Properties: ","27.10.2020 13:14:06 - etf.testcases - * ","27.10.2020 13:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml ","27.10.2020 13:14:06 - username -  ","27.10.2020 13:14:06 - authUser -  ","27.10.2020 13:14:06 - authMethod - basic ","27.10.2020 13:14:06 - TestRunTask initialized"]}

13:14:51.881 retry condition not satisfied: response.val == response.max
13:14:51.881 sleeping before retry #8
13:14:56.883 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:57.396 response time in milliseconds: 508.80
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Tue, 27 Oct 2020 13:14:57 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"164","max":"165","log":["27.10.2020 13:14:04 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:04 UTC 2020)","27.10.2020 13:14:04 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:04 - Preparing 1 Test Task:","27.10.2020 13:14:04 -  TestTask 1 (8306e5c2-1485-4c0a-b8b0-ba5022c1f44d)","27.10.2020 13:14:04 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:04 -  with parameters: ","27.10.2020 13:14:04 - etf.testcases = *","27.10.2020 13:14:04 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:04 - Setting state to CREATED","27.10.2020 13:14:04 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:04 - Starting TestRun.ca75fd2c-48d1-43cb-8f93-9dd1153f2f03 at 2020-10-27T13:14:06Z","27.10.2020 13:14:06 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:06 - Project Properties: ","27.10.2020 13:14:06 - etf.testcases - * ","27.10.2020 13:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml ","27.10.2020 13:14:06 - username -  ","27.10.2020 13:14:06 - authUser -  ","27.10.2020 13:14:06 - authMethod - basic ","27.10.2020 13:14:06 - TestRunTask initialized"]}

13:14:57.396 retry condition not satisfied: response.val == response.max
13:14:57.396 sleeping before retry #9
13:15:02.397 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:02.908 response time in milliseconds: 510.29
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Tue, 27 Oct 2020 13:15:02 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"192","max":"193","log":["27.10.2020 13:14:04 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:04 UTC 2020)","27.10.2020 13:14:04 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:04 - Preparing 1 Test Task:","27.10.2020 13:14:04 -  TestTask 1 (8306e5c2-1485-4c0a-b8b0-ba5022c1f44d)","27.10.2020 13:14:04 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:04 -  with parameters: ","27.10.2020 13:14:04 - etf.testcases = *","27.10.2020 13:14:04 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:04 - Setting state to CREATED","27.10.2020 13:14:04 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:04 - Starting TestRun.ca75fd2c-48d1-43cb-8f93-9dd1153f2f03 at 2020-10-27T13:14:06Z","27.10.2020 13:14:06 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:06 - Project Properties: ","27.10.2020 13:14:06 - etf.testcases - * ","27.10.2020 13:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml ","27.10.2020 13:14:06 - username -  ","27.10.2020 13:14:06 - authUser -  ","27.10.2020 13:14:06 - authMethod - basic ","27.10.2020 13:14:06 - TestRunTask initialized","27.10.2020 13:15:01 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:15:01 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:15:01 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

13:15:02.911 retry condition not satisfied: response.val == response.max
13:15:02.911 sleeping before retry #10
13:15:07.912 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:08.458 response time in milliseconds: 545.24
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Tue, 27 Oct 2020 13:15:08 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"192","max":"193","log":["27.10.2020 13:14:04 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:04 UTC 2020)","27.10.2020 13:14:04 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:04 - Preparing 1 Test Task:","27.10.2020 13:14:04 -  TestTask 1 (8306e5c2-1485-4c0a-b8b0-ba5022c1f44d)","27.10.2020 13:14:04 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:04 -  with parameters: ","27.10.2020 13:14:04 - etf.testcases = *","27.10.2020 13:14:04 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:04 - Setting state to CREATED","27.10.2020 13:14:04 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:04 - Starting TestRun.ca75fd2c-48d1-43cb-8f93-9dd1153f2f03 at 2020-10-27T13:14:06Z","27.10.2020 13:14:06 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:06 - Project Properties: ","27.10.2020 13:14:06 - etf.testcases - * ","27.10.2020 13:14:06 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml ","27.10.2020 13:14:06 - username -  ","27.10.2020 13:14:06 - authUser -  ","27.10.2020 13:14:06 - authMethod - basic ","27.10.2020 13:14:06 - TestRunTask initialized","27.10.2020 13:15:01 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:15:01 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:15:01 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

13:15:08.458 retry condition not satisfied: response.val == response.max
13:15:08.458 sleeping before retry #11
13:15:13.459 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:15.536 response time in milliseconds: 2075.97
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Tue, 27 Oct 2020 13:15:15 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:15:15.536 retry condition satisfied
* print response 0.000
13:15:15.536 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 9.923
13:15:15.537 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:25.449 response time in milliseconds: 8852.50
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Cache-Control: public, max-age=120
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Tue, 27 Oct 2020 13:15:24 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Last-Modified: Tue, 27 Oct 2020 13:15:13 GMT
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/ca75fd2c-48d1-43cb-8f93-9dd1153f2f03.json","testRuns":{"TestRun":{"id":"EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:14:04.173Z","testTasks":{"TestTask":{"id":"EID8306e5c2-1485-4c0a-b8b0-ba5022c1f44d","parent":{"ref":"EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDde74d115-a727-4e3f-9c03-1ae9a0b8f7f9"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EIDb8603914-1b10-4434-90aa-a165c5e24064"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDde74d115-a727-4e3f-9c03-1ae9a0b8f7f9","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:13:59.259Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:14:02.812Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/richtlijnoverstromingsrisico2018/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EIDb8603914-1b10-4434-90aa-a165c5e24064","testObject":{"ref":"EIDde74d115-a727-4e3f-9c03-1ae9a0b8f7f9"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a31bebf-0175-1000-c276-6346dbf6a0aa","testCaseResults":{"TestCaseResult":[{"id":"EID6a31bebf-0175-1000-9a93-9c31531ae254","testStepResults":{"TestStepResult":[{"id":"EID6a31bebf-0175-1000-d70a-cfcbe5690838","parent":{"ref":"EID6a31bebf-0175-1000-9a93-9c31531ae254"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:14:06Z","duration":14,"status":"PASSED"},{"id":"EID6a31bece-0175-1000-3429-b9707b20cfdb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31c0fb-0175-1000-e443-8ffcbc07533b","parent":{"ref":"EID6a31bece-0175-1000-3429-b9707b20cfdb"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6a31c0fb-0175-1000-4d17-f83ea64cd8af","parent":{"ref":"EID6a31bece-0175-1000-3429-b9707b20cfdb"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6a31c0fb-0175-1000-7fe0-7db24319ccaa","parent":{"ref":"EID6a31bece-0175-1000-3429-b9707b20cfdb"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6a31c0fb-0175-1000-b64a-9fc2c62edc6e","parent":{"ref":"EID6a31bece-0175-1000-3429-b9707b20cfdb"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:14:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfc9f18d5-8fb0-42d0-8d0d-5387d0970121"},{"ref":"EIDf5dc7d93-3ba0-4a09-853e-d3feda94f60e"},{"ref":"EID04540903-5ef7-4106-8a90-3777a79c2b76"}]},"parent":{"ref":"EID6a31bebf-0175-1000-9a93-9c31531ae254"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:14:06Z","duration":371,"status":"PASSED"}]},"parent":{"ref":"EID6a31bebf-0175-1000-c276-6346dbf6a0aa"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:14:06Z","duration":572,"status":"PASSED"},{"id":"EID6a31c0fb-0175-1000-76a7-d1fa5486d3f0","testStepResults":{"TestStepResult":{"id":"EID6a31c0fb-0175-1000-541b-37b6d4319e7b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31c73f-0175-1000-dd8c-f862aad9e8db","parent":{"ref":"EID6a31c0fb-0175-1000-541b-37b6d4319e7b"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6a31c73f-0175-1000-b4fd-d74a20763511","parent":{"ref":"EID6a31c0fb-0175-1000-541b-37b6d4319e7b"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6a31c73f-0175-1000-895a-d277831b02da","parent":{"ref":"EID6a31c0fb-0175-1000-541b-37b6d4319e7b"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5d7b67d2-f12e-4322-a2b0-5525a2da1871"},{"ref":"EIDe217de21-5236-4e44-8730-5066cd9da6fa"},{"ref":"EID029d3f1e-fcf7-4151-bb92-abfb5113d8d9"}]},"parent":{"ref":"EID6a31c0fb-0175-1000-76a7-d1fa5486d3f0"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:14:06Z","duration":1509,"status":"PASSED"}},"parent":{"ref":"EID6a31bebf-0175-1000-c276-6346dbf6a0aa"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:14:06Z","duration":1604,"status":"PASSED"}]},"parent":{"ref":"EIDb8603914-1b10-4434-90aa-a165c5e24064"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:14:06Z","duration":2176,"status":"PASSED"},{"id":"EID6a31c73f-0175-1000-ee79-fe47600ed59a","testCaseResults":{"TestCaseResult":[{"id":"EID6a31c73f-0175-1000-26c0-2f8a6e67a767","testStepResults":{"TestStepResult":[{"id":"EID6a31c73f-0175-1000-b075-5c759b299241","parent":{"ref":"EID6a31c73f-0175-1000-26c0-2f8a6e67a767"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:14:08Z","duration":1509,"status":"PASSED"},{"id":"EID6a31c73f-0175-1000-2545-7cb2d46273c2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31cc8a-0175-1000-0e59-2b423bb0dcc6","parent":{"ref":"EID6a31c73f-0175-1000-2545-7cb2d46273c2"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6a31cc8a-0175-1000-9a9e-f11757a50ddf","parent":{"ref":"EID6a31c73f-0175-1000-2545-7cb2d46273c2"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6a31cc8a-0175-1000-5b00-fd9a9ef0e290","parent":{"ref":"EID6a31c73f-0175-1000-2545-7cb2d46273c2"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6a31cc8a-0175-1000-113e-ba6c9fabb0a0","parent":{"ref":"EID6a31c73f-0175-1000-2545-7cb2d46273c2"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6a31cc8a-0175-1000-19ec-2a1d3e2e1608","parent":{"ref":"EID6a31c73f-0175-1000-2545-7cb2d46273c2"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:14:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7cd4487c-539d-40d7-86a5-d133c7430402"},{"ref":"EIDa7da15ac-4529-4328-b92e-3915fc3b9fd2"},{"ref":"EIDaadb5fd5-cece-446f-bde2-7ae18f17ff1f"}]},"parent":{"ref":"EID6a31c73f-0175-1000-26c0-2f8a6e67a767"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:14:08Z","duration":1212,"status":"PASSED"}]},"parent":{"ref":"EID6a31c73f-0175-1000-ee79-fe47600ed59a"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:14:08Z","duration":1355,"status":"PASSED"},{"id":"EID6a31cc8a-0175-1000-813e-edbd6f70c746","testStepResults":{"TestStepResult":[{"id":"EID6a31cc8a-0175-1000-5419-3370e40a7924","attachments":{"attachment":[{"ref":"EID191d23af-f437-4e04-a98a-522928b45b07"},{"ref":"EIDe26d6e35-629b-4143-be5a-d366db5374b0"}]},"parent":{"ref":"EID6a31cc8a-0175-1000-813e-edbd6f70c746"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:14:09Z","duration":696,"status":"PASSED"},{"id":"EID6a31cf73-0175-1000-25f3-406988624c25","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31d392-0175-1000-1384-d2f36c5c7d41","parent":{"ref":"EID6a31cf73-0175-1000-25f3-406988624c25"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"PASSED"},{"id":"EID6a31d392-0175-1000-68ee-cd72bdc1de97","parent":{"ref":"EID6a31cf73-0175-1000-25f3-406988624c25"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"PASSED"},{"id":"EID6a31d392-0175-1000-cbbc-899542f38c35","parent":{"ref":"EID6a31cf73-0175-1000-25f3-406988624c25"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"PASSED"},{"id":"EID6a31d392-0175-1000-254a-6af5181bc432","parent":{"ref":"EID6a31cf73-0175-1000-25f3-406988624c25"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID357326c7-e898-43af-9e56-2575cda894c6"},{"ref":"EID9e301c3c-3125-4630-b932-1806f2357784"},{"ref":"EIDef7be1ad-0b52-436a-8243-f8766bef1085"}]},"parent":{"ref":"EID6a31cc8a-0175-1000-813e-edbd6f70c746"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:14:10Z","duration":916,"status":"PASSED"}]},"parent":{"ref":"EID6a31c73f-0175-1000-ee79-fe47600ed59a"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:14:09Z","duration":1800,"status":"PASSED"},{"id":"EID6a31d392-0175-1000-928e-db0198f38ea4","testStepResults":{"TestStepResult":[{"id":"EID6a31d392-0175-1000-47bc-53f3ba90493d","attachments":{"attachment":[{"ref":"EID9c6b304c-c215-4f93-a1c2-548c3ca57ea6"},{"ref":"EIDe97d109b-7a60-4947-90a5-1b5f24f13d27"}]},"parent":{"ref":"EID6a31d392-0175-1000-928e-db0198f38ea4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:14:11Z","duration":971,"status":"PASSED"},{"id":"EID6a31d782-0175-1000-2fe1-970609320392","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31db3d-0175-1000-81da-2a59d76e345f","parent":{"ref":"EID6a31d782-0175-1000-2fe1-970609320392"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6a31db3d-0175-1000-c958-d52be7947d3a","parent":{"ref":"EID6a31d782-0175-1000-2fe1-970609320392"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6a31db3d-0175-1000-e4ea-953ece544199","parent":{"ref":"EID6a31d782-0175-1000-2fe1-970609320392"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6a31db3d-0175-1000-bbff-86a79719971d","parent":{"ref":"EID6a31d782-0175-1000-2fe1-970609320392"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6a31db3d-0175-1000-c33b-ff6a26fad875","parent":{"ref":"EID6a31d782-0175-1000-2fe1-970609320392"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID27923503-5937-4357-b0d8-b42067ed0ddf"},{"ref":"EID5999e325-3048-46cd-af7c-05b29be2ae45"},{"ref":"EID8a0146ab-de19-4ef5-9c75-de9d56def992"}]},"parent":{"ref":"EID6a31d392-0175-1000-928e-db0198f38ea4"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:14:12Z","duration":741,"status":"PASSED"}]},"parent":{"ref":"EID6a31c73f-0175-1000-ee79-fe47600ed59a"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:14:11Z","duration":1963,"status":"PASSED"},{"id":"EID6a31db3d-0175-1000-adcc-c2772b32b95d","testStepResults":{"TestStepResult":[{"id":"EID6a31db3d-0175-1000-f24a-3a169026717f","attachments":{"attachment":[{"ref":"EID3218e85e-a022-4004-bf04-92fcd141eff1"},{"ref":"EID255f4062-247f-4039-9f4c-ce04126a8a52"}]},"parent":{"ref":"EID6a31db3d-0175-1000-adcc-c2772b32b95d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:14:13Z","duration":907,"status":"PASSED"},{"id":"EID6a31df05-0175-1000-00ef-2fc40ca63d4a","parent":{"ref":"EID6a31db3d-0175-1000-adcc-c2772b32b95d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:14:14Z","duration":0,"status":"PASSED"},{"id":"EID6a31df05-0175-1000-3c55-07fa1d565ef4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31e11e-0175-1000-3d7a-328ced96c73d","parent":{"ref":"EID6a31df05-0175-1000-3c55-07fa1d565ef4"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6a31e11e-0175-1000-89a5-d48366caecb9","parent":{"ref":"EID6a31df05-0175-1000-3c55-07fa1d565ef4"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6a31e11e-0175-1000-41a6-be85b4c5e9a4","parent":{"ref":"EID6a31df05-0175-1000-3c55-07fa1d565ef4"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6a31e11e-0175-1000-98e3-1b62d9b90b8e","parent":{"ref":"EID6a31df05-0175-1000-3c55-07fa1d565ef4"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:14:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbb8db5d4-0641-4e64-8768-97b84c326538"},{"ref":"EID89933827-2641-4444-9259-69d66ec784a4"},{"ref":"EID75612af4-9e80-4e78-9bc6-0d331cdad09f"}]},"parent":{"ref":"EID6a31db3d-0175-1000-adcc-c2772b32b95d"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:14:14Z","duration":450,"status":"PASSED"},{"id":"EID6a31e11e-0175-1000-bf93-f43d2af5655e","attachments":{"attachment":{"ref":"EIDf91b3c2c-8a83-45f0-8cfe-9f668e3b31c2"}},"parent":{"ref":"EID6a31db3d-0175-1000-adcc-c2772b32b95d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:14:15Z","duration":1,"status":"PASSED"},{"id":"EID6a31e136-0175-1000-56b4-444ed130fb83","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31e36f-0175-1000-cf91-ec7dafab9b49","parent":{"ref":"EID6a31e136-0175-1000-56b4-444ed130fb83"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6a31e36f-0175-1000-5fe0-f7040ea0a9aa","parent":{"ref":"EID6a31e136-0175-1000-56b4-444ed130fb83"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6a31e36f-0175-1000-d9c3-55f871d50318","parent":{"ref":"EID6a31e136-0175-1000-56b4-444ed130fb83"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6a31e36f-0175-1000-9243-2b89e231b50d","parent":{"ref":"EID6a31e136-0175-1000-56b4-444ed130fb83"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:14:15Z","duration":0,"status":"PASSED"},{"id":"EID6a31e36f-0175-1000-6788-c9201605bb69","parent":{"ref":"EID6a31e136-0175-1000-56b4-444ed130fb83"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:14:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8a42d875-e6c3-412a-b595-29f2515f3076"},{"ref":"EID85612d5c-12a3-4c7e-8699-ac112e03a04b"},{"ref":"EID9b5e22b5-16ba-4713-a5b4-c5d89cc62cee"}]},"parent":{"ref":"EID6a31db3d-0175-1000-adcc-c2772b32b95d"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:14:15Z","duration":367,"status":"PASSED"}]},"parent":{"ref":"EID6a31c73f-0175-1000-ee79-fe47600ed59a"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:14:13Z","duration":2098,"status":"PASSED"},{"id":"EID6a31e370-0175-1000-e893-7abc02ce4ee2","testStepResults":{"TestStepResult":[{"id":"EID6a31e370-0175-1000-46f2-f65424bb8716","attachments":{"attachment":[{"ref":"EIDb23ffd61-e19e-4b3b-87cb-8a9dc6fe85c4"},{"ref":"EID81aeefa9-9671-4052-a994-4ece105248db"}]},"parent":{"ref":"EID6a31e370-0175-1000-e893-7abc02ce4ee2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:14:15Z","duration":1178,"status":"PASSED"},{"id":"EID6a31e8a2-0175-1000-178b-73066a9769fd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31eb2d-0175-1000-eea7-12447031cbca","parent":{"ref":"EID6a31e8a2-0175-1000-178b-73066a9769fd"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:14:17Z","duration":0,"status":"PASSED"},{"id":"EID6a31eb2d-0175-1000-6851-f56fea49ed85","parent":{"ref":"EID6a31e8a2-0175-1000-178b-73066a9769fd"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:14:17Z","duration":0,"status":"PASSED"},{"id":"EID6a31eb2d-0175-1000-0173-248d105e65d7","parent":{"ref":"EID6a31e8a2-0175-1000-178b-73066a9769fd"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:14:17Z","duration":0,"status":"PASSED"},{"id":"EID6a31eb2d-0175-1000-48e1-dedbe3b7deea","parent":{"ref":"EID6a31e8a2-0175-1000-178b-73066a9769fd"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:14:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID870e3837-691f-4d12-ac55-2cf860ce171d"},{"ref":"EIDc234d149-c47a-4b86-a4e1-bf2df3520172"},{"ref":"EID64ae6906-de43-48ed-b751-8c6045d92db5"}]},"parent":{"ref":"EID6a31e370-0175-1000-e893-7abc02ce4ee2"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:14:17Z","duration":561,"status":"PASSED"}]},"parent":{"ref":"EID6a31c73f-0175-1000-ee79-fe47600ed59a"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:14:15Z","duration":1991,"status":"PASSED"},{"id":"EID6a31eb37-0175-1000-d486-1ca5e5c76547","testStepResults":{"TestStepResult":[{"id":"EID6a31eb37-0175-1000-af5b-818b4455b716","attachments":{"attachment":[{"ref":"EID1bec7f0f-46f4-47d7-a5d6-9baa139a0c3a"},{"ref":"EID239cc004-31ff-4cc5-ae9c-dfa05e450b68"}]},"parent":{"ref":"EID6a31eb37-0175-1000-d486-1ca5e5c76547"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:14:17Z","duration":428,"status":"PASSED"},{"id":"EID6a31ed90-0175-1000-bc19-d0ff664f0830","parent":{"ref":"EID6a31eb37-0175-1000-d486-1ca5e5c76547"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:14:18Z","duration":0,"status":"PASSED"},{"id":"EID6a31ed90-0175-1000-2d35-b2e56c2b56e2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31f3da-0175-1000-ce9b-4c66fb14864c","parent":{"ref":"EID6a31ed90-0175-1000-2d35-b2e56c2b56e2"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6a31f3da-0175-1000-e34b-7178de7b4ecb","parent":{"ref":"EID6a31ed90-0175-1000-2d35-b2e56c2b56e2"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6a31f3da-0175-1000-9840-0dad715d81c8","parent":{"ref":"EID6a31ed90-0175-1000-2d35-b2e56c2b56e2"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6a31f3da-0175-1000-2c0f-67410f6a6de4","parent":{"ref":"EID6a31ed90-0175-1000-2d35-b2e56c2b56e2"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:14:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa3501499-edd3-44c9-a3c9-5471c5776f3c"},{"ref":"EID9e18f675-8f93-48e4-b92d-faa4aabd4b19"},{"ref":"EID0eb9b234-6882-4705-b2ee-e4ef4a8f5160"}]},"parent":{"ref":"EID6a31eb37-0175-1000-d486-1ca5e5c76547"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:14:18Z","duration":1395,"status":"PASSED"},{"id":"EID6a31f3db-0175-1000-96bd-1d8a0b65315c","attachments":{"attachment":{"ref":"EIDcee71978-c6df-4d39-a87b-007741467f2f"}},"parent":{"ref":"EID6a31eb37-0175-1000-d486-1ca5e5c76547"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:14:19Z","duration":0,"status":"PASSED"},{"id":"EID6a31f3f3-0175-1000-05fe-cc2b381ccc0e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31f4bd-0175-1000-20bf-1ebe062b979b","parent":{"ref":"EID6a31f3f3-0175-1000-05fe-cc2b381ccc0e"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6a31f4bd-0175-1000-1201-6cd4205cc367","parent":{"ref":"EID6a31f3f3-0175-1000-05fe-cc2b381ccc0e"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6a31f4bd-0175-1000-d510-bc77f0305b8c","parent":{"ref":"EID6a31f3f3-0175-1000-05fe-cc2b381ccc0e"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:14:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDce0b7fa0-dda2-48ed-b022-3aeb21856a10"},{"ref":"EID619e3669-0bb3-46ef-8b8d-485fa6428a51"},{"ref":"EID2cb0b113-20e4-44bf-823c-b6927f682242"}]},"parent":{"ref":"EID6a31eb37-0175-1000-d486-1ca5e5c76547"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:14:20Z","duration":122,"status":"PASSED"},{"id":"EID6a31f4bd-0175-1000-5ffc-d99645338d00","attachments":{"attachment":{"ref":"EID0114142a-2365-420a-aadc-398cec82e52c"}},"parent":{"ref":"EID6a31eb37-0175-1000-d486-1ca5e5c76547"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-27T13:14:20Z","duration":0,"status":"PASSED"},{"id":"EID6a31f52b-0175-1000-b44f-1af9c7aa1678","attachments":{"attachment":{"ref":"EID5a05fc99-ab37-46be-8b0e-256539ae0952"}},"parent":{"ref":"EID6a31eb37-0175-1000-d486-1ca5e5c76547"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-27T13:14:20Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6a31c73f-0175-1000-ee79-fe47600ed59a"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:14:17Z","duration":2564,"status":"PASSED"},{"id":"EID6a31f53c-0175-1000-93bd-01c3a62274d2","testStepResults":{"TestStepResult":[{"id":"EID6a31f53c-0175-1000-63e2-2e7c6e842b05","attachments":{"attachment":[{"ref":"EID0fc57fd2-2bee-4ed2-bd62-f977aee69a7f"},{"ref":"EIDdfa7c4b2-1437-4bc7-bd56-ec93980e19e9"}]},"parent":{"ref":"EID6a31f53c-0175-1000-93bd-01c3a62274d2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:14:20Z","duration":731,"status":"PASSED"},{"id":"EID6a31f846-0175-1000-f5b4-bf32fa26d8f1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31fd9e-0175-1000-b3e9-1c50d47a7983","parent":{"ref":"EID6a31f846-0175-1000-f5b4-bf32fa26d8f1"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:14:22Z","duration":0,"status":"PASSED"},{"id":"EID6a31fd9e-0175-1000-5a3d-15fcb9a26801","parent":{"ref":"EID6a31f846-0175-1000-f5b4-bf32fa26d8f1"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:14:22Z","duration":0,"status":"PASSED"},{"id":"EID6a31fd9e-0175-1000-aa29-0a48154b8585","parent":{"ref":"EID6a31f846-0175-1000-f5b4-bf32fa26d8f1"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:14:22Z","duration":0,"status":"PASSED"},{"id":"EID6a31fd9e-0175-1000-0722-2c809de452e9","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a31f846-0175-1000-f5b4-bf32fa26d8f1"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:14:22Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EIDabf414be-e079-4301-b06e-93051d42a0c9"},{"ref":"EID3945e1db-c950-46ad-9d88-8ba6800c4ce2"},{"ref":"EID2413a716-8c69-48dd-b713-e19ea2bb7bd0"}]},"parent":{"ref":"EID6a31f53c-0175-1000-93bd-01c3a62274d2"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:14:21Z","duration":1065,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a31c73f-0175-1000-ee79-fe47600ed59a"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:14:20Z","duration":2146,"status":"PASSED_MANUAL"},{"id":"EID6a31fdaa-0175-1000-fc0f-0054576ee0b3","testStepResults":{"TestStepResult":{"id":"EID6a31fdaa-0175-1000-beb9-3fad39a765c7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a320044-0175-1000-dfbb-c06f3046eedf","parent":{"ref":"EID6a31fdaa-0175-1000-beb9-3fad39a765c7"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:14:23Z","duration":0,"status":"PASSED"},{"id":"EID6a320044-0175-1000-39ab-177e9aa43c23","parent":{"ref":"EID6a31fdaa-0175-1000-beb9-3fad39a765c7"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:14:23Z","duration":0,"status":"PASSED"},{"id":"EID6a320044-0175-1000-6a1a-b8b9c2a25755","parent":{"ref":"EID6a31fdaa-0175-1000-beb9-3fad39a765c7"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:14:23Z","duration":0,"status":"PASSED"},{"id":"EID6a320044-0175-1000-c152-bfc86a960466","parent":{"ref":"EID6a31fdaa-0175-1000-beb9-3fad39a765c7"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:14:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa316d35d-4cca-4b9b-9a7d-435ee450e6e8"},{"ref":"EIDfd9013fd-d02a-48e1-a536-b9e0c7ff7b8b"},{"ref":"EID4f29d278-02cf-44e7-bc7e-fce3117c9479"}]},"parent":{"ref":"EID6a31fdaa-0175-1000-fc0f-0054576ee0b3"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:14:22Z","duration":384,"status":"PASSED"}},"parent":{"ref":"EID6a31c73f-0175-1000-ee79-fe47600ed59a"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:14:22Z","duration":667,"status":"PASSED"},{"id":"EID6a320045-0175-1000-ac73-73e854d2b776","testStepResults":{"TestStepResult":{"id":"EID6a320045-0175-1000-7448-89326903868c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a32037f-0175-1000-70f7-2bdd31e36a87","parent":{"ref":"EID6a320045-0175-1000-7448-89326903868c"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:14:23Z","duration":0,"status":"PASSED"},{"id":"EID6a32037f-0175-1000-71ad-9684ee056218","parent":{"ref":"EID6a320045-0175-1000-7448-89326903868c"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:14:23Z","duration":0,"status":"PASSED"},{"id":"EID6a32037f-0175-1000-b9c2-6290d6d47ac6","parent":{"ref":"EID6a320045-0175-1000-7448-89326903868c"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:14:23Z","duration":0,"status":"PASSED"},{"id":"EID6a32037f-0175-1000-a64c-7a253c5db748","parent":{"ref":"EID6a320045-0175-1000-7448-89326903868c"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:14:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7ab456c5-515c-4ddb-aa00-b2195cd5182a"},{"ref":"EID93b3eb61-11fb-4143-9e72-fcd83aeee462"},{"ref":"EID12a8301f-817e-42b4-b6cf-b2e0f0e84c06"}]},"parent":{"ref":"EID6a320045-0175-1000-ac73-73e854d2b776"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:14:23Z","duration":518,"status":"PASSED"}},"parent":{"ref":"EID6a31c73f-0175-1000-ee79-fe47600ed59a"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:14:23Z","duration":836,"status":"PASSED"},{"id":"EID6a320389-0175-1000-0ae4-a5398e6b0fbe","testStepResults":{"TestStepResult":[{"id":"EID6a320389-0175-1000-f4e7-a7ddfdc4af8a","attachments":{"attachment":[{"ref":"EIDe3f60231-39d8-4304-91dd-de8c2f61f6a9"},{"ref":"EID22fdac5b-58c4-4b33-8e48-948386ebd6f6"},{"ref":"EIDb4fc4f77-29bf-4b53-87ff-315341e69ba2"},{"ref":"EID0ed9378b-8c8b-4c99-b6a8-fb01988e0371"},{"ref":"EIDa7d60fa8-046b-4e24-914a-fe4e41118cb5"},{"ref":"EID9e33135e-34ea-41c0-a9a2-79d1fcd717c0"},{"ref":"EID1581ac51-01bc-480e-8faa-27b7689c4333"},{"ref":"EIDeaa52c45-441c-4fac-9bce-fa397e7ff644"},{"ref":"EID84aa9cde-7089-48bc-b454-c5319405da5d"},{"ref":"EID07214e52-89f3-43fa-acbf-fedb62400b0d"},{"ref":"EIDe3ea0758-dcee-4b2f-b21f-0e823fb9ac88"},{"ref":"EIDd51ca39b-655c-4259-b1ca-d893280f0b2c"}]},"parent":{"ref":"EID6a320389-0175-1000-0ae4-a5398e6b0fbe"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:14:24Z","duration":2428,"status":"PASSED"},{"id":"EID6a320e42-0175-1000-7c7e-ddaa2569eddc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a321138-0175-1000-a956-bee44a90992e","parent":{"ref":"EID6a320e42-0175-1000-7c7e-ddaa2569eddc"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-27T13:14:27Z","duration":0,"status":"PASSED"},{"id":"EID6a321138-0175-1000-a82a-d5f49319db41","parent":{"ref":"EID6a320e42-0175-1000-7c7e-ddaa2569eddc"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-27T13:14:27Z","duration":0,"status":"PASSED"},{"id":"EID6a321138-0175-1000-909f-f013fd178a5c","parent":{"ref":"EID6a320e42-0175-1000-7c7e-ddaa2569eddc"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-27T13:14:27Z","duration":0,"status":"PASSED"},{"id":"EID6a321138-0175-1000-b2e4-d255a832fdd8","parent":{"ref":"EID6a320e42-0175-1000-7c7e-ddaa2569eddc"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-27T13:14:27Z","duration":0,"status":"PASSED"},{"id":"EID6a321138-0175-1000-2f4b-047fe493bf47","parent":{"ref":"EID6a320e42-0175-1000-7c7e-ddaa2569eddc"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-27T13:14:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb25bed7a-08b5-43a7-a978-dfaf4e203129"},{"ref":"EID4f4ddd0c-2c4f-41a9-9f2f-c1b252831e47"},{"ref":"EIDc16dc49c-7bea-45ab-9f83-01d12af9f554"}]},"parent":{"ref":"EID6a320389-0175-1000-0ae4-a5398e6b0fbe"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-27T13:14:26Z","duration":633,"status":"PASSED"}]},"parent":{"ref":"EID6a31c73f-0175-1000-ee79-fe47600ed59a"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:14:24Z","duration":3513,"status":"PASSED"},{"id":"EID6a321142-0175-1000-14da-6551bdb586ab","testStepResults":{"TestStepResult":{"id":"EID6a321142-0175-1000-a6ff-c82a423327a2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3214e5-0175-1000-d10f-e21e37513e72","parent":{"ref":"EID6a321142-0175-1000-a6ff-c82a423327a2"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:14:28Z","duration":0,"status":"PASSED"},{"id":"EID6a3214e5-0175-1000-3559-dd0e188dd753","parent":{"ref":"EID6a321142-0175-1000-a6ff-c82a423327a2"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:14:28Z","duration":0,"status":"PASSED"},{"id":"EID6a3214e5-0175-1000-b200-113c8ee0c76d","parent":{"ref":"EID6a321142-0175-1000-a6ff-c82a423327a2"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:14:28Z","duration":0,"status":"PASSED"},{"id":"EID6a3214e5-0175-1000-5bf8-3a6571464e66","parent":{"ref":"EID6a321142-0175-1000-a6ff-c82a423327a2"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:14:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf2ea4665-07f0-4113-ade9-cf3a7ce3eb55"},{"ref":"EID679b160d-fa83-44cb-8ef6-ff041077916b"},{"ref":"EID2c72a8e6-043d-4de8-be78-a8a80baa1978"}]},"parent":{"ref":"EID6a321142-0175-1000-14da-6551bdb586ab"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:14:27Z","duration":763,"status":"PASSED"}},"parent":{"ref":"EID6a31c73f-0175-1000-ee79-fe47600ed59a"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:14:27Z","duration":931,"status":"PASSED"},{"id":"EID6a3214e5-0175-1000-dc70-0b6cb176a873","testStepResults":{"TestStepResult":{"id":"EID6a3214e5-0175-1000-c56e-dc284151cc43","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a321e88-0175-1000-c8eb-5ec337c77549","parent":{"ref":"EID6a3214e5-0175-1000-c56e-dc284151cc43"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:14:30Z","duration":0,"status":"PASSED"},{"id":"EID6a321e88-0175-1000-b025-66d1e1962223","parent":{"ref":"EID6a3214e5-0175-1000-c56e-dc284151cc43"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:14:30Z","duration":0,"status":"PASSED"},{"id":"EID6a321e88-0175-1000-04fa-e213849da837","parent":{"ref":"EID6a3214e5-0175-1000-c56e-dc284151cc43"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:14:30Z","duration":0,"status":"PASSED"},{"id":"EID6a321e88-0175-1000-e795-c369ba6db8c0","parent":{"ref":"EID6a3214e5-0175-1000-c56e-dc284151cc43"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:14:30Z","duration":0,"status":"PASSED"},{"id":"EID6a321e88-0175-1000-316a-da96f9b900d8","parent":{"ref":"EID6a3214e5-0175-1000-c56e-dc284151cc43"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:14:30Z","duration":0,"status":"PASSED"},{"id":"EID6a321e88-0175-1000-3a09-f7c04c79bd4b","parent":{"ref":"EID6a3214e5-0175-1000-c56e-dc284151cc43"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:14:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf8a387b6-e28c-4079-a530-2948535c937b"},{"ref":"EID3b718d6f-e1ab-4e91-b72f-b0c112b79673"},{"ref":"EIDabed2059-3f6e-4f3e-81ad-c37d0cdb7c94"}]},"parent":{"ref":"EID6a3214e5-0175-1000-dc70-0b6cb176a873"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:14:28Z","duration":2337,"status":"PASSED"}},"parent":{"ref":"EID6a31c73f-0175-1000-ee79-fe47600ed59a"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:14:28Z","duration":2467,"status":"PASSED"},{"id":"EID6a321e88-0175-1000-a11b-57c837447c32","testStepResults":{"TestStepResult":{"id":"EID6a321e88-0175-1000-8528-bef5eb35a9a3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3220ef-0175-1000-fe1f-e98e092b3a05","parent":{"ref":"EID6a321e88-0175-1000-8528-bef5eb35a9a3"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:14:31Z","duration":0,"status":"PASSED"},{"id":"EID6a3220ef-0175-1000-4a94-a641753e9bc3","parent":{"ref":"EID6a321e88-0175-1000-8528-bef5eb35a9a3"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:14:31Z","duration":0,"status":"PASSED"},{"id":"EID6a3220ef-0175-1000-0fa2-149f2145e367","parent":{"ref":"EID6a321e88-0175-1000-8528-bef5eb35a9a3"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:14:31Z","duration":0,"status":"PASSED"},{"id":"EID6a3220ef-0175-1000-a7d9-b1f0fe74307b","parent":{"ref":"EID6a321e88-0175-1000-8528-bef5eb35a9a3"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:14:31Z","duration":0,"status":"PASSED"},{"id":"EID6a3220ef-0175-1000-644c-2922badf6690","parent":{"ref":"EID6a321e88-0175-1000-8528-bef5eb35a9a3"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:14:31Z","duration":0,"status":"PASSED"},{"id":"EID6a3220ef-0175-1000-3621-cead903fd562","parent":{"ref":"EID6a321e88-0175-1000-8528-bef5eb35a9a3"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:14:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4bf0bd96-7184-4daf-ad17-24c2ca76ed41"},{"ref":"EID5440277d-d987-4496-b1a0-ae8e56173f55"},{"ref":"EIDf601f078-764b-4c72-8440-56cac00dde66"}]},"parent":{"ref":"EID6a321e88-0175-1000-a11b-57c837447c32"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:14:30Z","duration":440,"status":"PASSED"}},"parent":{"ref":"EID6a31c73f-0175-1000-ee79-fe47600ed59a"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:14:30Z","duration":628,"status":"PASSED"},{"id":"EID6a3220fd-0175-1000-6938-5f968ca91bf2","testStepResults":{"TestStepResult":{"id":"EID6a3220fd-0175-1000-eee8-9302e7aac60a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3225ac-0175-1000-9eba-5ff41f23a88d","parent":{"ref":"EID6a3220fd-0175-1000-eee8-9302e7aac60a"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:14:32Z","duration":0,"status":"PASSED"},{"id":"EID6a3225ac-0175-1000-af6b-151feeba2875","parent":{"ref":"EID6a3220fd-0175-1000-eee8-9302e7aac60a"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:14:32Z","duration":0,"status":"PASSED"},{"id":"EID6a3225ac-0175-1000-d917-970f68033180","parent":{"ref":"EID6a3220fd-0175-1000-eee8-9302e7aac60a"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:14:32Z","duration":0,"status":"PASSED"},{"id":"EID6a3225ac-0175-1000-4d18-d8daca0bfcc8","parent":{"ref":"EID6a3220fd-0175-1000-eee8-9302e7aac60a"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:14:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7c2edf33-9b39-4fa9-b27f-16fa23bf4a5c"},{"ref":"EID8700c6f1-6114-47ba-a090-f69411d32f19"},{"ref":"EID63b0247a-b701-4dac-8b7a-001a4067da7a"}]},"parent":{"ref":"EID6a3220fd-0175-1000-6938-5f968ca91bf2"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:14:31Z","duration":940,"status":"PASSED"}},"parent":{"ref":"EID6a31c73f-0175-1000-ee79-fe47600ed59a"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:14:31Z","duration":1199,"status":"PASSED"},{"id":"EID6a3225ad-0175-1000-1da4-fe42f46ab4e2","testStepResults":{"TestStepResult":[{"id":"EID6a3225ad-0175-1000-9e17-19f7dc26d43e","attachments":{"attachment":[{"ref":"EID4017601e-0e19-4e99-9643-65a129d0dbeb"},{"ref":"EIDaa38b8b6-398a-4844-a9d3-3ca792464f7c"},{"ref":"EID3d45177d-4155-4bbc-93f8-5c89947ce2b8"},{"ref":"EIDea569acb-28d2-4660-9581-02b844618b1a"}]},"parent":{"ref":"EID6a3225ad-0175-1000-1da4-fe42f46ab4e2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:14:32Z","duration":2340,"status":"PASSED"},{"id":"EID6a322f27-0175-1000-eb07-394b8d439bd2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a323326-0175-1000-2237-f6a97099835f","parent":{"ref":"EID6a322f27-0175-1000-eb07-394b8d439bd2"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:14:36Z","duration":0,"status":"PASSED"},{"id":"EID6a323326-0175-1000-efbc-2e7507b3d9cc","parent":{"ref":"EID6a322f27-0175-1000-eb07-394b8d439bd2"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:14:36Z","duration":0,"status":"PASSED"},{"id":"EID6a323326-0175-1000-9edb-3e56a9274370","parent":{"ref":"EID6a322f27-0175-1000-eb07-394b8d439bd2"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:14:36Z","duration":0,"status":"PASSED"},{"id":"EID6a323326-0175-1000-1ae3-7cf661062d3e","parent":{"ref":"EID6a322f27-0175-1000-eb07-394b8d439bd2"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:14:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2e96c35c-35c6-4fbd-8eb3-303370606a0c"},{"ref":"EIDb9c2f1d0-9c56-480b-ae1a-0ddb70546b30"},{"ref":"EID5a4e03d8-e1bf-47c8-bb96-25e5a571bf25"}]},"parent":{"ref":"EID6a3225ad-0175-1000-1da4-fe42f46ab4e2"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:14:35Z","duration":855,"status":"PASSED"}]},"parent":{"ref":"EID6a31c73f-0175-1000-ee79-fe47600ed59a"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:14:32Z","duration":3449,"status":"PASSED"},{"id":"EID6a323326-0175-1000-8b46-e8a24a0ff72d","testStepResults":{"TestStepResult":{"id":"EID6a323326-0175-1000-f2ad-7596ae7d555a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3235ff-0175-1000-6761-78a5974b86b5","parent":{"ref":"EID6a323326-0175-1000-f2ad-7596ae7d555a"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:14:36Z","duration":0,"status":"PASSED"},{"id":"EID6a3235ff-0175-1000-782e-799837c4512e","parent":{"ref":"EID6a323326-0175-1000-f2ad-7596ae7d555a"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:14:36Z","duration":0,"status":"PASSED"},{"id":"EID6a3235ff-0175-1000-5498-d080468a86c5","parent":{"ref":"EID6a323326-0175-1000-f2ad-7596ae7d555a"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:14:36Z","duration":0,"status":"PASSED"},{"id":"EID6a3235ff-0175-1000-03ce-e3d4033afbf1","parent":{"ref":"EID6a323326-0175-1000-f2ad-7596ae7d555a"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:14:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDec39aeeb-a847-42c1-97d7-f3ebe1268e84"},{"ref":"EID1a4614ad-eab8-4eb5-9787-68d13dd82445"},{"ref":"EIDf83d584b-6ca1-49f7-adbd-5e63d6b7e75d"}]},"parent":{"ref":"EID6a323326-0175-1000-8b46-e8a24a0ff72d"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:14:36Z","duration":490,"status":"PASSED"}},"parent":{"ref":"EID6a31c73f-0175-1000-ee79-fe47600ed59a"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:14:36Z","duration":729,"status":"PASSED"},{"id":"EID6a3235ff-0175-1000-9c64-390fb83d9f28","testStepResults":{"TestStepResult":[{"id":"EID6a3235ff-0175-1000-3e6d-e0237f7f9a9e","parent":{"ref":"EID6a3235ff-0175-1000-9c64-390fb83d9f28"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:14:36Z","duration":0,"status":"PASSED"},{"id":"EID6a3235ff-0175-1000-5178-a1ff0808646e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3238fb-0175-1000-1bcf-d4fff28b2ec6","parent":{"ref":"EID6a3235ff-0175-1000-5178-a1ff0808646e"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:14:37Z","duration":0,"status":"PASSED"},{"id":"EID6a3238fb-0175-1000-44b2-5e02da1b98db","parent":{"ref":"EID6a3235ff-0175-1000-5178-a1ff0808646e"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:14:37Z","duration":0,"status":"PASSED"},{"id":"EID6a3238fb-0175-1000-d957-436b25bfa2a2","parent":{"ref":"EID6a3235ff-0175-1000-5178-a1ff0808646e"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:14:37Z","duration":0,"status":"PASSED"},{"id":"EID6a3238fb-0175-1000-fd27-df61123e08a2","parent":{"ref":"EID6a3235ff-0175-1000-5178-a1ff0808646e"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:14:37Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4383d5b9-134c-44e4-8fe3-542c813368b6"},{"ref":"EID01c9055e-986a-4a60-9e36-1fc7efa0bd2c"},{"ref":"EIDface214f-aff6-4608-9788-b9d09b93d5d2"}]},"parent":{"ref":"EID6a3235ff-0175-1000-9c64-390fb83d9f28"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:14:36Z","duration":550,"status":"PASSED"},{"id":"EID6a3238fb-0175-1000-fa91-410ff4a42267","attachments":{"attachment":{"ref":"EID923396c4-18d3-44a4-b0b4-376c9f17b57d"}},"parent":{"ref":"EID6a3235ff-0175-1000-9c64-390fb83d9f28"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/63db16c5-c828-4922-95dd-5db67bc9c203.json"},"startTimestamp":"2020-10-27T13:14:37Z","duration":1,"status":"PASSED"},{"id":"EID6a323907-0175-1000-e80d-38b34a0a7553","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3239c0-0175-1000-ea0c-f0a912fd36de","parent":{"ref":"EID6a323907-0175-1000-e80d-38b34a0a7553"},"resultedFrom":{"ref":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a"},"startTimestamp":"2020-10-27T13:14:37Z","duration":0,"status":"PASSED"},{"id":"EID6a3239c0-0175-1000-3148-65eb095c4490","parent":{"ref":"EID6a323907-0175-1000-e80d-38b34a0a7553"},"resultedFrom":{"ref":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d"},"startTimestamp":"2020-10-27T13:14:37Z","duration":0,"status":"PASSED"},{"id":"EID6a3239c0-0175-1000-ca87-9c9f83b37533","parent":{"ref":"EID6a323907-0175-1000-e80d-38b34a0a7553"},"resultedFrom":{"ref":"EID234062a4-45c2-4013-9038-71b8cc9a7d36"},"startTimestamp":"2020-10-27T13:14:37Z","duration":0,"status":"PASSED"},{"id":"EID6a3239c0-0175-1000-9512-a1968d4be607","parent":{"ref":"EID6a323907-0175-1000-e80d-38b34a0a7553"},"resultedFrom":{"ref":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862"},"startTimestamp":"2020-10-27T13:14:37Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID25961dd1-418d-4acf-afc7-0100ad859219"},{"ref":"EID38161f3b-1eb8-4daa-a091-9cd82b664e99"},{"ref":"EID70d838e2-9fe6-4b28-a2d4-bc6d8d471c5f"}]},"parent":{"ref":"EID6a3235ff-0175-1000-9c64-390fb83d9f28"},"resultedFrom":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"startTimestamp":"2020-10-27T13:14:37Z","duration":104,"status":"PASSED"},{"id":"EID6a3239c0-0175-1000-88ed-57f6ddd4d80c","attachments":{"attachment":{"ref":"EIDb2fa7cbc-2c47-4cca-91bb-5fcbdce11123"}},"parent":{"ref":"EID6a3235ff-0175-1000-9c64-390fb83d9f28"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/18c66972-5d73-4718-8e9c-439d4032a9fe.json"},"startTimestamp":"2020-10-27T13:14:37Z","duration":1,"status":"PASSED"},{"id":"EID6a3239cb-0175-1000-6e03-4a659ab7249b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a323b42-0175-1000-ed48-496bfd2a15dd","parent":{"ref":"EID6a3239cb-0175-1000-6e03-4a659ab7249b"},"resultedFrom":{"ref":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42"},"startTimestamp":"2020-10-27T13:14:38Z","duration":0,"status":"PASSED"},{"id":"EID6a323b42-0175-1000-7da5-1cea3060d6e4","parent":{"ref":"EID6a3239cb-0175-1000-6e03-4a659ab7249b"},"resultedFrom":{"ref":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf"},"startTimestamp":"2020-10-27T13:14:38Z","duration":0,"status":"PASSED"},{"id":"EID6a323b42-0175-1000-2db7-04d7099a887a","parent":{"ref":"EID6a3239cb-0175-1000-6e03-4a659ab7249b"},"resultedFrom":{"ref":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9"},"startTimestamp":"2020-10-27T13:14:38Z","duration":0,"status":"PASSED"},{"id":"EID6a323b42-0175-1000-a87e-c59f5d76a2da","parent":{"ref":"EID6a3239cb-0175-1000-6e03-4a659ab7249b"},"resultedFrom":{"ref":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c"},"startTimestamp":"2020-10-27T13:14:38Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID31d50636-e384-48a9-8c5a-42f61dd34408"},{"ref":"EIDe933419c-f06f-4eca-84a3-f470f01ff5eb"},{"ref":"EID0dd6aede-a100-4643-ad24-fed7b20411ea"}]},"parent":{"ref":"EID6a3235ff-0175-1000-9c64-390fb83d9f28"},"resultedFrom":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"startTimestamp":"2020-10-27T13:14:37Z","duration":185,"status":"PASSED"}]},"parent":{"ref":"EID6a31c73f-0175-1000-ee79-fe47600ed59a"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:14:36Z","duration":1347,"status":"PASSED"}]},"parent":{"ref":"EIDb8603914-1b10-4434-90aa-a165c5e24064"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:14:08Z","duration":29699,"status":"PASSED_MANUAL"},{"id":"EID6a323b42-0175-1000-f524-96d6a12e79ed","testCaseResults":{"TestCaseResult":[{"id":"EID6a323b42-0175-1000-9584-0f2b7302c8cc","testStepResults":{"TestStepResult":[{"id":"EID6a323b43-0175-1000-5e03-26ad3d28ea89","parent":{"ref":"EID6a323b42-0175-1000-9584-0f2b7302c8cc"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:14:38Z","duration":0,"status":"PASSED"},{"id":"EID6a323b43-0175-1000-d475-30e6d4bb2996","parent":{"ref":"EID6a323b42-0175-1000-9584-0f2b7302c8cc"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:14:38Z","duration":490,"status":"PASSED"},{"id":"EID6a323b43-0175-1000-a9f4-5266d0af243f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a323dfb-0175-1000-a306-019ce6fdfc12","parent":{"ref":"EID6a323b43-0175-1000-a9f4-5266d0af243f"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:14:38Z","duration":0,"status":"PASSED"},{"id":"EID6a323dfb-0175-1000-8058-a93fe005af2f","parent":{"ref":"EID6a323b43-0175-1000-a9f4-5266d0af243f"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:14:38Z","duration":0,"status":"PASSED"},{"id":"EID6a323dfb-0175-1000-65ff-1292bfdfe5ce","parent":{"ref":"EID6a323b43-0175-1000-a9f4-5266d0af243f"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:14:38Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4d20861e-aac9-4d7f-bf85-6ee432766f83"},{"ref":"EID19944dc5-b0b9-4c7a-950e-9563c8e760d4"},{"ref":"EIDa48b866f-9057-4d27-bbbd-c44a905489cd"}]},"parent":{"ref":"EID6a323b42-0175-1000-9584-0f2b7302c8cc"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:14:38Z","duration":318,"status":"PASSED"},{"id":"EID6a323dfb-0175-1000-d971-e8467fcf7b82","attachments":{"attachment":{"ref":"EID6982f910-64b7-482c-99ef-5869a441138c"}},"parent":{"ref":"EID6a323b42-0175-1000-9584-0f2b7302c8cc"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:14:38Z","duration":0,"status":"PASSED"},{"id":"EID6a323e05-0175-1000-7e26-f6c80f366aff","parent":{"ref":"EID6a323b42-0175-1000-9584-0f2b7302c8cc"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:14:38Z","duration":40,"status":"PASSED"}]},"parent":{"ref":"EID6a323b42-0175-1000-f524-96d6a12e79ed"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:14:38Z","duration":748,"status":"PASSED"},{"id":"EID6a323e2e-0175-1000-f859-dd3d75355476","testStepResults":{"TestStepResult":[{"id":"EID6a323e2e-0175-1000-d8e2-3a7d10c4e9b6","parent":{"ref":"EID6a323e2e-0175-1000-f859-dd3d75355476"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:14:39Z","duration":1509,"status":"PASSED"},{"id":"EID6a323e2e-0175-1000-9dca-13c30fa8f0b9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3242a2-0175-1000-ce5c-cef5ab619451","parent":{"ref":"EID6a323e2e-0175-1000-9dca-13c30fa8f0b9"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:14:40Z","duration":0,"status":"PASSED"},{"id":"EID6a3242a2-0175-1000-fece-b0b3dc5833fb","parent":{"ref":"EID6a323e2e-0175-1000-9dca-13c30fa8f0b9"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:14:40Z","duration":0,"status":"PASSED"},{"id":"EID6a3242a2-0175-1000-e2f7-ee81334b1f33","parent":{"ref":"EID6a323e2e-0175-1000-9dca-13c30fa8f0b9"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:14:40Z","duration":0,"status":"PASSED"},{"id":"EID6a3242a2-0175-1000-b741-1fcf679a75be","parent":{"ref":"EID6a323e2e-0175-1000-9dca-13c30fa8f0b9"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:14:40Z","duration":0,"status":"PASSED"},{"id":"EID6a3242a2-0175-1000-73e3-bcb6a43f15b7","parent":{"ref":"EID6a323e2e-0175-1000-9dca-13c30fa8f0b9"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:14:40Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfb7a3568-acd3-438e-9c2c-2e0386709f16"},{"ref":"EIDaa0ef790-6ae3-49a5-be70-28c4800ec087"},{"ref":"EID17018638-dc37-43e3-b1dc-6f0fbdffbb7b"}]},"parent":{"ref":"EID6a323e2e-0175-1000-f859-dd3d75355476"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:14:39Z","duration":955,"status":"PASSED"}]},"parent":{"ref":"EID6a323b42-0175-1000-f524-96d6a12e79ed"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:14:39Z","duration":1151,"status":"PASSED"},{"id":"EID6a3242ad-0175-1000-7e8d-77995aeae16f","testStepResults":{"TestStepResult":[{"id":"EID6a3242ad-0175-1000-577c-2700cc6c0a61","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a32480c-0175-1000-900f-b78133a043ba","parent":{"ref":"EID6a3242ad-0175-1000-577c-2700cc6c0a61"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:14:41Z","duration":0,"status":"PASSED"},{"id":"EID6a32480c-0175-1000-ed74-c95e7b5a1656","parent":{"ref":"EID6a3242ad-0175-1000-577c-2700cc6c0a61"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:14:41Z","duration":0,"status":"PASSED"},{"id":"EID6a32480c-0175-1000-9d84-4443f0c3d91a","parent":{"ref":"EID6a3242ad-0175-1000-577c-2700cc6c0a61"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:14:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID069acb4f-e844-4fdf-9124-1b0f4478b655"},{"ref":"EID4b9d2b38-81ce-4fc6-833c-25c40949cd60"},{"ref":"EID549e7756-e6fe-4a1b-b6b2-d314a61b4d11"}]},"parent":{"ref":"EID6a3242ad-0175-1000-7e8d-77995aeae16f"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:14:40Z","duration":1313,"status":"PASSED"},{"id":"EID6a324827-0175-1000-e957-db61ba975c0e","attachments":{"attachment":{"ref":"EID103cab16-3820-4a51-85e0-819df9064b75"}},"parent":{"ref":"EID6a3242ad-0175-1000-7e8d-77995aeae16f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-27T13:14:41Z","duration":1,"status":"PASSED"},{"id":"EID6a324834-0175-1000-83d9-4691a26df1ae","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a324c52-0175-1000-7798-6980b89d8147","parent":{"ref":"EID6a324834-0175-1000-83d9-4691a26df1ae"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-27T13:14:42Z","duration":0,"status":"PASSED"},{"id":"EID6a324c52-0175-1000-7f64-cff104287e53","parent":{"ref":"EID6a324834-0175-1000-83d9-4691a26df1ae"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-27T13:14:42Z","duration":0,"status":"PASSED"},{"id":"EID6a324c52-0175-1000-eab8-5e8cec40543c","parent":{"ref":"EID6a324834-0175-1000-83d9-4691a26df1ae"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-27T13:14:42Z","duration":0,"status":"PASSED"},{"id":"EID6a324c52-0175-1000-0e5d-e9e1db44daee","parent":{"ref":"EID6a324834-0175-1000-83d9-4691a26df1ae"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-27T13:14:42Z","duration":0,"status":"PASSED"},{"id":"EID6a324c52-0175-1000-5707-217c0f451016","parent":{"ref":"EID6a324834-0175-1000-83d9-4691a26df1ae"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-27T13:14:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDecde86c8-8de8-4795-a3cd-13a269c530aa"},{"ref":"EIDebed6d9a-cbc7-4966-8e67-89f4bb204e78"},{"ref":"EID439a2947-bbfc-4e35-90aa-6fb44ebe96e5"}]},"parent":{"ref":"EID6a3242ad-0175-1000-7e8d-77995aeae16f"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-27T13:14:41Z","duration":502,"status":"PASSED"}]},"parent":{"ref":"EID6a323b42-0175-1000-f524-96d6a12e79ed"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:14:40Z","duration":2469,"status":"PASSED"},{"id":"EID6a324c52-0175-1000-3db4-f340e3136a09","testStepResults":{"TestStepResult":[{"id":"EID6a324c52-0175-1000-e085-cb6e94c4f4a2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a325035-0175-1000-9749-eff0a8c0d5a1","parent":{"ref":"EID6a324c52-0175-1000-e085-cb6e94c4f4a2"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:14:43Z","duration":0,"status":"PASSED"},{"id":"EID6a325035-0175-1000-bbca-39eedaf52545","parent":{"ref":"EID6a324c52-0175-1000-e085-cb6e94c4f4a2"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:14:43Z","duration":0,"status":"PASSED"},{"id":"EID6a325035-0175-1000-0745-aeb7f086093d","parent":{"ref":"EID6a324c52-0175-1000-e085-cb6e94c4f4a2"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:14:43Z","duration":0,"status":"PASSED"},{"id":"EID6a325035-0175-1000-408a-81796319032c","parent":{"ref":"EID6a324c52-0175-1000-e085-cb6e94c4f4a2"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:14:43Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID52ddf404-757a-4833-9a4a-8a584e7989c7"},{"ref":"EID6c83e7c8-0dcd-48c2-bea9-44288a987c4c"},{"ref":"EID4d9d6dde-b874-4d36-b3ec-bc0066f21482"}]},"parent":{"ref":"EID6a324c52-0175-1000-3db4-f340e3136a09"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:14:42Z","duration":870,"status":"PASSED"},{"id":"EID6a325035-0175-1000-ab44-e96583153942","attachments":{"attachment":{"ref":"EIDb08c1bd5-dc38-4e2f-9b97-6b2682d49b07"}},"parent":{"ref":"EID6a324c52-0175-1000-3db4-f340e3136a09"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-27T13:14:43Z","duration":1,"status":"PASSED"},{"id":"EID6a32506f-0175-1000-ef0e-843c250376c7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3252fb-0175-1000-d752-c33c95ff8b85","parent":{"ref":"EID6a32506f-0175-1000-ef0e-843c250376c7"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-27T13:14:44Z","duration":0,"status":"PASSED"},{"id":"EID6a3252fb-0175-1000-f95d-b11fa0dedc77","parent":{"ref":"EID6a32506f-0175-1000-ef0e-843c250376c7"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-27T13:14:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID407d00df-a53d-4d00-90cd-3602246b645e"},{"ref":"EIDe9a21d64-0f33-428e-8362-fbeb00eed8f1"}]},"parent":{"ref":"EID6a324c52-0175-1000-3db4-f340e3136a09"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-27T13:14:43Z","duration":583,"status":"PASSED"},{"id":"EID6a32585a-0175-1000-94a2-498c39743522","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a325c83-0175-1000-09db-2f09993a8885","parent":{"ref":"EID6a32585a-0175-1000-94a2-498c39743522"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-27T13:14:46Z","duration":0,"status":"PASSED"},{"id":"EID6a325c83-0175-1000-3acc-da9c3a73218b","parent":{"ref":"EID6a32585a-0175-1000-94a2-498c39743522"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-27T13:14:46Z","duration":0,"status":"PASSED"},{"id":"EID6a325c83-0175-1000-7362-f85d8bd81656","parent":{"ref":"EID6a32585a-0175-1000-94a2-498c39743522"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-27T13:14:46Z","duration":0,"status":"PASSED"},{"id":"EID6a325c83-0175-1000-7055-96cff79a76e3","messages":{"message":{"ref":"TR.manual.checkLengthOfDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6a32585a-0175-1000-94a2-498c39743522"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-27T13:14:46Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID154f0c81-7662-4a4f-82c1-41ec3054fdf9"},{"ref":"EIDdae6694d-e316-4180-8500-f4796c758442"},{"ref":"EIDaabaf912-09e8-4835-9af5-913162e4cef0"}]},"parent":{"ref":"EID6a324c52-0175-1000-3db4-f340e3136a09"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-27T13:14:45Z","duration":961,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a323b42-0175-1000-f524-96d6a12e79ed"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:14:42Z","duration":4146,"status":"PASSED_MANUAL"},{"id":"EID6a325c84-0175-1000-471e-aac4b0a1f6dc","testStepResults":{"TestStepResult":{"id":"EID6a325c84-0175-1000-2890-400691578b8c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3263ce-0175-1000-9271-0f2eced7f250","parent":{"ref":"EID6a325c84-0175-1000-2890-400691578b8c"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:14:48Z","duration":0,"status":"PASSED"},{"id":"EID6a3263ce-0175-1000-0e0c-2b4449b920fe","parent":{"ref":"EID6a325c84-0175-1000-2890-400691578b8c"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:14:48Z","duration":0,"status":"PASSED"},{"id":"EID6a3263ce-0175-1000-1fc3-9e1ae015911d","parent":{"ref":"EID6a325c84-0175-1000-2890-400691578b8c"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:14:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9d1174a4-ab40-40bf-a74d-0eca9a7db149"},{"ref":"EID72593dd6-9c16-456c-9f5d-5edda34312c8"},{"ref":"EID7ad3eeaf-246c-498b-ab0d-6eb3390bc599"}]},"parent":{"ref":"EID6a325c84-0175-1000-471e-aac4b0a1f6dc"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:14:46Z","duration":1799,"status":"PASSED"}},"parent":{"ref":"EID6a323b42-0175-1000-f524-96d6a12e79ed"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:14:46Z","duration":1866,"status":"PASSED"},{"id":"EID6a3263cf-0175-1000-078a-28908da9f7da","testStepResults":{"TestStepResult":{"id":"EID6a3263cf-0175-1000-dff1-8414baa1a01f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a326726-0175-1000-248e-851f0e38113e","parent":{"ref":"EID6a3263cf-0175-1000-dff1-8414baa1a01f"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:14:49Z","duration":0,"status":"PASSED"},{"id":"EID6a326726-0175-1000-c3bf-ea7fc7b5440c","parent":{"ref":"EID6a3263cf-0175-1000-dff1-8414baa1a01f"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:14:49Z","duration":0,"status":"PASSED"},{"id":"EID6a326726-0175-1000-9c0e-8bb225fe315b","parent":{"ref":"EID6a3263cf-0175-1000-dff1-8414baa1a01f"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:14:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID14edb577-a267-4145-9794-c8342254951a"},{"ref":"EIDdae287f0-9982-4d16-b5ad-b262882ffca1"},{"ref":"EIDc5a550f0-f128-4632-93cb-d998aa650ee1"}]},"parent":{"ref":"EID6a3263cf-0175-1000-078a-28908da9f7da"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:14:48Z","duration":688,"status":"PASSED"}},"parent":{"ref":"EID6a323b42-0175-1000-f524-96d6a12e79ed"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:14:48Z","duration":911,"status":"PASSED"},{"id":"EID6a32675e-0175-1000-6d8b-8894c25c5032","testStepResults":{"TestStepResult":{"id":"EID6a32675e-0175-1000-a5cb-273afa0a7743","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a326c34-0175-1000-2f4f-c0ab3777d462","parent":{"ref":"EID6a32675e-0175-1000-a5cb-273afa0a7743"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:14:50Z","duration":0,"status":"PASSED"},{"id":"EID6a326c34-0175-1000-bbe0-8bc5dff61e07","parent":{"ref":"EID6a32675e-0175-1000-a5cb-273afa0a7743"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:14:50Z","duration":0,"status":"PASSED"},{"id":"EID6a326c34-0175-1000-30ab-cdb7ca87162c","parent":{"ref":"EID6a32675e-0175-1000-a5cb-273afa0a7743"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:14:50Z","duration":0,"status":"PASSED"},{"id":"EID6a326c34-0175-1000-482d-0996718fbb01","parent":{"ref":"EID6a32675e-0175-1000-a5cb-273afa0a7743"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:14:50Z","duration":0,"status":"PASSED"},{"id":"EID6a326c34-0175-1000-0fce-c5175c6a694b","parent":{"ref":"EID6a32675e-0175-1000-a5cb-273afa0a7743"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:14:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7a5680ee-e12b-414c-8365-92dbf76ab681"},{"ref":"EIDefdc7823-f45b-4e86-92f0-cc14b6bdd6df"},{"ref":"EIDd54392ee-08b9-4f67-b1be-5f3b09e865f0"}]},"parent":{"ref":"EID6a32675e-0175-1000-6d8b-8894c25c5032"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:14:49Z","duration":1113,"status":"PASSED"}},"parent":{"ref":"EID6a323b42-0175-1000-f524-96d6a12e79ed"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:14:49Z","duration":1238,"status":"PASSED"},{"id":"EID6a326c35-0175-1000-56af-6e8dcaba8d6d","testStepResults":{"TestStepResult":{"id":"EID6a326c35-0175-1000-8f7b-708b0c969b62","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a326df4-0175-1000-ad1f-99d0fd3ab33e","parent":{"ref":"EID6a326c35-0175-1000-8f7b-708b0c969b62"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:14:51Z","duration":0,"status":"PASSED"},{"id":"EID6a326df4-0175-1000-e7e1-44829166e6e9","parent":{"ref":"EID6a326c35-0175-1000-8f7b-708b0c969b62"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:14:51Z","duration":0,"status":"PASSED"},{"id":"EID6a326df4-0175-1000-970a-25ad294f572f","parent":{"ref":"EID6a326c35-0175-1000-8f7b-708b0c969b62"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:14:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDaa03a901-bd4f-4522-8b13-70bcab751eb6"},{"ref":"EID3ee1bd93-44f8-42f4-9122-29b217bbb2fa"},{"ref":"EIDcbf31b37-d829-464a-a123-50263c0462fa"}]},"parent":{"ref":"EID6a326c35-0175-1000-56af-6e8dcaba8d6d"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:14:50Z","duration":387,"status":"PASSED"}},"parent":{"ref":"EID6a323b42-0175-1000-f524-96d6a12e79ed"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:14:50Z","duration":458,"status":"PASSED"},{"id":"EID6a326e00-0175-1000-9817-f69eaca6a161","testStepResults":{"TestStepResult":{"id":"EID6a326e00-0175-1000-e6e2-4bb38e792c17","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3272ac-0175-1000-66df-78721d4b18cf","parent":{"ref":"EID6a326e00-0175-1000-e6e2-4bb38e792c17"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:14:52Z","duration":0,"status":"PASSED"},{"id":"EID6a3272ac-0175-1000-9e0b-672a8edcc981","parent":{"ref":"EID6a326e00-0175-1000-e6e2-4bb38e792c17"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:14:52Z","duration":0,"status":"PASSED"},{"id":"EID6a3272ac-0175-1000-e31e-5a88a1e95467","parent":{"ref":"EID6a326e00-0175-1000-e6e2-4bb38e792c17"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:14:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa37d8e76-f911-4a74-be37-efc8232e2364"},{"ref":"EID28b9161e-e6ce-4b26-aff9-4647fc49ba9b"},{"ref":"EIDace362c0-f8c9-41b0-a4a3-5b3501253c01"}]},"parent":{"ref":"EID6a326e00-0175-1000-9817-f69eaca6a161"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:14:51Z","duration":1127,"status":"PASSED"}},"parent":{"ref":"EID6a323b42-0175-1000-f524-96d6a12e79ed"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:14:51Z","duration":1196,"status":"PASSED"},{"id":"EID6a3272b5-0175-1000-820d-b9a81e95bd7b","testStepResults":{"TestStepResult":{"id":"EID6a3272b5-0175-1000-b3b4-dbab9ffaac86","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a327609-0175-1000-a240-55f5984867ae","parent":{"ref":"EID6a3272b5-0175-1000-b3b4-dbab9ffaac86"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:14:53Z","duration":0,"status":"PASSED"},{"id":"EID6a327609-0175-1000-72db-28633dbe6de5","parent":{"ref":"EID6a3272b5-0175-1000-b3b4-dbab9ffaac86"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:14:53Z","duration":0,"status":"PASSED"},{"id":"EID6a327609-0175-1000-a16c-553aee8df1ae","parent":{"ref":"EID6a3272b5-0175-1000-b3b4-dbab9ffaac86"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:14:53Z","duration":0,"status":"PASSED"},{"id":"EID6a327609-0175-1000-7fa5-8ebb0eb5fc0b","parent":{"ref":"EID6a3272b5-0175-1000-b3b4-dbab9ffaac86"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:14:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID760ca780-931e-436f-905e-5717e5490ee8"},{"ref":"EID2dbca244-70c4-4eba-a2e0-30b6b3adbf75"},{"ref":"EID45a1c45a-6247-4166-b264-0e1fb7c705d5"}]},"parent":{"ref":"EID6a3272b5-0175-1000-820d-b9a81e95bd7b"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:14:52Z","duration":728,"status":"PASSED"}},"parent":{"ref":"EID6a323b42-0175-1000-f524-96d6a12e79ed"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:14:52Z","duration":852,"status":"PASSED"},{"id":"EID6a327609-0175-1000-088b-ba5cbfb6f893","testStepResults":{"TestStepResult":{"id":"EID6a327609-0175-1000-f8b1-aa49709c2703","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a327cc9-0175-1000-2d08-a79fd416bbc8","parent":{"ref":"EID6a327609-0175-1000-f8b1-aa49709c2703"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:14:55Z","duration":0,"status":"PASSED"},{"id":"EID6a327cc9-0175-1000-11ab-cc6ee78fa84f","parent":{"ref":"EID6a327609-0175-1000-f8b1-aa49709c2703"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:14:55Z","duration":0,"status":"PASSED"},{"id":"EID6a327cc9-0175-1000-6407-ca92ffd1e522","parent":{"ref":"EID6a327609-0175-1000-f8b1-aa49709c2703"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:14:55Z","duration":0,"status":"PASSED"},{"id":"EID6a327cc9-0175-1000-ca8c-24dde733fb1c","parent":{"ref":"EID6a327609-0175-1000-f8b1-aa49709c2703"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:14:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbf72a87d-92ec-4c45-a663-e4218f6ab903"},{"ref":"EIDa0f173e6-9d31-4dde-bd53-74ad0694b44e"},{"ref":"EIDcdb83242-e09c-4ebd-b087-45d45c7b0d8d"}]},"parent":{"ref":"EID6a327609-0175-1000-088b-ba5cbfb6f893"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:14:53Z","duration":1659,"status":"PASSED"}},"parent":{"ref":"EID6a323b42-0175-1000-f524-96d6a12e79ed"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:14:53Z","duration":1728,"status":"PASSED"},{"id":"EID6a327cc9-0175-1000-8f93-222b8d493e34","testStepResults":{"TestStepResult":[{"id":"EID6a327cd2-0175-1000-1f5f-6e5ab30b03b6","parent":{"ref":"EID6a327cc9-0175-1000-8f93-222b8d493e34"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:14:55Z","duration":0,"status":"PASSED"},{"id":"EID6a327cd2-0175-1000-2828-83321de9e6e1","parent":{"ref":"EID6a327cc9-0175-1000-8f93-222b8d493e34"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:14:55Z","duration":2721,"status":"PASSED"},{"id":"EID6a327cd2-0175-1000-7a67-23c43d7d3a3d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a327fa7-0175-1000-ff81-7edb09b1e132","parent":{"ref":"EID6a327cd2-0175-1000-7a67-23c43d7d3a3d"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:14:55Z","duration":0,"status":"PASSED"},{"id":"EID6a327fa7-0175-1000-3499-8155022d4c99","parent":{"ref":"EID6a327cd2-0175-1000-7a67-23c43d7d3a3d"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:14:55Z","duration":0,"status":"PASSED"},{"id":"EID6a327fa7-0175-1000-3ea0-8fb57b510668","parent":{"ref":"EID6a327cd2-0175-1000-7a67-23c43d7d3a3d"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:14:55Z","duration":0,"status":"PASSED"},{"id":"EID6a327fa7-0175-1000-7249-d626d08f6baa","parent":{"ref":"EID6a327cd2-0175-1000-7a67-23c43d7d3a3d"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:14:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa002a22b-90d0-469b-88c4-e698804e26b9"},{"ref":"EID11c8876d-c5e5-4edd-8305-e2a1b3eeb6c6"},{"ref":"EID1e851476-e3f4-4944-896e-fd165a164ea8"}]},"parent":{"ref":"EID6a327cc9-0175-1000-8f93-222b8d493e34"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:14:55Z","duration":526,"status":"PASSED"},{"id":"EID6a327fa7-0175-1000-db89-b0c7f4bbb955","attachments":{"attachment":{"ref":"EIDaefaae05-1a5e-44fa-8a24-448c06537b92"}},"parent":{"ref":"EID6a327cc9-0175-1000-8f93-222b8d493e34"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:14:55Z","duration":1,"status":"PASSED"},{"id":"EID6a327fca-0175-1000-9f45-e9f9d68bb7c4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a328330-0175-1000-a0ca-c2fc3f85e9e7","parent":{"ref":"EID6a327fca-0175-1000-9f45-e9f9d68bb7c4"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:14:56Z","duration":0,"status":"PASSED"},{"id":"EID6a328330-0175-1000-2f3d-7b332b76805a","parent":{"ref":"EID6a327fca-0175-1000-9f45-e9f9d68bb7c4"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:14:56Z","duration":0,"status":"PASSED"},{"id":"EID6a328330-0175-1000-345a-64b792b23e05","parent":{"ref":"EID6a327fca-0175-1000-9f45-e9f9d68bb7c4"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:14:56Z","duration":0,"status":"PASSED"},{"id":"EID6a328330-0175-1000-5115-1926c9204af8","parent":{"ref":"EID6a327fca-0175-1000-9f45-e9f9d68bb7c4"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:14:56Z","duration":0,"status":"PASSED"},{"id":"EID6a328330-0175-1000-8a9a-1fcb860a739d","parent":{"ref":"EID6a327fca-0175-1000-9f45-e9f9d68bb7c4"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:14:56Z","duration":0,"status":"PASSED"},{"id":"EID6a328330-0175-1000-b615-de98a66ad576","parent":{"ref":"EID6a327fca-0175-1000-9f45-e9f9d68bb7c4"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:14:56Z","duration":0,"status":"PASSED"},{"id":"EID6a328330-0175-1000-37b3-11902ed34ffd","parent":{"ref":"EID6a327fca-0175-1000-9f45-e9f9d68bb7c4"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:14:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID42c6e04e-3c92-46e2-af25-a8007df44883"},{"ref":"EID2c4681ee-867f-403d-a849-9197191217a7"},{"ref":"EID329d86b5-8b28-4161-aec7-d8d634c52782"}]},"parent":{"ref":"EID6a327cc9-0175-1000-8f93-222b8d493e34"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:14:55Z","duration":771,"status":"PASSED"}]},"parent":{"ref":"EID6a323b42-0175-1000-f524-96d6a12e79ed"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:14:55Z","duration":1639,"status":"PASSED"},{"id":"EID6a328331-0175-1000-ecff-d08153ef876a","testStepResults":{"TestStepResult":[{"id":"EID6a328331-0175-1000-db52-714cfbffb062","parent":{"ref":"EID6a328331-0175-1000-ecff-d08153ef876a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:14:56Z","duration":0,"status":"PASSED"},{"id":"EID6a328331-0175-1000-a51c-e50e931706de","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a328448-0175-1000-d33d-98d9ee2b8fce","parent":{"ref":"EID6a328331-0175-1000-a51c-e50e931706de"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:14:56Z","duration":0,"status":"PASSED"},{"id":"EID6a328448-0175-1000-42ce-f6ee59c8e442","parent":{"ref":"EID6a328331-0175-1000-a51c-e50e931706de"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:14:56Z","duration":0,"status":"PASSED"},{"id":"EID6a328448-0175-1000-be8b-738a02e1161e","parent":{"ref":"EID6a328331-0175-1000-a51c-e50e931706de"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:14:56Z","duration":0,"status":"PASSED"},{"id":"EID6a328448-0175-1000-d5f3-28cd3bd591a4","parent":{"ref":"EID6a328331-0175-1000-a51c-e50e931706de"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:14:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDeba2f5aa-409d-4c94-8a7d-0684a9743e32"},{"ref":"EID1889d1a5-e69a-4ee3-939d-d5a665dd557d"},{"ref":"EID7a971bc8-97f8-4946-9ed9-fa500b1d0b2a"}]},"parent":{"ref":"EID6a328331-0175-1000-ecff-d08153ef876a"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:14:56Z","duration":43,"status":"PASSED"},{"id":"EID6a328448-0175-1000-8fcb-7744d837045b","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a32845c-0175-1000-a626-30a10634e369","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3284d9-0175-1000-97f3-7d6fce9a14be","parent":{"ref":"EID6a32845c-0175-1000-a626-30a10634e369"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6a3284d9-0175-1000-2785-6ca6aa373397","parent":{"ref":"EID6a32845c-0175-1000-a626-30a10634e369"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6a3284d9-0175-1000-1698-d9c0b39e32b7","parent":{"ref":"EID6a32845c-0175-1000-a626-30a10634e369"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:14:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID774e6475-fb4b-4736-a0d8-8e1742d9f7be"},{"ref":"EID64fe7d42-5bf1-4b90-a1e2-84ad1e29da20"},{"ref":"EIDcee7c6a5-776a-461c-8f5d-5c3b1c84c011"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:14:56Z","duration":41,"status":"PASSED"},{"id":"EID6a3284e3-0175-1000-68a6-83dd41ee1a8f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a328550-0175-1000-a678-6e35fefc884b","parent":{"ref":"EID6a3284e3-0175-1000-68a6-83dd41ee1a8f"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6a328550-0175-1000-d490-834f7d523f69","parent":{"ref":"EID6a3284e3-0175-1000-68a6-83dd41ee1a8f"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6a328550-0175-1000-4f66-8ba025b1941c","parent":{"ref":"EID6a3284e3-0175-1000-68a6-83dd41ee1a8f"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:14:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1a374808-f544-4d07-9d73-83ab3821349d"},{"ref":"EID04f65d0b-c23b-4371-aa67-36383b7a22f4"},{"ref":"EIDeba9484d-a63c-4afd-9522-e32f1b9f350e"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:14:57Z","duration":52,"status":"PASSED"},{"id":"EID6a328551-0175-1000-f16a-409b51527c92","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3285ab-0175-1000-e21a-68b0e1c987bf","parent":{"ref":"EID6a328551-0175-1000-f16a-409b51527c92"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6a3285ab-0175-1000-9f03-10683e06e569","parent":{"ref":"EID6a328551-0175-1000-f16a-409b51527c92"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6a3285ab-0175-1000-a6e8-a7f23f818d89","parent":{"ref":"EID6a328551-0175-1000-f16a-409b51527c92"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:14:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5e056d4c-3bf1-4bf6-9483-de8fcc16302c"},{"ref":"EID9e126298-cc0a-4147-a9c3-29007ab0c29f"},{"ref":"EIDb6eda842-cdec-4cd6-b99b-7beea382db12"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:14:57Z","duration":42,"status":"PASSED"}]},"parent":{"ref":"EID6a328331-0175-1000-ecff-d08153ef876a"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:14:56Z","duration":356,"status":"PASSED"},{"id":"EID6a3285ac-0175-1000-cf19-7d1a66ac191d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3287bd-0175-1000-c640-8bf3fef9124f","parent":{"ref":"EID6a3285ac-0175-1000-cf19-7d1a66ac191d"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6a3287bd-0175-1000-db37-a6100f10468e","parent":{"ref":"EID6a3285ac-0175-1000-cf19-7d1a66ac191d"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6a3287bd-0175-1000-57d8-85224b80115b","parent":{"ref":"EID6a3285ac-0175-1000-cf19-7d1a66ac191d"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:14:57Z","duration":0,"status":"PASSED"},{"id":"EID6a3287bd-0175-1000-726a-51f32a9d388c","parent":{"ref":"EID6a3285ac-0175-1000-cf19-7d1a66ac191d"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:14:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2a0e4ed8-339e-4edd-8ffa-85e61e1a8063"},{"ref":"EIDb90dac19-96c3-4e4e-9d0d-5d877c5d417c"},{"ref":"EID3fb92d61-6d06-4fdb-b799-59ef25bcfed2"}]},"parent":{"ref":"EID6a328331-0175-1000-ecff-d08153ef876a"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:14:57Z","duration":464,"status":"PASSED"}]},"parent":{"ref":"EID6a323b42-0175-1000-f524-96d6a12e79ed"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:14:56Z","duration":1164,"status":"PASSED"},{"id":"EID6a3287bd-0175-1000-34ef-11def168e888","testStepResults":{"TestStepResult":{"id":"EID6a3287bd-0175-1000-c5c8-77998b2b8c98","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a328bba-0175-1000-9675-46e7e1b6bddb","parent":{"ref":"EID6a3287bd-0175-1000-c5c8-77998b2b8c98"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:14:58Z","duration":0,"status":"PASSED"},{"id":"EID6a328bba-0175-1000-7680-672e5ff19a93","parent":{"ref":"EID6a3287bd-0175-1000-c5c8-77998b2b8c98"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:14:58Z","duration":0,"status":"PASSED"},{"id":"EID6a328bba-0175-1000-5505-2703dedde0ec","parent":{"ref":"EID6a3287bd-0175-1000-c5c8-77998b2b8c98"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:14:58Z","duration":0,"status":"PASSED"},{"id":"EID6a328bba-0175-1000-85ae-a32fe2a77370","parent":{"ref":"EID6a3287bd-0175-1000-c5c8-77998b2b8c98"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:14:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa07fd13c-04d7-41dc-ac62-fab812cab0eb"},{"ref":"EID5614ad8f-938f-4e46-bb1e-917ae6286987"},{"ref":"EID619210c2-b69b-4203-b0ad-2ac25baecabe"}]},"parent":{"ref":"EID6a3287bd-0175-1000-34ef-11def168e888"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:14:57Z","duration":932,"status":"PASSED"}},"parent":{"ref":"EID6a323b42-0175-1000-f524-96d6a12e79ed"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:14:57Z","duration":1044,"status":"PASSED"}]},"parent":{"ref":"EIDb8603914-1b10-4434-90aa-a165c5e24064"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:14:38Z","duration":20624,"status":"PASSED_MANUAL"},{"id":"EID6a328bd2-0175-1000-ddfa-cdaffbfa4ab9","testCaseResults":{"TestCaseResult":[{"id":"EID6a328bd2-0175-1000-24da-c5bfa55f972b","testStepResults":{"TestStepResult":[{"id":"EID6a328bd2-0175-1000-6123-1ffdcd4dc6b7","parent":{"ref":"EID6a328bd2-0175-1000-24da-c5bfa55f972b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:14:58Z","duration":1946,"status":"PASSED"},{"id":"EID6a328bd2-0175-1000-eb06-f61adb6095f9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a329204-0175-1000-102a-27b8cd4f192a","parent":{"ref":"EID6a328bd2-0175-1000-eb06-f61adb6095f9"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-27T13:15:00Z","duration":0,"status":"PASSED"},{"id":"EID6a329204-0175-1000-a602-b264d35b10c0","parent":{"ref":"EID6a328bd2-0175-1000-eb06-f61adb6095f9"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-27T13:15:00Z","duration":0,"status":"PASSED"},{"id":"EID6a329204-0175-1000-aef1-7ccd5454b6b5","parent":{"ref":"EID6a328bd2-0175-1000-eb06-f61adb6095f9"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-27T13:15:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID878d90f6-7b9b-4df3-865f-fc543aff0d0d"},{"ref":"EID9eba1b20-e41d-4991-ad78-ec4896b4f196"},{"ref":"EID34e6ad22-1ed0-4f7c-b95f-3074ac4b35aa"}]},"parent":{"ref":"EID6a328bd2-0175-1000-24da-c5bfa55f972b"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-27T13:14:58Z","duration":1403,"status":"PASSED"},{"id":"EID6a32921c-0175-1000-c379-f1a81f1accc8","attachments":{"attachment":{"ref":"EID618db839-59c9-47ba-82d5-e23e199ca4fd"}},"parent":{"ref":"EID6a328bd2-0175-1000-24da-c5bfa55f972b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-27T13:15:00Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6a328bd2-0175-1000-ddfa-cdaffbfa4ab9"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:14:58Z","duration":1624,"status":"PASSED"},{"id":"EID6a329231-0175-1000-d399-60e4be7ae134","testStepResults":{"TestStepResult":[{"id":"EID6a329231-0175-1000-9d45-e21bfb88ceb3","parent":{"ref":"EID6a329231-0175-1000-d399-60e4be7ae134"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:15:00Z","duration":1966,"status":"PASSED"},{"id":"EID6a329245-0175-1000-848d-7155d50e3dc9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a329304-0175-1000-d114-c7a80ebfb0aa","parent":{"ref":"EID6a329245-0175-1000-848d-7155d50e3dc9"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-27T13:15:00Z","duration":0,"status":"PASSED"},{"id":"EID6a329304-0175-1000-fc90-133b73c13835","parent":{"ref":"EID6a329245-0175-1000-848d-7155d50e3dc9"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-27T13:15:00Z","duration":0,"status":"PASSED"},{"id":"EID6a329304-0175-1000-f8d2-bea79052a7d9","parent":{"ref":"EID6a329245-0175-1000-848d-7155d50e3dc9"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-27T13:15:00Z","duration":0,"status":"PASSED"},{"id":"EID6a329304-0175-1000-3ecd-fde06f83c768","parent":{"ref":"EID6a329245-0175-1000-848d-7155d50e3dc9"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-27T13:15:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4687363a-749f-40a8-a163-2877c6686b32"},{"ref":"EIDe5fecd00-f590-4988-bed5-7dc2779e0e57"},{"ref":"EID710d0140-7d35-4378-9c00-124fa9f47931"}]},"parent":{"ref":"EID6a329231-0175-1000-d399-60e4be7ae134"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-27T13:15:00Z","duration":77,"status":"PASSED"}]},"parent":{"ref":"EID6a328bd2-0175-1000-ddfa-cdaffbfa4ab9"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:15:00Z","duration":221,"status":"PASSED"},{"id":"EID6a32930e-0175-1000-5f95-66f02cfaed1c","testStepResults":{"TestStepResult":[{"id":"EID6a32930e-0175-1000-71b5-8762923a675a","parent":{"ref":"EID6a32930e-0175-1000-5f95-66f02cfaed1c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:15:00Z","duration":1946,"status":"PASSED"},{"id":"EID6a32930e-0175-1000-ba68-bb1129e67cfa","parent":{"ref":"EID6a32930e-0175-1000-5f95-66f02cfaed1c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-27T13:15:00Z","duration":0,"status":"PASSED"},{"id":"EID6a32930f-0175-1000-34e3-9797b50a5c1b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a32940f-0175-1000-0d7b-97da601e62d1","parent":{"ref":"EID6a32930f-0175-1000-34e3-9797b50a5c1b"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-27T13:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6a32940f-0175-1000-ff32-652c9fbe9229","parent":{"ref":"EID6a32930f-0175-1000-34e3-9797b50a5c1b"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-27T13:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6a32940f-0175-1000-110e-b820fd2a0353","parent":{"ref":"EID6a32930f-0175-1000-34e3-9797b50a5c1b"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-27T13:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6a32940f-0175-1000-1414-610de829b001","parent":{"ref":"EID6a32930f-0175-1000-34e3-9797b50a5c1b"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-27T13:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6a32940f-0175-1000-f671-28c29e781a30","parent":{"ref":"EID6a32930f-0175-1000-34e3-9797b50a5c1b"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-27T13:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6a32940f-0175-1000-7d27-f409fd9f2cf8","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}}},"parent":{"ref":"EID6a32930f-0175-1000-34e3-9797b50a5c1b"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-27T13:15:01Z","duration":0,"status":"FAILED"},{"id":"EID6a32940f-0175-1000-f881-78e8606d5f14","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6a32930f-0175-1000-34e3-9797b50a5c1b"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-27T13:15:01Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID233881f0-5867-426b-ae8e-4632d1e64412"},{"ref":"EID67d021b7-5a25-420d-b82d-cb2c1500ef35"},{"ref":"EIDf8410dd3-4bf4-4043-84b1-43abda1d8925"}]},"parent":{"ref":"EID6a32930e-0175-1000-5f95-66f02cfaed1c"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-27T13:15:00Z","duration":101,"status":"FAILED"}]},"parent":{"ref":"EID6a328bd2-0175-1000-ddfa-cdaffbfa4ab9"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:15:00Z","duration":257,"status":"FAILED"},{"id":"EID6a32940f-0175-1000-4496-f2b653e6814a","testStepResults":{"TestStepResult":[{"id":"EID6a329410-0175-1000-ccdb-2a8b138405d4","parent":{"ref":"EID6a32940f-0175-1000-4496-f2b653e6814a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:15:01Z","duration":1946,"status":"PASSED"},{"id":"EID6a329410-0175-1000-a89e-eb910ba8c373","parent":{"ref":"EID6a32940f-0175-1000-4496-f2b653e6814a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-27T13:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6a329410-0175-1000-b74c-2738a8e68de3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3294be-0175-1000-46cd-b367e58a46bd","parent":{"ref":"EID6a329410-0175-1000-b74c-2738a8e68de3"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-27T13:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6a3294be-0175-1000-98a6-3d186fa3950a","parent":{"ref":"EID6a329410-0175-1000-b74c-2738a8e68de3"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-27T13:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6a3294be-0175-1000-104f-d3fbf6270f1a","parent":{"ref":"EID6a329410-0175-1000-b74c-2738a8e68de3"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-27T13:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6a3294be-0175-1000-00bc-e82a433fa158","parent":{"ref":"EID6a329410-0175-1000-b74c-2738a8e68de3"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-27T13:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6a3294be-0175-1000-de64-c0e0bd422e33","parent":{"ref":"EID6a329410-0175-1000-b74c-2738a8e68de3"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-27T13:15:01Z","duration":0,"status":"PASSED"},{"id":"EID6a3294be-0175-1000-c19f-ebd2df451656","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6a329410-0175-1000-b74c-2738a8e68de3"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-27T13:15:01Z","duration":1,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID16e868a2-f0cf-41d6-9f57-20164ca50c44"},{"ref":"EID1e0cc263-dde1-4a46-956a-b877d1be55e1"},{"ref":"EID9736b951-df79-47c1-9100-bed107eff994"}]},"parent":{"ref":"EID6a32940f-0175-1000-4496-f2b653e6814a"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-27T13:15:01Z","duration":82,"status":"FAILED"}]},"parent":{"ref":"EID6a328bd2-0175-1000-ddfa-cdaffbfa4ab9"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:15:01Z","duration":176,"status":"FAILED"},{"id":"EID6a3294c5-0175-1000-80e6-f6a78ee55dc0","testStepResults":{"TestStepResult":[{"id":"EID6a3294da-0175-1000-3427-809828c1c97f","parent":{"ref":"EID6a3294c5-0175-1000-80e6-f6a78ee55dc0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:15:01Z","duration":1946,"status":"PASSED"},{"id":"EID6a3294db-0175-1000-4f14-683fdb2f6b19","messages":{"message":[{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}},{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}]},"attachments":{"attachment":[{"ref":"EID9b565b77-0437-4d60-93a1-6f3e601f306c"},{"ref":"EIDc7e1db8a-41e9-4cb3-b2e6-314c6d2bb604"},{"ref":"EID99dc77d2-11b1-4c13-a708-5b2de5a06d1a"},{"ref":"EID5a0634ac-2982-4aee-8331-b89f1b8ca2df"},{"ref":"EID1f1e4238-6e31-4345-b2c4-cc6799be60ce"},{"ref":"EIDf7464242-1eb5-428d-9e74-25fe3a5a5d36"},{"ref":"EID31d7f835-c17a-4c6b-8a70-cfb91bd772b1"},{"ref":"EID916dd09d-a52b-4f87-bfaa-61224889a3b3"},{"ref":"EID9f63f8a3-cb7d-4797-806d-0f20a7e4021b"},{"ref":"EID0672b21c-7a04-4fe9-88e8-d90a24074933"},{"ref":"EID5ac2c9cc-22f1-440e-a1c6-dd5b80d58eae"},{"ref":"EID65accf6f-344b-468f-bd3c-2ffa5158887e"},{"ref":"EID41b80089-56d3-42aa-a837-e981185178d4"},{"ref":"EID85cf27b8-5efe-4e93-a448-bbafbb835e47"},{"ref":"EID0cde8702-a2e5-412a-b277-f17c50ec1465"}]},"parent":{"ref":"EID6a3294c5-0175-1000-80e6-f6a78ee55dc0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-27T13:15:01Z","duration":7080,"status":"SKIPPED"}]},"parent":{"ref":"EID6a328bd2-0175-1000-ddfa-cdaffbfa4ab9"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:15:01Z","duration":7419,"status":"SKIPPED"},{"id":"EID6a32b1c1-0175-1000-c3ef-1a2919a4e9ee","testStepResults":{"TestStepResult":[{"id":"EID6a32b1c1-0175-1000-6ea5-de98d665480d","parent":{"ref":"EID6a32b1c1-0175-1000-c3ef-1a2919a4e9ee"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:15:08Z","duration":1946,"status":"PASSED"},{"id":"EID6a32b1c1-0175-1000-2f28-09a0b9e72f59","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a32b262-0175-1000-e50a-2e8967c2d4f2","parent":{"ref":"EID6a32b1c1-0175-1000-2f28-09a0b9e72f59"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-27T13:15:08Z","duration":0,"status":"PASSED"},{"id":"EID6a32b262-0175-1000-6d7d-800b1292843d","parent":{"ref":"EID6a32b1c1-0175-1000-2f28-09a0b9e72f59"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-27T13:15:08Z","duration":0,"status":"PASSED"},{"id":"EID6a32b262-0175-1000-f484-68f287c5b7fd","parent":{"ref":"EID6a32b1c1-0175-1000-2f28-09a0b9e72f59"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-27T13:15:08Z","duration":0,"status":"PASSED"},{"id":"EID6a32b262-0175-1000-6cd7-b526965d9f5a","parent":{"ref":"EID6a32b1c1-0175-1000-2f28-09a0b9e72f59"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-27T13:15:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa152be18-386f-472a-a3bc-29f92db51918"},{"ref":"EID08a317d4-07b0-4484-97d7-29c87c964e59"},{"ref":"EIDd65a9c6e-82b2-434d-a9a1-11a23bb5fc35"}]},"parent":{"ref":"EID6a32b1c1-0175-1000-c3ef-1a2919a4e9ee"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-27T13:15:08Z","duration":79,"status":"PASSED"}]},"parent":{"ref":"EID6a328bd2-0175-1000-ddfa-cdaffbfa4ab9"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:15:08Z","duration":162,"status":"PASSED"},{"id":"EID6a32b263-0175-1000-813a-6925577dd5d3","testStepResults":{"TestStepResult":[{"id":"EID6a32b263-0175-1000-cb64-366e1de34062","parent":{"ref":"EID6a32b263-0175-1000-813a-6925577dd5d3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:15:08Z","duration":1946,"status":"PASSED"},{"id":"EID6a32b263-0175-1000-2333-65820f143f5f","parent":{"ref":"EID6a32b263-0175-1000-813a-6925577dd5d3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-27T13:15:08Z","duration":0,"status":"PASSED"},{"id":"EID6a32b263-0175-1000-b825-a25441c403ec","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a32b30c-0175-1000-e81c-66605372a8e6","parent":{"ref":"EID6a32b263-0175-1000-b825-a25441c403ec"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-27T13:15:08Z","duration":0,"status":"PASSED"},{"id":"EID6a32b30c-0175-1000-fead-53cbbe7d02ae","parent":{"ref":"EID6a32b263-0175-1000-b825-a25441c403ec"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-27T13:15:08Z","duration":0,"status":"PASSED"},{"id":"EID6a32b30c-0175-1000-84a2-c732cf02be58","parent":{"ref":"EID6a32b263-0175-1000-b825-a25441c403ec"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-27T13:15:08Z","duration":0,"status":"PASSED"},{"id":"EID6a32b30c-0175-1000-8bc5-c21143acafeb","parent":{"ref":"EID6a32b263-0175-1000-b825-a25441c403ec"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-27T13:15:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID219f7605-f0ac-4d81-9d4f-b5c7d8499f9e"},{"ref":"EIDea6cbc03-dc00-437e-9e1e-c601b07b7b8a"},{"ref":"EID280de11d-e34d-4ece-9937-4ce4f1922271"}]},"parent":{"ref":"EID6a32b263-0175-1000-813a-6925577dd5d3"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-27T13:15:08Z","duration":80,"status":"PASSED"},{"id":"EID6a32b30c-0175-1000-1f93-25e9e11de8e7","attachments":{"attachment":{"ref":"EID63a26085-3ac8-4939-9147-3349170c118d"}},"parent":{"ref":"EID6a32b263-0175-1000-813a-6925577dd5d3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-27T13:15:08Z","duration":0,"status":"PASSED"},{"id":"EID6a32b319-0175-1000-07fc-98a1ee22ab2a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a32b328-0175-1000-eaed-6498803b59dd","parent":{"ref":"EID6a32b319-0175-1000-07fc-98a1ee22ab2a"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-27T13:15:08Z","duration":0,"status":"PASSED"},{"id":"EID6a32b328-0175-1000-5667-cb8cf8ae7928","parent":{"ref":"EID6a32b319-0175-1000-07fc-98a1ee22ab2a"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-27T13:15:08Z","duration":0,"status":"PASSED"},{"id":"EID6a32b328-0175-1000-3f04-a156bd736eaa","parent":{"ref":"EID6a32b319-0175-1000-07fc-98a1ee22ab2a"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-27T13:15:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3aa58a3e-15ef-45ac-b0ab-7ee4b40f3c67"},{"ref":"EIDbf5d773c-ce95-4a54-aa04-b343add8d2ac"}]},"parent":{"ref":"EID6a32b263-0175-1000-813a-6925577dd5d3"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-27T13:15:08Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a328bd2-0175-1000-ddfa-cdaffbfa4ab9"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:15:08Z","duration":197,"status":"PASSED"}]},"parent":{"ref":"EIDb8603914-1b10-4434-90aa-a165c5e24064"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:14:58Z","duration":10070,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"Message","id":"EIDcee71978-c6df-4d39-a87b-007741467f2f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDcee71978-c6df-4d39-a87b-007741467f2f"}},{"type":"GetParameter","id":"EID710d0140-7d35-4378-9c00-124fa9f47931","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wODk4ZDRhOS04ZmU2LTQ2ZTktODg1NS0xMjQyZDgwMjg5NzAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDce0b7fa0-dda2-48ed-b022-3aeb21856a10","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wODk4ZDRhOS04ZmU2LTQ2ZTktODg1NS0xMjQyZDgwMjg5NzAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDdae287f0-9982-4d16-b5ad-b262882ffca1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDdae287f0-9982-4d16-b5ad-b262882ffca1"}},{"type":"GetParameter","id":"EIDd54392ee-08b9-4f67-b1be-5f3b09e865f0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"Message","id":"EID85cf27b8-5efe-4e93-a448-bbafbb835e47","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID85cf27b8-5efe-4e93-a448-bbafbb835e47"}},{"type":"Message","id":"EID5a05fc99-ab37-46be-8b0e-256539ae0952","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID5a05fc99-ab37-46be-8b0e-256539ae0952"}},{"type":"GetParameter","id":"EIDf8410dd3-4bf4-4043-84b1-43abda1d8925","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wODk4ZDRhOS04ZmU2LTQ2ZTktODg1NS0xMjQyZDgwMjg5NzAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID5a4e03d8-e1bf-47c8-bb96-25e5a571bf25","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID4d9d6dde-b874-4d36-b3ec-bc0066f21482","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"GetParameter","id":"EID1e851476-e3f4-4944-896e-fd165a164ea8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID5e056d4c-3bf1-4bf6-9483-de8fcc16302c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EID1f1e4238-6e31-4345-b2c4-cc6799be60ce","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID1f1e4238-6e31-4345-b2c4-cc6799be60ce"}},{"type":"GetParameter","id":"EIDaabaf912-09e8-4835-9af5-913162e4cef0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"Message","id":"EID0fc57fd2-2bee-4ed2-bd62-f977aee69a7f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID0fc57fd2-2bee-4ed2-bd62-f977aee69a7f"}},{"type":"ServiceResponse","id":"EID4b9d2b38-81ce-4fc6-833c-25c40949cd60","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID4b9d2b38-81ce-4fc6-833c-25c40949cd60"}},{"type":"ServiceResponse","id":"EIDea6cbc03-dc00-437e-9e1e-c601b07b7b8a","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDea6cbc03-dc00-437e-9e1e-c601b07b7b8a"}},{"type":"ServiceEndpoint","id":"EID069acb4f-e844-4fdf-9124-1b0f4478b655","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"ServiceEndpoint","id":"EIDa002a22b-90d0-469b-88c4-e698804e26b9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID64ae6906-de43-48ed-b751-8c6045d92db5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDeaa52c45-441c-4fac-9bce-fa397e7ff644","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDeaa52c45-441c-4fac-9bce-fa397e7ff644"}},{"type":"ServiceResponse","id":"EID04f65d0b-c23b-4371-aa67-36383b7a22f4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID04f65d0b-c23b-4371-aa67-36383b7a22f4"}},{"type":"ServiceEndpoint","id":"EID4687363a-749f-40a8-a163-2877c6686b32","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wODk4ZDRhOS04ZmU2LTQ2ZTktODg1NS0xMjQyZDgwMjg5NzAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDfd9013fd-d02a-48e1-a536-b9e0c7ff7b8b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDfd9013fd-d02a-48e1-a536-b9e0c7ff7b8b"}},{"type":"GetParameter","id":"EID2413a716-8c69-48dd-b713-e19ea2bb7bd0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDc7e1db8a-41e9-4cb3-b2e6-314c6d2bb604","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDc7e1db8a-41e9-4cb3-b2e6-314c6d2bb604"}},{"type":"ServiceResponse","id":"EIDb9c2f1d0-9c56-480b-ae1a-0ddb70546b30","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDb9c2f1d0-9c56-480b-ae1a-0ddb70546b30"}},{"type":"Message","id":"EID1bec7f0f-46f4-47d7-a5d6-9baa139a0c3a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID1bec7f0f-46f4-47d7-a5d6-9baa139a0c3a"}},{"type":"ServiceResponse","id":"EID9e301c3c-3125-4630-b932-1806f2357784","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID9e301c3c-3125-4630-b932-1806f2357784"}},{"type":"ServiceEndpoint","id":"EID774e6475-fb4b-4736-a0d8-8e1742d9f7be","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EID9eba1b20-e41d-4991-ad78-ec4896b4f196","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID9eba1b20-e41d-4991-ad78-ec4896b4f196"}},{"type":"Message","id":"EID4017601e-0e19-4e99-9643-65a129d0dbeb","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID4017601e-0e19-4e99-9643-65a129d0dbeb"}},{"type":"Message","id":"EID6982f910-64b7-482c-99ef-5869a441138c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID6982f910-64b7-482c-99ef-5869a441138c"}},{"type":"GetParameter","id":"EID439a2947-bbfc-4e35-90aa-6fb44ebe96e5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"GetParameter","id":"EIDcdb83242-e09c-4ebd-b087-45d45c7b0d8d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"ServiceResponse","id":"EIDe217de21-5236-4e44-8730-5066cd9da6fa","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDe217de21-5236-4e44-8730-5066cd9da6fa"}},{"type":"ServiceResponse","id":"EID89933827-2641-4444-9259-69d66ec784a4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID89933827-2641-4444-9259-69d66ec784a4"}},{"type":"GetParameter","id":"EID0eb9b234-6882-4705-b2ee-e4ef4a8f5160","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDdfa7c4b2-1437-4bc7-bd56-ec93980e19e9","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDdfa7c4b2-1437-4bc7-bd56-ec93980e19e9"}},{"type":"ServiceEndpoint","id":"EIDfc9f18d5-8fb0-42d0-8d0d-5387d0970121","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDe97d109b-7a60-4947-90a5-1b5f24f13d27","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDe97d109b-7a60-4947-90a5-1b5f24f13d27"}},{"type":"Message","id":"EID41b80089-56d3-42aa-a837-e981185178d4","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID41b80089-56d3-42aa-a837-e981185178d4"}},{"type":"ServiceEndpoint","id":"EID760ca780-931e-436f-905e-5717e5490ee8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"ServiceEndpoint","id":"EID8a42d875-e6c3-412a-b595-29f2515f3076","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID2dbca244-70c4-4eba-a2e0-30b6b3adbf75","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID2dbca244-70c4-4eba-a2e0-30b6b3adbf75"}},{"type":"GetParameter","id":"EIDace362c0-f8c9-41b0-a4a3-5b3501253c01","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"Message","id":"EID65accf6f-344b-468f-bd3c-2ffa5158887e","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID65accf6f-344b-468f-bd3c-2ffa5158887e"}},{"type":"GetParameter","id":"EID029d3f1e-fcf7-4151-bb92-abfb5113d8d9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID70d838e2-9fe6-4b28-a2d4-bc6d8d471c5f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L2Nzdw=="},{"type":"ServiceResponse","id":"EID64fe7d42-5bf1-4b90-a1e2-84ad1e29da20","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID64fe7d42-5bf1-4b90-a1e2-84ad1e29da20"}},{"type":"ServiceEndpoint","id":"EIDec39aeeb-a847-42c1-97d7-f3ebe1268e84","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDaa03a901-bd4f-4522-8b13-70bcab751eb6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"ServiceEndpoint","id":"EID31d50636-e384-48a9-8c5a-42f61dd34408","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDb90dac19-96c3-4e4e-9d0d-5d877c5d417c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDb90dac19-96c3-4e4e-9d0d-5d877c5d417c"}},{"type":"GetParameter","id":"EID619210c2-b69b-4203-b0ad-2ac25baecabe","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"ServiceResponse","id":"EID5440277d-d987-4496-b1a0-ae8e56173f55","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID5440277d-d987-4496-b1a0-ae8e56173f55"}},{"type":"ServiceEndpoint","id":"EIDa37d8e76-f911-4a74-be37-efc8232e2364","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"Message","id":"EID9f63f8a3-cb7d-4797-806d-0f20a7e4021b","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID9f63f8a3-cb7d-4797-806d-0f20a7e4021b"}},{"type":"Message","id":"EIDea569acb-28d2-4660-9581-02b844618b1a","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDea569acb-28d2-4660-9581-02b844618b1a"}},{"type":"Message","id":"EID63a26085-3ac8-4939-9147-3349170c118d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID63a26085-3ac8-4939-9147-3349170c118d"}},{"type":"ServiceEndpoint","id":"EIDf2ea4665-07f0-4113-ade9-cf3a7ce3eb55","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID12a8301f-817e-42b4-b6cf-b2e0f0e84c06","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDcbf31b37-d829-464a-a123-50263c0462fa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"ServiceEndpoint","id":"EID25961dd1-418d-4acf-afc7-0100ad859219","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L2Nzdw=="},{"type":"ServiceResponse","id":"EIDc234d149-c47a-4b86-a4e1-bf2df3520172","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDc234d149-c47a-4b86-a4e1-bf2df3520172"}},{"type":"GetParameter","id":"EIDb6eda842-cdec-4cd6-b99b-7beea382db12","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EID67d021b7-5a25-420d-b82d-cb2c1500ef35","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID67d021b7-5a25-420d-b82d-cb2c1500ef35"}},{"type":"Message","id":"EID916dd09d-a52b-4f87-bfaa-61224889a3b3","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID916dd09d-a52b-4f87-bfaa-61224889a3b3"}},{"type":"Message","id":"EIDe3ea0758-dcee-4b2f-b21f-0e823fb9ac88","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDe3ea0758-dcee-4b2f-b21f-0e823fb9ac88"}},{"type":"ServiceEndpoint","id":"EID5d7b67d2-f12e-4322-a2b0-5525a2da1871","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDb08c1bd5-dc38-4e2f-9b97-6b2682d49b07","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDb08c1bd5-dc38-4e2f-9b97-6b2682d49b07"}},{"type":"LogFile","id":"EID239fc165-71d7-4d68-baf6-cfc15150a0e5","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID239fc165-71d7-4d68-baf6-cfc15150a0e5"}},{"type":"ServiceEndpoint","id":"EID870e3837-691f-4d12-ac55-2cf860ce171d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID0114142a-2365-420a-aadc-398cec82e52c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID0114142a-2365-420a-aadc-398cec82e52c"}},{"type":"ServiceEndpoint","id":"EID52ddf404-757a-4833-9a4a-8a584e7989c7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"ServiceResponse","id":"EIDf5dc7d93-3ba0-4a09-853e-d3feda94f60e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDf5dc7d93-3ba0-4a09-853e-d3feda94f60e"}},{"type":"GetParameter","id":"EIDd65a9c6e-82b2-434d-a9a1-11a23bb5fc35","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wODk4ZDRhOS04ZmU2LTQ2ZTktODg1NS0xMjQyZDgwMjg5NzAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID28b9161e-e6ce-4b26-aff9-4647fc49ba9b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID28b9161e-e6ce-4b26-aff9-4647fc49ba9b"}},{"type":"GetParameter","id":"EID3fb92d61-6d06-4fdb-b799-59ef25bcfed2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"Message","id":"EID239cc004-31ff-4cc5-ae9c-dfa05e450b68","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID239cc004-31ff-4cc5-ae9c-dfa05e450b68"}},{"type":"Message","id":"EIDe3f60231-39d8-4304-91dd-de8c2f61f6a9","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDe3f60231-39d8-4304-91dd-de8c2f61f6a9"}},{"type":"GetParameter","id":"EIDface214f-aff6-4608-9788-b9d09b93d5d2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDa07fd13c-04d7-41dc-ac62-fab812cab0eb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"Message","id":"EID191d23af-f437-4e04-a98a-522928b45b07","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID191d23af-f437-4e04-a98a-522928b45b07"}},{"type":"ServiceEndpoint","id":"EIDb25bed7a-08b5-43a7-a978-dfaf4e203129","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID9c6b304c-c215-4f93-a1c2-548c3ca57ea6","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID9c6b304c-c215-4f93-a1c2-548c3ca57ea6"}},{"type":"Message","id":"EID5ac2c9cc-22f1-440e-a1c6-dd5b80d58eae","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID5ac2c9cc-22f1-440e-a1c6-dd5b80d58eae"}},{"type":"ServiceResponse","id":"EIDdae6694d-e316-4180-8500-f4796c758442","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDdae6694d-e316-4180-8500-f4796c758442"}},{"type":"Message","id":"EIDd51ca39b-655c-4259-b1ca-d893280f0b2c","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDd51ca39b-655c-4259-b1ca-d893280f0b2c"}},{"type":"ServiceResponse","id":"EID38161f3b-1eb8-4daa-a091-9cd82b664e99","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID38161f3b-1eb8-4daa-a091-9cd82b664e99"}},{"type":"ServiceEndpoint","id":"EID2e96c35c-35c6-4fbd-8eb3-303370606a0c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID4d20861e-aac9-4d7f-bf85-6ee432766f83","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID1889d1a5-e69a-4ee3-939d-d5a665dd557d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID1889d1a5-e69a-4ee3-939d-d5a665dd557d"}},{"type":"ServiceEndpoint","id":"EIDa3501499-edd3-44c9-a3c9-5471c5776f3c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDbb8db5d4-0641-4e64-8768-97b84c326538","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDc16dc49c-7bea-45ab-9f83-01d12af9f554","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID04540903-5ef7-4106-8a90-3777a79c2b76","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDe933419c-f06f-4eca-84a3-f470f01ff5eb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDe933419c-f06f-4eca-84a3-f470f01ff5eb"}},{"type":"GetParameter","id":"EIDf601f078-764b-4c72-8440-56cac00dde66","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID3945e1db-c950-46ad-9d88-8ba6800c4ce2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID3945e1db-c950-46ad-9d88-8ba6800c4ce2"}},{"type":"GetParameter","id":"EID4f29d278-02cf-44e7-bc7e-fce3117c9479","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDeba9484d-a63c-4afd-9522-e32f1b9f350e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EID9e18f675-8f93-48e4-b92d-faa4aabd4b19","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID9e18f675-8f93-48e4-b92d-faa4aabd4b19"}},{"type":"Message","id":"EID31d7f835-c17a-4c6b-8a70-cfb91bd772b1","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID31d7f835-c17a-4c6b-8a70-cfb91bd772b1"}},{"type":"ServiceResponse","id":"EIDa0f173e6-9d31-4dde-bd53-74ad0694b44e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDa0f173e6-9d31-4dde-bd53-74ad0694b44e"}},{"type":"Message","id":"EIDe26d6e35-629b-4143-be5a-d366db5374b0","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDe26d6e35-629b-4143-be5a-d366db5374b0"}},{"type":"GetParameter","id":"EID2c72a8e6-043d-4de8-be78-a8a80baa1978","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDcee7c6a5-776a-461c-8f5d-5c3b1c84c011","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EID233881f0-5867-426b-ae8e-4632d1e64412","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wODk4ZDRhOS04ZmU2LTQ2ZTktODg1NS0xMjQyZDgwMjg5NzAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID85612d5c-12a3-4c7e-8699-ac112e03a04b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID85612d5c-12a3-4c7e-8699-ac112e03a04b"}},{"type":"Message","id":"EID1581ac51-01bc-480e-8faa-27b7689c4333","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID1581ac51-01bc-480e-8faa-27b7689c4333"}},{"type":"Message","id":"EID81aeefa9-9671-4052-a994-4ece105248db","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID81aeefa9-9671-4052-a994-4ece105248db"}},{"type":"ServiceResponse","id":"EID93b3eb61-11fb-4143-9e72-fcd83aeee462","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID93b3eb61-11fb-4143-9e72-fcd83aeee462"}},{"type":"ServiceEndpoint","id":"EID7cd4487c-539d-40d7-86a5-d133c7430402","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDaa0ef790-6ae3-49a5-be70-28c4800ec087","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDaa0ef790-6ae3-49a5-be70-28c4800ec087"}},{"type":"ServiceEndpoint","id":"EIDeba2f5aa-409d-4c94-8a7d-0684a9743e32","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EIDa48b866f-9057-4d27-bbbd-c44a905489cd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDefdc7823-f45b-4e86-92f0-cc14b6bdd6df","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDefdc7823-f45b-4e86-92f0-cc14b6bdd6df"}},{"type":"ServiceEndpoint","id":"EID2a0e4ed8-339e-4edd-8ffa-85e61e1a8063","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"GetParameter","id":"EID17018638-dc37-43e3-b1dc-6f0fbdffbb7b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"ServiceEndpoint","id":"EID357326c7-e898-43af-9e56-2575cda894c6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID9d1174a4-ab40-40bf-a74d-0eca9a7db149","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"ServiceResponse","id":"EID11c8876d-c5e5-4edd-8305-e2a1b3eeb6c6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID11c8876d-c5e5-4edd-8305-e2a1b3eeb6c6"}},{"type":"ServiceEndpoint","id":"EIDa316d35d-4cca-4b9b-9a7d-435ee450e6e8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDebed6d9a-cbc7-4966-8e67-89f4bb204e78","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDebed6d9a-cbc7-4966-8e67-89f4bb204e78"}},{"type":"ServiceEndpoint","id":"EID7ab456c5-515c-4ddb-aa00-b2195cd5182a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID72593dd6-9c16-456c-9f5d-5edda34312c8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID72593dd6-9c16-456c-9f5d-5edda34312c8"}},{"type":"Message","id":"EID9b565b77-0437-4d60-93a1-6f3e601f306c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID9b565b77-0437-4d60-93a1-6f3e601f306c"}},{"type":"Message","id":"EID923396c4-18d3-44a4-b0b4-376c9f17b57d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID923396c4-18d3-44a4-b0b4-376c9f17b57d"}},{"type":"GetParameter","id":"EIDf83d584b-6ca1-49f7-adbd-5e63d6b7e75d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID619e3669-0bb3-46ef-8b8d-485fa6428a51","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID619e3669-0bb3-46ef-8b8d-485fa6428a51"}},{"type":"ServiceResponse","id":"EID19944dc5-b0b9-4c7a-950e-9563c8e760d4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID19944dc5-b0b9-4c7a-950e-9563c8e760d4"}},{"type":"Message","id":"EIDa7d60fa8-046b-4e24-914a-fe4e41118cb5","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDa7d60fa8-046b-4e24-914a-fe4e41118cb5"}},{"type":"GetParameter","id":"EID329d86b5-8b28-4161-aec7-d8d634c52782","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"Message","id":"EIDf7464242-1eb5-428d-9e74-25fe3a5a5d36","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDf7464242-1eb5-428d-9e74-25fe3a5a5d36"}},{"type":"ServiceResponse","id":"EID01c9055e-986a-4a60-9e36-1fc7efa0bd2c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID01c9055e-986a-4a60-9e36-1fc7efa0bd2c"}},{"type":"GetParameter","id":"EIDaadb5fd5-cece-446f-bde2-7ae18f17ff1f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID3ee1bd93-44f8-42f4-9122-29b217bbb2fa","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID3ee1bd93-44f8-42f4-9122-29b217bbb2fa"}},{"type":"ServiceEndpoint","id":"EIDecde86c8-8de8-4795-a3cd-13a269c530aa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"ServiceResponse","id":"EID4f4ddd0c-2c4f-41a9-9f2f-c1b252831e47","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID4f4ddd0c-2c4f-41a9-9f2f-c1b252831e47"}},{"type":"GetParameter","id":"EID63b0247a-b701-4dac-8b7a-001a4067da7a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDbf5d773c-ce95-4a54-aa04-b343add8d2ac","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"Message","id":"EIDaefaae05-1a5e-44fa-8a24-448c06537b92","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDaefaae05-1a5e-44fa-8a24-448c06537b92"}},{"type":"ServiceEndpoint","id":"EID878d90f6-7b9b-4df3-865f-fc543aff0d0d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDb2fa7cbc-2c47-4cca-91bb-5fcbdce11123","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDb2fa7cbc-2c47-4cca-91bb-5fcbdce11123"}},{"type":"ServiceResponse","id":"EIDa7da15ac-4529-4328-b92e-3915fc3b9fd2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDa7da15ac-4529-4328-b92e-3915fc3b9fd2"}},{"type":"Message","id":"EID84aa9cde-7089-48bc-b454-c5319405da5d","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID84aa9cde-7089-48bc-b454-c5319405da5d"}},{"type":"ServiceResponse","id":"EID2c4681ee-867f-403d-a849-9197191217a7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID2c4681ee-867f-403d-a849-9197191217a7"}},{"type":"ServiceResponse","id":"EID08a317d4-07b0-4484-97d7-29c87c964e59","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID08a317d4-07b0-4484-97d7-29c87c964e59"}},{"type":"Message","id":"EID07214e52-89f3-43fa-acbf-fedb62400b0d","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID07214e52-89f3-43fa-acbf-fedb62400b0d"}},{"type":"Message","id":"EID618db839-59c9-47ba-82d5-e23e199ca4fd","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID618db839-59c9-47ba-82d5-e23e199ca4fd"}},{"type":"ServiceResponse","id":"EID8700c6f1-6114-47ba-a090-f69411d32f19","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID8700c6f1-6114-47ba-a090-f69411d32f19"}},{"type":"ServiceEndpoint","id":"EID154f0c81-7662-4a4f-82c1-41ec3054fdf9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"GetParameter","id":"EID34e6ad22-1ed0-4f7c-b95f-3074ac4b35aa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID2cb0b113-20e4-44bf-823c-b6927f682242","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wODk4ZDRhOS04ZmU2LTQ2ZTktODg1NS0xMjQyZDgwMjg5NzAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID4bf0bd96-7184-4daf-ad17-24c2ca76ed41","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID280de11d-e34d-4ece-9937-4ce4f1922271","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wODk4ZDRhOS04ZmU2LTQ2ZTktODg1NS0xMjQyZDgwMjg5NzAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID9e33135e-34ea-41c0-a9a2-79d1fcd717c0","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID9e33135e-34ea-41c0-a9a2-79d1fcd717c0"}},{"type":"ServiceResponse","id":"EID3b718d6f-e1ab-4e91-b72f-b0c112b79673","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID3b718d6f-e1ab-4e91-b72f-b0c112b79673"}},{"type":"ServiceEndpoint","id":"EID14edb577-a267-4145-9794-c8342254951a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"GetParameter","id":"EIDc5a550f0-f128-4632-93cb-d998aa650ee1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"ServiceResponse","id":"EID6c83e7c8-0dcd-48c2-bea9-44288a987c4c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID6c83e7c8-0dcd-48c2-bea9-44288a987c4c"}},{"type":"GetParameter","id":"EIDef7be1ad-0b52-436a-8243-f8766bef1085","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID27923503-5937-4357-b0d8-b42067ed0ddf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID3218e85e-a022-4004-bf04-92fcd141eff1","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID3218e85e-a022-4004-bf04-92fcd141eff1"}},{"type":"ServiceEndpoint","id":"EIDabf414be-e079-4301-b06e-93051d42a0c9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDfb7a3568-acd3-438e-9c2c-2e0386709f16","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"ServiceEndpoint","id":"EID7a5680ee-e12b-414c-8365-92dbf76ab681","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"Message","id":"EIDb4fc4f77-29bf-4b53-87ff-315341e69ba2","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDb4fc4f77-29bf-4b53-87ff-315341e69ba2"}},{"type":"ServiceResponse","id":"EID5614ad8f-938f-4e46-bb1e-917ae6286987","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID5614ad8f-938f-4e46-bb1e-917ae6286987"}},{"type":"Message","id":"EIDf91b3c2c-8a83-45f0-8cfe-9f668e3b31c2","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDf91b3c2c-8a83-45f0-8cfe-9f668e3b31c2"}},{"type":"GetParameter","id":"EID75612af4-9e80-4e78-9bc6-0d331cdad09f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID5a0634ac-2982-4aee-8331-b89f1b8ca2df","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID5a0634ac-2982-4aee-8331-b89f1b8ca2df"}},{"type":"ServiceEndpoint","id":"EID1a374808-f544-4d07-9d73-83ab3821349d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EID42c6e04e-3c92-46e2-af25-a8007df44883","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"Message","id":"EID0cde8702-a2e5-412a-b277-f17c50ec1465","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID0cde8702-a2e5-412a-b277-f17c50ec1465"}},{"type":"ServiceResponse","id":"EID1a4614ad-eab8-4eb5-9787-68d13dd82445","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID1a4614ad-eab8-4eb5-9787-68d13dd82445"}},{"type":"GetParameter","id":"EID7ad3eeaf-246c-498b-ab0d-6eb3390bc599","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"Message","id":"EID103cab16-3820-4a51-85e0-819df9064b75","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID103cab16-3820-4a51-85e0-819df9064b75"}},{"type":"Message","id":"EIDb23ffd61-e19e-4b3b-87cb-8a9dc6fe85c4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDb23ffd61-e19e-4b3b-87cb-8a9dc6fe85c4"}},{"type":"GetParameter","id":"EID9b5e22b5-16ba-4713-a5b4-c5d89cc62cee","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID4383d5b9-134c-44e4-8fe3-542c813368b6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID7c2edf33-9b39-4fa9-b27f-16fa23bf4a5c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID99dc77d2-11b1-4c13-a708-5b2de5a06d1a","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID99dc77d2-11b1-4c13-a708-5b2de5a06d1a"}},{"type":"GetParameter","id":"EIDabed2059-3f6e-4f3e-81ad-c37d0cdb7c94","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDa152be18-386f-472a-a3bc-29f92db51918","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wODk4ZDRhOS04ZmU2LTQ2ZTktODg1NS0xMjQyZDgwMjg5NzAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID219f7605-f0ac-4d81-9d4f-b5c7d8499f9e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wODk4ZDRhOS04ZmU2LTQ2ZTktODg1NS0xMjQyZDgwMjg5NzAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDf8a387b6-e28c-4079-a530-2948535c937b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID5999e325-3048-46cd-af7c-05b29be2ae45","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID5999e325-3048-46cd-af7c-05b29be2ae45"}},{"type":"GetParameter","id":"EIDe9a21d64-0f33-428e-8362-fbeb00eed8f1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvZG93bmxvYWRzL3Jvcl9yaXNpY29fZXUyMDE4X3ZfYWJfZ3BrZy56aXA="},{"type":"ServiceEndpoint","id":"EID16e868a2-f0cf-41d6-9f57-20164ca50c44","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wODk4ZDRhOS04ZmU2LTQ2ZTktODg1NS0xMjQyZDgwMjg5NzAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID1e0cc263-dde1-4a46-956a-b877d1be55e1","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID1e0cc263-dde1-4a46-956a-b877d1be55e1"}},{"type":"ServiceEndpoint","id":"EID407d00df-a53d-4d00-90cd-3602246b645e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvZG93bmxvYWRzL3Jvcl9yaXNpY29fZXUyMDE4X3ZfYWJfZ3BrZy56aXA="},{"type":"ServiceResponse","id":"EID679b160d-fa83-44cb-8ef6-ff041077916b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID679b160d-fa83-44cb-8ef6-ff041077916b"}},{"type":"Message","id":"EID255f4062-247f-4039-9f4c-ce04126a8a52","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID255f4062-247f-4039-9f4c-ce04126a8a52"}},{"type":"Message","id":"EIDaa38b8b6-398a-4844-a9d3-3ca792464f7c","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDaa38b8b6-398a-4844-a9d3-3ca792464f7c"}},{"type":"GetParameter","id":"EID8a0146ab-de19-4ef5-9c75-de9d56def992","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID0dd6aede-a100-4643-ad24-fed7b20411ea","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDbf72a87d-92ec-4c45-a663-e4218f6ab903","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"Message","id":"EID0ed9378b-8c8b-4c99-b6a8-fb01988e0371","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID0ed9378b-8c8b-4c99-b6a8-fb01988e0371"}},{"type":"GetParameter","id":"EID45a1c45a-6247-4166-b264-0e1fb7c705d5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"Message","id":"EID22fdac5b-58c4-4b33-8e48-948386ebd6f6","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID22fdac5b-58c4-4b33-8e48-948386ebd6f6"}},{"type":"GetParameter","id":"EID549e7756-e6fe-4a1b-b6b2-d314a61b4d11","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9yaWNodGxpam5vdmVyc3Ryb21pbmdzcmlzaWNvMjAxOC9hdG9tL3YxXzAvcm9yX3Jpc2ljb19ldTIwMThfdl9hYi54bWw="},{"type":"ServiceResponse","id":"EID9e126298-cc0a-4147-a9c3-29007ab0c29f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID9e126298-cc0a-4147-a9c3-29007ab0c29f"}},{"type":"GetParameter","id":"EID9736b951-df79-47c1-9100-bed107eff994","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wODk4ZDRhOS04ZmU2LTQ2ZTktODg1NS0xMjQyZDgwMjg5NzAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID7a971bc8-97f8-4946-9ed9-fa500b1d0b2a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EID0672b21c-7a04-4fe9-88e8-d90a24074933","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID0672b21c-7a04-4fe9-88e8-d90a24074933"}},{"type":"Message","id":"EID3d45177d-4155-4bbc-93f8-5c89947ce2b8","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EID3d45177d-4155-4bbc-93f8-5c89947ce2b8"}},{"type":"ServiceResponse","id":"EIDe5fecd00-f590-4988-bed5-7dc2779e0e57","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb8603914-1b10-4434-90aa-a165c5e24064/Attachments/EIDe5fecd00-f590-4988-bed5-7dc2779e0e57"}},{"type":"ServiceEndpoint","id":"EID3aa58a3e-15ef-45ac-b0ab-7ee4b40f3c67","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:14:06Z","duration":62604,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:15:25.461 [print] EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:15:25.461 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:15:25.461 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:15:25.461 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:15:25.461 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/ca75fd2c-48d1-43cb-8f93-9dd1153f2f03.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:15:25.462 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/ca75fd2c-48d1-43cb-8f93-9dd1153f2f03.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:15:25.462 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDca75fd2c-48d1-43cb-8f93-9dd1153f2f03/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.007
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.002
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
13:15:25.474 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.008
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.002
* print refs 0.000
13:15:25.485 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* print sortedrefs 0.000
13:15:25.485 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.008
30.286
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:19:55.076 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 18.272
13:19:55.076 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

13:20:13.346 response time in milliseconds: 17530.50
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:20:12 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:19:57 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/91968587-cea7-40fc-8eed-57b1183fdc0a.json","testRuns":{"TestRun":{"id":"EID91968587-cea7-40fc-8eed-57b1183fdc0a","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:19:56.966Z","testTasks":{"TestTask":{"id":"EIDbebec513-de84-4c41-b27b-b3800ae42f61","parent":{"ref":"EID91968587-cea7-40fc-8eed-57b1183fdc0a"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID5adb0596-7240-44b9-9d1d-6da3facd3e14"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID91968587-cea7-40fc-8eed-57b1183fdc0a/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID5adb0596-7240-44b9-9d1d-6da3facd3e14","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:19:55.508Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:19:56.28Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:20:13.349 [print] EID91968587-cea7-40fc-8eed-57b1183fdc0a
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:20:13.349 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:20:13.349 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:20:13.349 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/91968587-cea7-40fc-8eed-57b1183fdc0a.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:20:13.349 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID91968587-cea7-40fc-8eed-57b1183fdc0a/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:20:13.349 [print] statuspath TestRuns/EID91968587-cea7-40fc-8eed-57b1183fdc0a
* print 'progresspath ', progresspath 0.000
13:20:13.349 [print] progresspath  TestRuns/EID91968587-cea7-40fc-8eed-57b1183fdc0a/progress
Given path progresspath 0.000
When method GET 0.539
13:20:13.352 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID91968587-cea7-40fc-8eed-57b1183fdc0a/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:13.889 response time in milliseconds: 536.69
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:20:13 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"111","max":"112","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (bebec513-de84-4c41-b27b-b3800ae42f61)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:57 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:57 - Setting state to CREATED","27.10.2020 13:19:57 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.91968587-cea7-40fc-8eed-57b1183fdc0a at 2020-10-27T13:19:59Z","27.10.2020 13:19:59 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:59 - Project Properties: ","27.10.2020 13:19:59 - etf.testcases - * ","27.10.2020 13:19:59 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:19:59 - username -  ","27.10.2020 13:19:59 - authUser -  ","27.10.2020 13:19:59 - authMethod - basic ","27.10.2020 13:19:59 - TestRunTask initialized","27.10.2020 13:20:03 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:20:03 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:20:06 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:20:10 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:20:10 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:20:12 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:20:12 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:20:13 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:20:13 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:20:13 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:20:13 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:20:13 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:20:13 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:20:13 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:20:13 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:20:13 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:20:13.890 [print] {
  "val": "111",
  "max": "112",
  "log": [
    "27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)",
    "27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:19:56 - Preparing 1 Test Task:",
    "27.10.2020 13:19:56 -  TestTask 1 (bebec513-de84-4c41-b27b-b3800ae42f61)",
    "27.10.2020 13:19:56 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:19:56 -  with parameters: ",
    "27.10.2020 13:19:56 - etf.testcases = *",
    "27.10.2020 13:19:57 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:19:57 - Setting state to CREATED",
    "27.10.2020 13:19:57 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:19:57 - Starting TestRun.91968587-cea7-40fc-8eed-57b1183fdc0a at 2020-10-27T13:19:59Z",
    "27.10.2020 13:19:59 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:19:59 - Project Properties: ",
    "27.10.2020 13:19:59 - etf.testcases - * ",
    "27.10.2020 13:19:59 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "27.10.2020 13:19:59 - username -  ",
    "27.10.2020 13:19:59 - authUser -  ",
    "27.10.2020 13:19:59 - authMethod - basic ",
    "27.10.2020 13:19:59 - TestRunTask initialized",
    "27.10.2020 13:20:03 ERROR Response status code:500 is not in acceptable list of status codes",
    "27.10.2020 13:20:03 ERROR Assertion failed with error 'TR.unexpectedHtml'",
    "27.10.2020 13:20:06 ERROR Assertion failed with error 'TR.unexpectedHtml'",
    "27.10.2020 13:20:10 ERROR Assertion failed with error 'TR.uniqueDatasetIdentifiers'",
    "27.10.2020 13:20:10 ERROR Assertion failed with error 'TR.missingLinkToMetadataRecordForDownloadService'",
    "27.10.2020 13:20:12 ERROR Response status code:404 is not in acceptable list of status codes",
    "27.10.2020 13:20:12 ERROR Assertion failed with error 'TR.missingElement'",
    "27.10.2020 13:20:12 ERROR Assertion failed with error 'TR.missingElement'",
    "27.10.2020 13:20:12 ERROR Response status code:404 is not in acceptable list of status codes",
    "27.10.2020 13:20:13 ERROR Assertion failed with error 'TR.missingElement'",
    "27.10.2020 13:20:13 ERROR Response status code:404 is not in acceptable list of status codes",
    "27.10.2020 13:20:13 ERROR Assertion failed with error 'TR.missingOneFeedEntryWithDlFile'",
    "27.10.2020 13:20:13 ERROR Response status code:404 is not in acceptable list of status codes",
    "27.10.2020 13:20:13 ERROR Assertion failed with error 'TR.missingElement'",
    "27.10.2020 13:20:13 ERROR Response status code:404 is not in acceptable list of status codes",
    "27.10.2020 13:20:13 ERROR Assertion failed with error 'TR.missingElement'",
    "27.10.2020 13:20:13 ERROR Response status code:404 is not in acceptable list of status codes",
    "27.10.2020 13:20:13 ERROR Assertion failed with error 'TR.missingFeedUpdatedInformation'"
  ]
}
Given path progresspath 0.000
When method GET 7.567
13:20:13.891 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID91968587-cea7-40fc-8eed-57b1183fdc0a/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:14.436 response time in milliseconds: 542.12
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:20:14 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"114","max":"115","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (bebec513-de84-4c41-b27b-b3800ae42f61)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:57 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:57 - Setting state to CREATED","27.10.2020 13:19:57 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.91968587-cea7-40fc-8eed-57b1183fdc0a at 2020-10-27T13:19:59Z","27.10.2020 13:19:59 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:59 - Project Properties: ","27.10.2020 13:19:59 - etf.testcases - * ","27.10.2020 13:19:59 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:19:59 - username -  ","27.10.2020 13:19:59 - authUser -  ","27.10.2020 13:19:59 - authMethod - basic ","27.10.2020 13:19:59 - TestRunTask initialized","27.10.2020 13:20:03 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:20:03 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:20:06 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:20:10 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:20:10 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:20:12 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:20:12 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:20:13 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:20:13 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:20:13 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:20:13 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:20:13 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:20:13 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:20:13 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:20:13 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:20:13 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:20:14 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:20:14 ERROR Response status code:404 is not in acceptable list of status codes"]}

13:20:14.436 retry condition not satisfied: response.val == response.max
13:20:14.436 sleeping before retry #1
13:20:19.437 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID91968587-cea7-40fc-8eed-57b1183fdc0a/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:21.457 response time in milliseconds: 2019.53
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:20:21 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:20:21.457 retry condition satisfied
* print response 0.000
13:20:21.458 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 3.878
13:20:21.458 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID91968587-cea7-40fc-8eed-57b1183fdc0a
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:25.326 response time in milliseconds: 2896.45
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Cache-Control: public, max-age=120
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:20:24 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Last-Modified: Tue, 27 Oct 2020 13:20:20 GMT
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/91968587-cea7-40fc-8eed-57b1183fdc0a.json","testRuns":{"TestRun":{"id":"EID91968587-cea7-40fc-8eed-57b1183fdc0a","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:19:56.966Z","testTasks":{"TestTask":{"id":"EIDbebec513-de84-4c41-b27b-b3800ae42f61","parent":{"ref":"EID91968587-cea7-40fc-8eed-57b1183fdc0a"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID5adb0596-7240-44b9-9d1d-6da3facd3e14"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID384ebe78-3da0-4888-b0a9-db866bedd119"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID91968587-cea7-40fc-8eed-57b1183fdc0a/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID5adb0596-7240-44b9-9d1d-6da3facd3e14","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:19:55.508Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:19:56.28Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID384ebe78-3da0-4888-b0a9-db866bedd119","testObject":{"ref":"EID5adb0596-7240-44b9-9d1d-6da3facd3e14"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a3721c7-0175-1000-8fe4-fd5e51e2ec09","testCaseResults":{"TestCaseResult":[{"id":"EID6a3721c8-0175-1000-5cbc-96503b34f249","testStepResults":{"TestStepResult":[{"id":"EID6a3721c8-0175-1000-4b11-06563f7c3d2e","parent":{"ref":"EID6a3721c8-0175-1000-5cbc-96503b34f249"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:19:59Z","duration":17,"status":"PASSED"},{"id":"EID6a3721d9-0175-1000-cad5-71e8a9ef4313","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3722f1-0175-1000-4ea3-b472caaf96ff","parent":{"ref":"EID6a3721d9-0175-1000-cad5-71e8a9ef4313"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:19:59Z","duration":0,"status":"PASSED"},{"id":"EID6a3722f1-0175-1000-d147-b08ed971b08d","parent":{"ref":"EID6a3721d9-0175-1000-cad5-71e8a9ef4313"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:19:59Z","duration":0,"status":"PASSED"},{"id":"EID6a3722f1-0175-1000-b5b1-8784d3592a3e","parent":{"ref":"EID6a3721d9-0175-1000-cad5-71e8a9ef4313"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:19:59Z","duration":0,"status":"PASSED"},{"id":"EID6a3722f1-0175-1000-fe05-5e170659578e","parent":{"ref":"EID6a3721d9-0175-1000-cad5-71e8a9ef4313"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:19:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8463ab0c-53dd-450d-a650-da04175a3aa5"},{"ref":"EID0225ece7-38fd-4f84-ae9f-1c5c3e417c1a"},{"ref":"EIDae064bf4-401e-437c-b925-c50373ad31d2"}]},"parent":{"ref":"EID6a3721c8-0175-1000-5cbc-96503b34f249"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:19:59Z","duration":138,"status":"PASSED"}]},"parent":{"ref":"EID6a3721c7-0175-1000-8fe4-fd5e51e2ec09"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:19:59Z","duration":305,"status":"PASSED"},{"id":"EID6a3722f9-0175-1000-862f-17e632abb67a","testStepResults":{"TestStepResult":{"id":"EID6a3722f9-0175-1000-1318-07efd42fcc62","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3723c4-0175-1000-3abd-4bf1be19846d","parent":{"ref":"EID6a3722f9-0175-1000-1318-07efd42fcc62"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:19:59Z","duration":0,"status":"PASSED"},{"id":"EID6a3723c4-0175-1000-20f9-31bbce41b5cd","parent":{"ref":"EID6a3722f9-0175-1000-1318-07efd42fcc62"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:19:59Z","duration":0,"status":"PASSED"},{"id":"EID6a3723c4-0175-1000-ccfe-f0b672e822a4","parent":{"ref":"EID6a3722f9-0175-1000-1318-07efd42fcc62"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:19:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc250d882-bca9-460a-9e1d-df7a3c1deac1"},{"ref":"EID37793125-a2ca-459c-b362-c9c6af9db8a9"},{"ref":"EIDff572883-7512-4038-b89f-65537912485e"}]},"parent":{"ref":"EID6a3722f9-0175-1000-862f-17e632abb67a"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:19:59Z","duration":41,"status":"PASSED"}},"parent":{"ref":"EID6a3721c7-0175-1000-8fe4-fd5e51e2ec09"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:19:59Z","duration":203,"status":"PASSED"}]},"parent":{"ref":"EID384ebe78-3da0-4888-b0a9-db866bedd119"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:19:59Z","duration":509,"status":"PASSED"},{"id":"EID6a3723c4-0175-1000-ef24-ff221a159450","testCaseResults":{"TestCaseResult":[{"id":"EID6a3723c4-0175-1000-13e2-a9e5d630c865","testStepResults":{"TestStepResult":[{"id":"EID6a3723c4-0175-1000-174d-26e240f139aa","parent":{"ref":"EID6a3723c4-0175-1000-13e2-a9e5d630c865"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:19:59Z","duration":41,"status":"PASSED"},{"id":"EID6a3723c4-0175-1000-2087-6d1474c982cc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37251f-0175-1000-cf5f-8328ffc0b4a1","parent":{"ref":"EID6a3723c4-0175-1000-2087-6d1474c982cc"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:20:00Z","duration":0,"status":"PASSED"},{"id":"EID6a37251f-0175-1000-8c10-fc1f67b19037","parent":{"ref":"EID6a3723c4-0175-1000-2087-6d1474c982cc"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:20:00Z","duration":0,"status":"PASSED"},{"id":"EID6a37251f-0175-1000-9df4-d3256899b502","parent":{"ref":"EID6a3723c4-0175-1000-2087-6d1474c982cc"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:20:00Z","duration":0,"status":"PASSED"},{"id":"EID6a37251f-0175-1000-7425-12e8865d8de3","parent":{"ref":"EID6a3723c4-0175-1000-2087-6d1474c982cc"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:20:00Z","duration":0,"status":"PASSED"},{"id":"EID6a37251f-0175-1000-80f1-81dbeb42abe5","parent":{"ref":"EID6a3723c4-0175-1000-2087-6d1474c982cc"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:20:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDce698e83-0212-46ca-a837-7c6eff3c226d"},{"ref":"EIDba332648-353b-46a6-b952-1149b2690eea"},{"ref":"EID0e22f614-3786-4e8b-a083-85d3512b7bd0"}]},"parent":{"ref":"EID6a3723c4-0175-1000-13e2-a9e5d630c865"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:19:59Z","duration":136,"status":"PASSED"}]},"parent":{"ref":"EID6a3723c4-0175-1000-ef24-ff221a159450"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:19:59Z","duration":347,"status":"PASSED"},{"id":"EID6a37251f-0175-1000-3a21-3c4c16e65bd7","testStepResults":{"TestStepResult":[{"id":"EID6a372534-0175-1000-e06b-863932d52c35","attachments":{"attachment":[{"ref":"EID00743441-0d3a-4a17-9992-8ffb7a8a7f0c"},{"ref":"EIDae73bc82-961c-41cb-95b6-2f7679661630"}]},"parent":{"ref":"EID6a37251f-0175-1000-3a21-3c4c16e65bd7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:20:00Z","duration":141,"status":"PASSED"},{"id":"EID6a3725f1-0175-1000-35a4-824d0ee7db00","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37269f-0175-1000-cd85-b06712074f6e","parent":{"ref":"EID6a3725f1-0175-1000-35a4-824d0ee7db00"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:20:00Z","duration":0,"status":"PASSED"},{"id":"EID6a37269f-0175-1000-1d07-6d92750ae99d","parent":{"ref":"EID6a3725f1-0175-1000-35a4-824d0ee7db00"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:20:00Z","duration":0,"status":"PASSED"},{"id":"EID6a37269f-0175-1000-e721-f861de2022a8","parent":{"ref":"EID6a3725f1-0175-1000-35a4-824d0ee7db00"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:20:00Z","duration":0,"status":"PASSED"},{"id":"EID6a37269f-0175-1000-5110-0810ed0841dc","parent":{"ref":"EID6a3725f1-0175-1000-35a4-824d0ee7db00"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:20:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDaceb9e6a-3dea-488f-9cfa-713038b8e3f5"},{"ref":"EID6a7de94d-8154-493e-a913-15880f094829"},{"ref":"EIDf978e973-3898-44a9-b83f-b5f47afa0e61"}]},"parent":{"ref":"EID6a37251f-0175-1000-3a21-3c4c16e65bd7"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:20:00Z","duration":46,"status":"PASSED"}]},"parent":{"ref":"EID6a3723c4-0175-1000-ef24-ff221a159450"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:20:00Z","duration":384,"status":"PASSED"},{"id":"EID6a3726a8-0175-1000-0251-a1cac6575fd5","testStepResults":{"TestStepResult":[{"id":"EID6a3726a8-0175-1000-d3d6-d70994a81ec5","attachments":{"attachment":[{"ref":"EIDdd334dd0-3713-4b67-b927-1ccc4a356530"},{"ref":"EID260bfc63-9174-4704-9c60-10d64de5fa51"}]},"parent":{"ref":"EID6a3726a8-0175-1000-0251-a1cac6575fd5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:20:00Z","duration":167,"status":"PASSED"},{"id":"EID6a372795-0175-1000-ab83-48fa9aa0f746","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a372842-0175-1000-08ad-0035e21ccb57","parent":{"ref":"EID6a372795-0175-1000-ab83-48fa9aa0f746"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:20:01Z","duration":0,"status":"PASSED"},{"id":"EID6a372842-0175-1000-5cdc-2d5885e92d73","parent":{"ref":"EID6a372795-0175-1000-ab83-48fa9aa0f746"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:20:01Z","duration":0,"status":"PASSED"},{"id":"EID6a372842-0175-1000-6b23-0e4059547ff0","parent":{"ref":"EID6a372795-0175-1000-ab83-48fa9aa0f746"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:20:01Z","duration":0,"status":"PASSED"},{"id":"EID6a372842-0175-1000-0f2b-4ceff4ce50fb","parent":{"ref":"EID6a372795-0175-1000-ab83-48fa9aa0f746"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:20:01Z","duration":0,"status":"PASSED"},{"id":"EID6a372842-0175-1000-e953-087380c131f1","parent":{"ref":"EID6a372795-0175-1000-ab83-48fa9aa0f746"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:20:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa3048942-1029-4dee-b02e-8e437f6965d9"},{"ref":"EID08668565-b70a-46ee-bdb8-4a0fefd86f9a"},{"ref":"EID1bfa59da-8d83-456c-8457-9d889dd0e6a6"}]},"parent":{"ref":"EID6a3726a8-0175-1000-0251-a1cac6575fd5"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:20:00Z","duration":40,"status":"PASSED"}]},"parent":{"ref":"EID6a3723c4-0175-1000-ef24-ff221a159450"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:20:00Z","duration":411,"status":"PASSED"},{"id":"EID6a372843-0175-1000-9aba-253af7314ce9","testStepResults":{"TestStepResult":[{"id":"EID6a372843-0175-1000-2087-d1b634db39a1","attachments":{"attachment":[{"ref":"EID5c26190b-d696-45f2-b69d-d3569dca9758"},{"ref":"EID2ed62a6c-2b5f-4da4-ba5f-f753cf86020e"}]},"parent":{"ref":"EID6a372843-0175-1000-9aba-253af7314ce9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:20:01Z","duration":222,"status":"PASSED"},{"id":"EID6a3729b2-0175-1000-4d28-2d4320c69b38","parent":{"ref":"EID6a372843-0175-1000-9aba-253af7314ce9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:20:01Z","duration":0,"status":"PASSED"},{"id":"EID6a3729b2-0175-1000-3e87-02b42e8df251","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a372b37-0175-1000-96bb-5ceb47655b99","parent":{"ref":"EID6a3729b2-0175-1000-3e87-02b42e8df251"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:20:01Z","duration":0,"status":"PASSED"},{"id":"EID6a372b37-0175-1000-0c61-b35e820bb8c1","parent":{"ref":"EID6a3729b2-0175-1000-3e87-02b42e8df251"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:20:01Z","duration":0,"status":"PASSED"},{"id":"EID6a372b37-0175-1000-bd61-5589856a9272","parent":{"ref":"EID6a3729b2-0175-1000-3e87-02b42e8df251"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:20:01Z","duration":0,"status":"PASSED"},{"id":"EID6a372b37-0175-1000-ad03-e795eb78ebc2","parent":{"ref":"EID6a3729b2-0175-1000-3e87-02b42e8df251"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:20:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID036be437-2836-4528-a08a-c167bc9ceaca"},{"ref":"EID6f3f1e47-876f-46fd-a279-cf37e0c324b0"},{"ref":"EIDd7e42624-36db-4f77-b5e5-f17347d7f711"}]},"parent":{"ref":"EID6a372843-0175-1000-9aba-253af7314ce9"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:20:01Z","duration":142,"status":"PASSED"},{"id":"EID6a372b37-0175-1000-f341-ffb9e762d42a","attachments":{"attachment":{"ref":"EID68b5d1cb-8c97-469d-b8a9-d59be1cbeb56"}},"parent":{"ref":"EID6a372843-0175-1000-9aba-253af7314ce9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:20:01Z","duration":3,"status":"PASSED"},{"id":"EID6a372b7e-0175-1000-d901-9323b3b3d31c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a372c80-0175-1000-eb7d-b26ef68ce0a3","parent":{"ref":"EID6a372b7e-0175-1000-d901-9323b3b3d31c"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:20:02Z","duration":0,"status":"PASSED"},{"id":"EID6a372c80-0175-1000-059b-68ebbb7990b1","parent":{"ref":"EID6a372b7e-0175-1000-d901-9323b3b3d31c"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:20:02Z","duration":0,"status":"PASSED"},{"id":"EID6a372c80-0175-1000-4ebe-374b79ebf307","parent":{"ref":"EID6a372b7e-0175-1000-d901-9323b3b3d31c"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:20:02Z","duration":0,"status":"PASSED"},{"id":"EID6a372c80-0175-1000-8de4-e9621c867fe2","parent":{"ref":"EID6a372b7e-0175-1000-d901-9323b3b3d31c"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:20:02Z","duration":0,"status":"PASSED"},{"id":"EID6a372c80-0175-1000-13e3-402ee5c8c9c8","parent":{"ref":"EID6a372b7e-0175-1000-d901-9323b3b3d31c"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:20:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf7631e21-0adc-4a03-887d-96629514b705"},{"ref":"EID1723141c-bbed-4b39-a2eb-4e1f25392c3f"},{"ref":"EID2dca6e39-7399-4f09-a275-d30779597626"}]},"parent":{"ref":"EID6a372843-0175-1000-9aba-253af7314ce9"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:20:01Z","duration":58,"status":"PASSED"}]},"parent":{"ref":"EID6a3723c4-0175-1000-ef24-ff221a159450"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:20:01Z","duration":1085,"status":"PASSED"},{"id":"EID6a372c80-0175-1000-f598-643cc152a731","testStepResults":{"TestStepResult":[{"id":"EID6a372c80-0175-1000-6488-2214e1ecaae1","attachments":{"attachment":[{"ref":"EIDbf7befe1-b89c-448c-a0b1-23dc0df58f1a"},{"ref":"EIDd36e1be2-ad05-41cb-a3a2-49e99cb32621"}]},"parent":{"ref":"EID6a372c80-0175-1000-f598-643cc152a731"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:20:02Z","duration":218,"status":"PASSED"},{"id":"EID6a372d92-0175-1000-fcbc-e16a2af12026","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a372e98-0175-1000-12a9-e91c71d1e861","parent":{"ref":"EID6a372d92-0175-1000-fcbc-e16a2af12026"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:20:02Z","duration":0,"status":"PASSED"},{"id":"EID6a372e98-0175-1000-f50d-254353a39977","parent":{"ref":"EID6a372d92-0175-1000-fcbc-e16a2af12026"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:20:02Z","duration":0,"status":"PASSED"},{"id":"EID6a372e98-0175-1000-c992-19e3c3b9a929","parent":{"ref":"EID6a372d92-0175-1000-fcbc-e16a2af12026"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:20:02Z","duration":0,"status":"PASSED"},{"id":"EID6a372e98-0175-1000-8d4e-43ff92215762","parent":{"ref":"EID6a372d92-0175-1000-fcbc-e16a2af12026"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:20:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6fb8655c-8b41-4ba8-8057-e5429cc9dd13"},{"ref":"EIDd05eaf1d-b7ac-4ae6-bd26-776674052c9e"},{"ref":"EID536154ac-b604-4a23-a58d-e47320e95656"}]},"parent":{"ref":"EID6a372c80-0175-1000-f598-643cc152a731"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:20:02Z","duration":148,"status":"PASSED"}]},"parent":{"ref":"EID6a3723c4-0175-1000-ef24-ff221a159450"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:20:02Z","duration":536,"status":"PASSED"},{"id":"EID6a372e98-0175-1000-b19b-b41aa44ef9f3","testStepResults":{"TestStepResult":[{"id":"EID6a372e98-0175-1000-b6b7-786c97a3565d","attachments":{"attachment":[{"ref":"EIDbd8b9acc-0795-4947-b5e9-8f15a1dc2a1e"},{"ref":"EID6400dff2-737d-439e-8bfe-219d59bfb2d6"}]},"parent":{"ref":"EID6a372e98-0175-1000-b19b-b41aa44ef9f3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:20:02Z","duration":94,"status":"PASSED"},{"id":"EID6a372f25-0175-1000-a9ad-4a58787b6a97","parent":{"ref":"EID6a372e98-0175-1000-b19b-b41aa44ef9f3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:20:02Z","duration":47,"status":"PASSED"},{"id":"EID6a372f54-0175-1000-fc74-31dcffbd73f2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3730d8-0175-1000-0b9c-43275e91bb89","parent":{"ref":"EID6a372f54-0175-1000-fc74-31dcffbd73f2"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:20:03Z","duration":0,"status":"PASSED"},{"id":"EID6a3730d8-0175-1000-6864-8d5e7726c1e3","parent":{"ref":"EID6a372f54-0175-1000-fc74-31dcffbd73f2"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:20:03Z","duration":0,"status":"PASSED"},{"id":"EID6a3730d8-0175-1000-075a-976467375fa6","parent":{"ref":"EID6a372f54-0175-1000-fc74-31dcffbd73f2"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:20:03Z","duration":0,"status":"PASSED"},{"id":"EID6a3730d8-0175-1000-21cf-ae2cac116794","parent":{"ref":"EID6a372f54-0175-1000-fc74-31dcffbd73f2"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:20:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2bc5c3f2-5ff8-46c1-ba88-ebb2b2ca40d4"},{"ref":"EIDe21b9cce-30f4-4d93-a34e-5456ceb66586"},{"ref":"EID0dd99bb9-ac7e-473a-90a8-6c955bdb197b"}]},"parent":{"ref":"EID6a372e98-0175-1000-b19b-b41aa44ef9f3"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:20:02Z","duration":239,"status":"PASSED"},{"id":"EID6a3730d8-0175-1000-6d11-a1cc6dbdd62f","attachments":{"attachment":{"ref":"EIDb358f098-9c0a-4c97-b9f3-a8d26dcaa26f"}},"parent":{"ref":"EID6a372e98-0175-1000-b19b-b41aa44ef9f3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:20:03Z","duration":2,"status":"PASSED"},{"id":"EID6a3730ff-0175-1000-45fe-a96c19d4b5aa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3732b1-0175-1000-8561-d3cff3292115","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a3730ff-0175-1000-45fe-a96c19d4b5aa"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:20:03Z","duration":11,"status":"FAILED"},{"id":"EID6a3732bc-0175-1000-f6ed-f91248b24fee","parent":{"ref":"EID6a3730ff-0175-1000-45fe-a96c19d4b5aa"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:20:03Z","duration":0,"status":"PASSED"},{"id":"EID6a3732bc-0175-1000-b228-63abff30db76","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6a3730ff-0175-1000-45fe-a96c19d4b5aa"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:20:03Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDa0f81043-ba6c-45b8-9635-831e4af99550"},{"ref":"EID8c32ecbb-f4aa-4584-a8a1-10769a133f7d"},{"ref":"EID090c2154-10ac-4513-95e5-c901ac644b99"}]},"parent":{"ref":"EID6a372e98-0175-1000-b19b-b41aa44ef9f3"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:20:03Z","duration":365,"status":"FAILED"}]},"parent":{"ref":"EID6a3723c4-0175-1000-ef24-ff221a159450"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:20:02Z","duration":1068,"status":"FAILED"},{"id":"EID6a3732c4-0175-1000-5cae-aa2263a99177","testStepResults":{"TestStepResult":[{"id":"EID6a3732c4-0175-1000-aea9-47b7b35db467","attachments":{"attachment":[{"ref":"EID0fe909dd-52ce-4458-8dab-14b30ba8b667"},{"ref":"EID609371dc-e936-4b88-ab50-dc929e391b71"}]},"parent":{"ref":"EID6a3732c4-0175-1000-5cae-aa2263a99177"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:20:03Z","duration":179,"status":"PASSED"},{"id":"EID6a3733f0-0175-1000-e9ef-ba1e8fda8f08","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3737a6-0175-1000-a50d-12fe363d51f4","parent":{"ref":"EID6a3733f0-0175-1000-e9ef-ba1e8fda8f08"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:20:05Z","duration":0,"status":"PASSED"},{"id":"EID6a3737a6-0175-1000-debb-57be5d2c5bb6","parent":{"ref":"EID6a3733f0-0175-1000-e9ef-ba1e8fda8f08"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:20:05Z","duration":0,"status":"PASSED"},{"id":"EID6a3737a6-0175-1000-0607-870c73c2e064","parent":{"ref":"EID6a3733f0-0175-1000-e9ef-ba1e8fda8f08"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:20:05Z","duration":0,"status":"PASSED"},{"id":"EID6a3737a6-0175-1000-fcfa-fadcfd0073ce","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a3733f0-0175-1000-e9ef-ba1e8fda8f08"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:20:05Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID68a4806d-d01b-487c-b1e0-61eec44689d9"},{"ref":"EIDb8a58fce-2a40-4618-971f-bc25fb06bc82"},{"ref":"EIDa04250f9-e05a-476b-a315-af2eb0ab0af9"}]},"parent":{"ref":"EID6a3732c4-0175-1000-5cae-aa2263a99177"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:20:04Z","duration":711,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a3723c4-0175-1000-ef24-ff221a159450"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:20:03Z","duration":1250,"status":"PASSED_MANUAL"},{"id":"EID6a3737a6-0175-1000-4774-ef09f48ad1c0","testStepResults":{"TestStepResult":{"id":"EID6a3737a6-0175-1000-1410-87b3d3f771f4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a373880-0175-1000-e509-980d941c9196","parent":{"ref":"EID6a3737a6-0175-1000-1410-87b3d3f771f4"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:20:05Z","duration":0,"status":"PASSED"},{"id":"EID6a373881-0175-1000-5301-f1490569728f","parent":{"ref":"EID6a3737a6-0175-1000-1410-87b3d3f771f4"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:20:05Z","duration":0,"status":"PASSED"},{"id":"EID6a373881-0175-1000-440f-faadfead30fa","parent":{"ref":"EID6a3737a6-0175-1000-1410-87b3d3f771f4"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:20:05Z","duration":0,"status":"PASSED"},{"id":"EID6a373881-0175-1000-c698-0f28f476c964","parent":{"ref":"EID6a3737a6-0175-1000-1410-87b3d3f771f4"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:20:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0309f255-11f2-4035-aab3-45e8cae26c4d"},{"ref":"EID8a3cf6fe-fa90-47ec-acd4-923ebacad7e8"},{"ref":"EID3e7d3465-a043-4338-892e-ef7bd416323a"}]},"parent":{"ref":"EID6a3737a6-0175-1000-4774-ef09f48ad1c0"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:20:05Z","duration":76,"status":"PASSED"}},"parent":{"ref":"EID6a3723c4-0175-1000-ef24-ff221a159450"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:20:05Z","duration":219,"status":"PASSED"},{"id":"EID6a373889-0175-1000-55e7-69d5b5924ecd","testStepResults":{"TestStepResult":{"id":"EID6a373889-0175-1000-91a8-9a547dbbed81","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a373a90-0175-1000-fdbe-5adb86c4c041","parent":{"ref":"EID6a373889-0175-1000-91a8-9a547dbbed81"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:20:05Z","duration":0,"status":"PASSED"},{"id":"EID6a373a90-0175-1000-04ce-857817fdbf5c","parent":{"ref":"EID6a373889-0175-1000-91a8-9a547dbbed81"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:20:05Z","duration":0,"status":"PASSED"},{"id":"EID6a373a90-0175-1000-a220-9ad14bc6bd9c","parent":{"ref":"EID6a373889-0175-1000-91a8-9a547dbbed81"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:20:05Z","duration":0,"status":"PASSED"},{"id":"EID6a373a90-0175-1000-ef53-2461b7d18d3a","parent":{"ref":"EID6a373889-0175-1000-91a8-9a547dbbed81"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:20:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb58da24c-ed83-4757-833e-de38e469f962"},{"ref":"EID2e9beac1-0bc8-4b55-841a-cdc5109ee9d2"},{"ref":"EID2e1c6e69-35f4-4a23-9d08-b86ceeafce85"}]},"parent":{"ref":"EID6a373889-0175-1000-55e7-69d5b5924ecd"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:20:05Z","duration":222,"status":"PASSED"}},"parent":{"ref":"EID6a3723c4-0175-1000-ef24-ff221a159450"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:20:05Z","duration":519,"status":"PASSED"},{"id":"EID6a373a90-0175-1000-d3a3-0518cf39973b","testStepResults":{"TestStepResult":{"id":"EID6a373a90-0175-1000-383d-d6b0849679d5","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EID8b5cbfcb-8506-4036-ad0f-0644e6e50590"},{"ref":"EIDf5971fab-7b93-44ff-9feb-c1218770ce30"},{"ref":"EID638dc22c-8bbd-4850-b2ac-0ed2a0044066"},{"ref":"EIDf0f1abff-a0a5-4003-bade-b871aae05d0b"},{"ref":"EID7beacd50-1ec7-48f7-949f-1ed4d520842f"},{"ref":"EID47676b1f-4618-46f5-96e9-b466be34e738"},{"ref":"EIDd4c14a3b-1bd1-484a-9c5e-fd6dbfcdf67f"},{"ref":"EID0473ec95-d681-401c-81dd-9e21e505eab1"},{"ref":"EIDe0bd698e-ad81-4128-994b-027fb8277a97"}]},"parent":{"ref":"EID6a373a90-0175-1000-d3a3-0518cf39973b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:20:05Z","duration":853,"status":"SKIPPED"}},"parent":{"ref":"EID6a3723c4-0175-1000-ef24-ff221a159450"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:20:05Z","duration":963,"status":"SKIPPED"},{"id":"EID6a373e54-0175-1000-447b-8f3d92ab36d9","testStepResults":{"TestStepResult":{"id":"EID6a373e54-0175-1000-dba7-29cc4a4c2938","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a374127-0175-1000-3a6d-be0007e3f111","parent":{"ref":"EID6a373e54-0175-1000-dba7-29cc4a4c2938"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:20:07Z","duration":0,"status":"PASSED"},{"id":"EID6a374127-0175-1000-d8c7-a615662cd7ee","parent":{"ref":"EID6a373e54-0175-1000-dba7-29cc4a4c2938"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:20:07Z","duration":0,"status":"PASSED"},{"id":"EID6a374127-0175-1000-4a60-d7af9e816b20","parent":{"ref":"EID6a373e54-0175-1000-dba7-29cc4a4c2938"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:20:07Z","duration":0,"status":"PASSED"},{"id":"EID6a374127-0175-1000-f009-bb5e61af405b","parent":{"ref":"EID6a373e54-0175-1000-dba7-29cc4a4c2938"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:20:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0ee55f15-1c50-43e5-afd0-a8056b3bb1bc"},{"ref":"EIDfa422499-8889-4d41-9549-be2fb87be4ef"},{"ref":"EIDb8c95563-652e-464d-8474-287e0ca6d4b7"}]},"parent":{"ref":"EID6a373e54-0175-1000-447b-8f3d92ab36d9"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:20:06Z","duration":348,"status":"PASSED"}},"parent":{"ref":"EID6a3723c4-0175-1000-ef24-ff221a159450"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:20:06Z","duration":723,"status":"PASSED"},{"id":"EID6a374127-0175-1000-3c76-67bcc03398f0","testStepResults":{"TestStepResult":{"id":"EID6a374127-0175-1000-78e9-809adaf6f268","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3742af-0175-1000-f5cc-e78eb7bd1751","parent":{"ref":"EID6a374127-0175-1000-78e9-809adaf6f268"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:20:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3742af-0175-1000-3ce4-3ad8f1000166","parent":{"ref":"EID6a374127-0175-1000-78e9-809adaf6f268"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:20:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3742af-0175-1000-cb83-a09349286689","parent":{"ref":"EID6a374127-0175-1000-78e9-809adaf6f268"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:20:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3742af-0175-1000-8264-df6e873d2c2b","parent":{"ref":"EID6a374127-0175-1000-78e9-809adaf6f268"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:20:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3742af-0175-1000-9e52-1b95f8b7c90e","parent":{"ref":"EID6a374127-0175-1000-78e9-809adaf6f268"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:20:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3742af-0175-1000-17ba-0572162de381","parent":{"ref":"EID6a374127-0175-1000-78e9-809adaf6f268"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:20:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1a02b5d8-51c7-4249-9f4c-8bfabcf25150"},{"ref":"EIDe0f9ef58-efec-4924-bc51-13eaa188ee57"},{"ref":"EID288cb6ca-8228-477e-850a-18a2bf6cf940"}]},"parent":{"ref":"EID6a374127-0175-1000-3c76-67bcc03398f0"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:20:07Z","duration":102,"status":"PASSED"}},"parent":{"ref":"EID6a3723c4-0175-1000-ef24-ff221a159450"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:20:07Z","duration":467,"status":"PASSED"},{"id":"EID6a3742fb-0175-1000-1056-b1572a2dca91","testStepResults":{"TestStepResult":{"id":"EID6a3742fb-0175-1000-bdf4-fa6cc6e3d2c1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3744ca-0175-1000-64e5-10562f68b33e","parent":{"ref":"EID6a3742fb-0175-1000-bdf4-fa6cc6e3d2c1"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:20:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3744ca-0175-1000-4558-ee508cc5ceba","parent":{"ref":"EID6a3742fb-0175-1000-bdf4-fa6cc6e3d2c1"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:20:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3744ca-0175-1000-8d56-cbf25c2b6b42","parent":{"ref":"EID6a3742fb-0175-1000-bdf4-fa6cc6e3d2c1"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:20:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3744ca-0175-1000-abfc-6aaa3d584ed6","parent":{"ref":"EID6a3742fb-0175-1000-bdf4-fa6cc6e3d2c1"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:20:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3744ca-0175-1000-4b6d-48b25992928d","parent":{"ref":"EID6a3742fb-0175-1000-bdf4-fa6cc6e3d2c1"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:20:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3744ca-0175-1000-baae-891317b1d47f","parent":{"ref":"EID6a3742fb-0175-1000-bdf4-fa6cc6e3d2c1"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:20:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID799b896d-1c85-47ed-8ebf-fa7842f3d65b"},{"ref":"EID7937488b-1dd9-4f36-969e-f1a840a3dbdb"},{"ref":"EIDbc8bdffd-c2ab-4534-9ada-6100b0381e4b"}]},"parent":{"ref":"EID6a3742fb-0175-1000-1056-b1572a2dca91"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:20:07Z","duration":113,"status":"PASSED"}},"parent":{"ref":"EID6a3723c4-0175-1000-ef24-ff221a159450"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:20:07Z","duration":464,"status":"PASSED"},{"id":"EID6a3744cb-0175-1000-7af5-99e2565cd0d8","testStepResults":{"TestStepResult":{"id":"EID6a3744cb-0175-1000-c754-9cec36c3e4be","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3745b3-0175-1000-a654-2460ae19a1e9","parent":{"ref":"EID6a3744cb-0175-1000-c754-9cec36c3e4be"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:20:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3745b3-0175-1000-360c-444961077825","parent":{"ref":"EID6a3744cb-0175-1000-c754-9cec36c3e4be"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:20:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3745b3-0175-1000-3da7-1ab918c22215","parent":{"ref":"EID6a3744cb-0175-1000-c754-9cec36c3e4be"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:20:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3745b3-0175-1000-06a9-142d07a604ef","parent":{"ref":"EID6a3744cb-0175-1000-c754-9cec36c3e4be"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:20:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc774daf5-61f1-4b1a-8445-cd22d7237b63"},{"ref":"EID0d32397a-d523-4c62-a537-10b3ca2436f0"},{"ref":"EID69ceaaac-c045-457f-a646-1bb1988a81ab"}]},"parent":{"ref":"EID6a3744cb-0175-1000-7af5-99e2565cd0d8"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:20:08Z","duration":105,"status":"PASSED"}},"parent":{"ref":"EID6a3723c4-0175-1000-ef24-ff221a159450"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:20:08Z","duration":232,"status":"PASSED"},{"id":"EID6a3745b4-0175-1000-ab8c-26700a739f06","testStepResults":{"TestStepResult":[{"id":"EID6a3745b4-0175-1000-a1e4-53f6ed268765","attachments":{"attachment":[{"ref":"EID59d56dbd-7e47-4717-b887-b68aa0edc2ac"},{"ref":"EID08314bf8-78cd-4e61-8c1b-4f6c08f9b51b"},{"ref":"EID5a1d52cc-a7d9-4c93-865c-553b6a21c061"},{"ref":"EIDe836686a-9afd-4af3-bf40-50da10f78631"}]},"parent":{"ref":"EID6a3745b4-0175-1000-ab8c-26700a739f06"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:20:08Z","duration":728,"status":"PASSED"},{"id":"EID6a3748d9-0175-1000-3686-d29d483bf0be","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a374b39-0175-1000-5408-7c1c5a382c82","parent":{"ref":"EID6a3748d9-0175-1000-3686-d29d483bf0be"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:20:10Z","duration":0,"status":"PASSED"},{"id":"EID6a374b39-0175-1000-17ca-8bbcc763dedb","parent":{"ref":"EID6a3748d9-0175-1000-3686-d29d483bf0be"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:20:10Z","duration":0,"status":"PASSED"},{"id":"EID6a374b39-0175-1000-8949-6c1664aa82d9","parent":{"ref":"EID6a3748d9-0175-1000-3686-d29d483bf0be"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:20:10Z","duration":0,"status":"PASSED"},{"id":"EID6a374b39-0175-1000-7904-48c720a4161c","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6a3748d9-0175-1000-3686-d29d483bf0be"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:20:10Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID833f37bf-204f-4c51-be03-97eb8b0c3cca"},{"ref":"EID0c3129b6-c178-4893-9616-d3302300768e"},{"ref":"EIDb79c6e98-4359-4b35-8f9c-237ff15a5555"}]},"parent":{"ref":"EID6a3745b4-0175-1000-ab8c-26700a739f06"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:20:09Z","duration":291,"status":"FAILED"}]},"parent":{"ref":"EID6a3723c4-0175-1000-ef24-ff221a159450"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:20:08Z","duration":1413,"status":"FAILED"},{"id":"EID6a374b39-0175-1000-3d95-8b9b233d55b6","testStepResults":{"TestStepResult":{"id":"EID6a374b39-0175-1000-7fed-317d6c757223","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a374cc6-0175-1000-e5bb-4b11a6f09683","parent":{"ref":"EID6a374b39-0175-1000-7fed-317d6c757223"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:20:10Z","duration":0,"status":"PASSED"},{"id":"EID6a374cc6-0175-1000-2130-d60479759f7c","parent":{"ref":"EID6a374b39-0175-1000-7fed-317d6c757223"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:20:10Z","duration":0,"status":"PASSED"},{"id":"EID6a374cc6-0175-1000-d581-b741ca1ef86d","parent":{"ref":"EID6a374b39-0175-1000-7fed-317d6c757223"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:20:10Z","duration":0,"status":"PASSED"},{"id":"EID6a374cc6-0175-1000-e9c6-cbb675e559de","parent":{"ref":"EID6a374b39-0175-1000-7fed-317d6c757223"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:20:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb140c7ac-3f2d-4ee6-b17d-d4055a01fece"},{"ref":"EIDd7482c65-057a-445f-b8ec-6fcd623a5ec1"},{"ref":"EIDd8b1a003-1281-4415-83dd-fb64d3eacb63"}]},"parent":{"ref":"EID6a374b39-0175-1000-3d95-8b9b233d55b6"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:20:10Z","duration":156,"status":"PASSED"}},"parent":{"ref":"EID6a3723c4-0175-1000-ef24-ff221a159450"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:20:10Z","duration":397,"status":"PASSED"},{"id":"EID6a374cc6-0175-1000-350a-144bcd342247","testStepResults":{"TestStepResult":[{"id":"EID6a374cc6-0175-1000-1f88-c33759d5caaf","parent":{"ref":"EID6a374cc6-0175-1000-350a-144bcd342247"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:20:10Z","duration":0,"status":"PASSED"},{"id":"EID6a374cc6-0175-1000-92bb-b3daea799aae","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a374e17-0175-1000-b4cb-6bc664eecbcd","parent":{"ref":"EID6a374cc6-0175-1000-92bb-b3daea799aae"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:20:10Z","duration":0,"status":"PASSED"},{"id":"EID6a374e17-0175-1000-155a-7a988483d26c","parent":{"ref":"EID6a374cc6-0175-1000-92bb-b3daea799aae"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:20:10Z","duration":0,"status":"PASSED"},{"id":"EID6a374e17-0175-1000-5051-b7d4a110128b","parent":{"ref":"EID6a374cc6-0175-1000-92bb-b3daea799aae"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:20:10Z","duration":0,"status":"PASSED"},{"id":"EID6a374e17-0175-1000-06fb-c8e3f77af121","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6a374cc6-0175-1000-92bb-b3daea799aae"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:20:10Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID8837a056-50df-4f6c-9e7a-a33486f2e469"},{"ref":"EID323a0dbc-87ac-4420-a039-480466956199"},{"ref":"EID091b8cd6-519b-46ea-86a3-d149f78ab8f4"}]},"parent":{"ref":"EID6a374cc6-0175-1000-350a-144bcd342247"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:20:10Z","duration":74,"status":"FAILED"}]},"parent":{"ref":"EID6a3723c4-0175-1000-ef24-ff221a159450"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:20:10Z","duration":381,"status":"FAILED"}]},"parent":{"ref":"EID384ebe78-3da0-4888-b0a9-db866bedd119"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:19:59Z","duration":10879,"status":"FAILED"},{"id":"EID6a374e43-0175-1000-b057-56d99eab86f9","testCaseResults":{"TestCaseResult":[{"id":"EID6a374e43-0175-1000-9c94-bac0eb114820","testStepResults":{"TestStepResult":[{"id":"EID6a374e43-0175-1000-9de8-786718d74b68","parent":{"ref":"EID6a374e43-0175-1000-9c94-bac0eb114820"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:20:10Z","duration":0,"status":"PASSED"},{"id":"EID6a374e43-0175-1000-6a17-f30ff3b38f96","parent":{"ref":"EID6a374e43-0175-1000-9c94-bac0eb114820"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:20:10Z","duration":157,"status":"PASSED"},{"id":"EID6a374e44-0175-1000-7a8a-2c7831fa382c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a375208-0175-1000-3fc8-66016b9d51f1","parent":{"ref":"EID6a374e44-0175-1000-7a8a-2c7831fa382c"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:20:11Z","duration":0,"status":"PASSED"},{"id":"EID6a375208-0175-1000-be97-f50adeddcfa3","parent":{"ref":"EID6a374e44-0175-1000-7a8a-2c7831fa382c"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:20:11Z","duration":0,"status":"PASSED"},{"id":"EID6a375208-0175-1000-4dc9-d6c6623e297e","parent":{"ref":"EID6a374e44-0175-1000-7a8a-2c7831fa382c"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:20:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID43989484-bcd5-4ab1-8b60-06903e2dde33"},{"ref":"EIDc4d8b1ee-4a16-47a0-835b-7a93bce73b53"},{"ref":"EIDbc99240e-05be-4b8d-8338-7bb6c147cf10"}]},"parent":{"ref":"EID6a374e43-0175-1000-9c94-bac0eb114820"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:20:10Z","duration":187,"status":"PASSED"},{"id":"EID6a3753cf-0175-1000-e7f0-5cf6791cee76","attachments":{"attachment":{"ref":"EIDec047a84-cb12-46ef-8914-84866696a7c4"}},"parent":{"ref":"EID6a374e43-0175-1000-9c94-bac0eb114820"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:20:12Z","duration":0,"status":"PASSED"},{"id":"EID6a37540d-0175-1000-664e-fc88e802b454","parent":{"ref":"EID6a374e43-0175-1000-9c94-bac0eb114820"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:20:12Z","duration":141,"status":"PASSED"}]},"parent":{"ref":"EID6a374e43-0175-1000-b057-56d99eab86f9"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:20:10Z","duration":1624,"status":"PASSED"},{"id":"EID6a37549b-0175-1000-d7d3-a7f47396bc1e","testStepResults":{"TestStepResult":[{"id":"EID6a37549b-0175-1000-4850-829f905e6270","parent":{"ref":"EID6a37549b-0175-1000-d7d3-a7f47396bc1e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:20:12Z","duration":41,"status":"PASSED"},{"id":"EID6a37549b-0175-1000-4174-efffb0019faa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a375565-0175-1000-b3b7-57fee2218221","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a37549b-0175-1000-4174-efffb0019faa"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:20:12Z","duration":104,"status":"FAILED"},{"id":"EID6a3755cd-0175-1000-f1ef-43e5e4323cbe","parent":{"ref":"EID6a37549b-0175-1000-4174-efffb0019faa"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:20:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3755cd-0175-1000-0798-01ee58f92ea6","parent":{"ref":"EID6a37549b-0175-1000-4174-efffb0019faa"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:20:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3755cd-0175-1000-9b55-9b160466bcde","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6a37549b-0175-1000-4174-efffb0019faa"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:20:12Z","duration":0,"status":"FAILED"},{"id":"EID6a3755cd-0175-1000-aac3-e5fb38ad0515","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6a37549b-0175-1000-4174-efffb0019faa"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:20:12Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDeb261896-7333-4704-a95b-e84f9b766414"},{"ref":"EIDaa33f851-261a-4b28-9407-03e360edceb6"},{"ref":"EIDb1809d96-49d3-4927-bbe8-7b55a3e99a67"}]},"parent":{"ref":"EID6a37549b-0175-1000-d7d3-a7f47396bc1e"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:20:12Z","duration":131,"status":"FAILED"}]},"parent":{"ref":"EID6a374e43-0175-1000-b057-56d99eab86f9"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:20:12Z","duration":307,"status":"FAILED"},{"id":"EID6a3755ce-0175-1000-b0ad-b2bb7626e8ec","testStepResults":{"TestStepResult":{"id":"EID6a3755ce-0175-1000-09d0-bf308d88c37d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3756a8-0175-1000-6513-280b594dd6ef","parent":{"ref":"EID6a3755ce-0175-1000-09d0-bf308d88c37d"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:20:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3756a8-0175-1000-8b05-b2897b9e364e","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a3755ce-0175-1000-09d0-bf308d88c37d"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:20:12Z","duration":10,"status":"FAILED"},{"id":"EID6a3756b2-0175-1000-3641-63dff2da3015","parent":{"ref":"EID6a3755ce-0175-1000-09d0-bf308d88c37d"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:20:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1ead6b26-a14b-425c-97c9-53067b136f10"},{"ref":"EIDd044348d-cad0-46d9-8ac2-05679635a5eb"},{"ref":"EID3d98eec8-a5af-4dcf-bc0a-9bbdaaf60fea"}]},"parent":{"ref":"EID6a3755ce-0175-1000-b0ad-b2bb7626e8ec"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:20:12Z","duration":115,"status":"FAILED"}},"parent":{"ref":"EID6a374e43-0175-1000-b057-56d99eab86f9"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:20:12Z","duration":228,"status":"FAILED"},{"id":"EID6a3756b2-0175-1000-2ba0-b6a0426e17f9","testStepResults":{"TestStepResult":{"id":"EID6a3756b2-0175-1000-9798-2b86f36e52fa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37575a-0175-1000-31de-42a9d24cc6d3","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a3756b2-0175-1000-9798-2b86f36e52fa"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:20:13Z","duration":0,"status":"FAILED"},{"id":"EID6a37575a-0175-1000-6f97-ead83239d62a","parent":{"ref":"EID6a3756b2-0175-1000-9798-2b86f36e52fa"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:20:13Z","duration":0,"status":"PASSED"},{"id":"EID6a37575a-0175-1000-5758-78a656c1f53e","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a3756b2-0175-1000-9798-2b86f36e52fa"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:20:13Z","duration":12,"status":"FAILED"},{"id":"EID6a375766-0175-1000-9410-0b85889a2ee4","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6a3756b2-0175-1000-9798-2b86f36e52fa"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:20:13Z","duration":1,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID5f629fed-eb0b-44d5-8bc3-9ffd58203307"},{"ref":"EID1782d436-bb8b-402e-87b1-095cb5818b41"},{"ref":"EID87e89bbe-7bbf-4c39-9aca-7c9565d66a28"}]},"parent":{"ref":"EID6a3756b2-0175-1000-2ba0-b6a0426e17f9"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:20:12Z","duration":101,"status":"FAILED"}},"parent":{"ref":"EID6a374e43-0175-1000-b057-56d99eab86f9"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:20:12Z","duration":181,"status":"FAILED"},{"id":"EID6a375767-0175-1000-56f2-3ed1eb70b80a","testStepResults":{"TestStepResult":{"id":"EID6a375767-0175-1000-4a0a-edb7cb588021","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37582e-0175-1000-e3d5-fc60b2079718","parent":{"ref":"EID6a375767-0175-1000-4a0a-edb7cb588021"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:20:13Z","duration":0,"status":"PASSED"},{"id":"EID6a37582e-0175-1000-db28-55d7b846d5d4","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a375767-0175-1000-4a0a-edb7cb588021"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:20:13Z","duration":15,"status":"FAILED"},{"id":"EID6a37583d-0175-1000-b356-ed6b758e8440","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6a375767-0175-1000-4a0a-edb7cb588021"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:20:13Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDf615c196-855c-411b-a9e0-d5d93be331ca"},{"ref":"EID309aa20a-5e3a-4f83-93c2-a700220b061b"},{"ref":"EID8daba856-5318-41c3-83a8-5bdd62d08abb"}]},"parent":{"ref":"EID6a375767-0175-1000-56f2-3ed1eb70b80a"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:20:13Z","duration":119,"status":"FAILED"}},"parent":{"ref":"EID6a374e43-0175-1000-b057-56d99eab86f9"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:20:13Z","duration":214,"status":"FAILED"},{"id":"EID6a37583d-0175-1000-7bd0-63a8e25f5072","testStepResults":{"TestStepResult":{"id":"EID6a37583d-0175-1000-9cff-4224dc62dc74","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a375941-0175-1000-41b6-669ec7ac04b3","parent":{"ref":"EID6a37583d-0175-1000-9cff-4224dc62dc74"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:20:13Z","duration":0,"status":"PASSED"},{"id":"EID6a375941-0175-1000-8204-7d512c8fd725","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a37583d-0175-1000-9cff-4224dc62dc74"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:20:13Z","duration":12,"status":"FAILED"},{"id":"EID6a37594d-0175-1000-99c4-2369e366939a","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a37583d-0175-1000-9cff-4224dc62dc74"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:20:13Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDb6186c8c-23c9-4f13-b473-865008124307"},{"ref":"EID4ccb2365-bca1-442e-b48e-d96f29be983e"},{"ref":"EIDe212c5c0-e00a-48d1-a538-8fc0d3d307d9"}]},"parent":{"ref":"EID6a37583d-0175-1000-7bd0-63a8e25f5072"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:20:13Z","duration":202,"status":"FAILED"}},"parent":{"ref":"EID6a374e43-0175-1000-b057-56d99eab86f9"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:20:13Z","duration":272,"status":"FAILED"},{"id":"EID6a37594d-0175-1000-02fe-c5f6c83407e5","testStepResults":{"TestStepResult":{"id":"EID6a37594d-0175-1000-2cfb-5ed2982abeb3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3759d0-0175-1000-4f57-20549f8ad64d","parent":{"ref":"EID6a37594d-0175-1000-2cfb-5ed2982abeb3"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:20:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3759d0-0175-1000-2e64-c1cb9a077c9b","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a37594d-0175-1000-2cfb-5ed2982abeb3"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:20:13Z","duration":12,"status":"FAILED"},{"id":"EID6a3759dc-0175-1000-08ab-c212de3b1020","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6a37594d-0175-1000-2cfb-5ed2982abeb3"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:20:13Z","duration":1,"status":"FAILED"},{"id":"EID6a3759dd-0175-1000-ae00-6ac132ee51c5","parent":{"ref":"EID6a37594d-0175-1000-2cfb-5ed2982abeb3"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:20:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3759dd-0175-1000-3ca8-f5bb6ff9f9b0","parent":{"ref":"EID6a37594d-0175-1000-2cfb-5ed2982abeb3"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:20:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa72e8b7c-d7c7-4a6e-afe4-bc3ffaf94eaa"},{"ref":"EIDdeb7369a-5317-4dc8-869a-1c33147f5cc3"},{"ref":"EIDdcead63d-915e-45ad-82f7-70bd07854bc3"}]},"parent":{"ref":"EID6a37594d-0175-1000-02fe-c5f6c83407e5"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:20:13Z","duration":25,"status":"FAILED"}},"parent":{"ref":"EID6a374e43-0175-1000-b057-56d99eab86f9"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:20:13Z","duration":144,"status":"FAILED"},{"id":"EID6a3759dd-0175-1000-671d-c0347db8f17a","testStepResults":{"TestStepResult":{"id":"EID6a3759dd-0175-1000-7cc8-41669fa48080","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a375ae7-0175-1000-08c5-5887f0f96b21","parent":{"ref":"EID6a3759dd-0175-1000-7cc8-41669fa48080"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:20:14Z","duration":0,"status":"PASSED"},{"id":"EID6a375ae7-0175-1000-b44e-c4baf1e6742a","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a3759dd-0175-1000-7cc8-41669fa48080"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:20:14Z","duration":27,"status":"FAILED"},{"id":"EID6a375b02-0175-1000-b639-0b1c3b4967c0","parent":{"ref":"EID6a3759dd-0175-1000-7cc8-41669fa48080"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:20:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb440c7b4-d3fa-468e-95f0-d3851605663b"},{"ref":"EID2b775178-8161-4463-a647-592140626753"},{"ref":"EID0865b28a-a7d7-4187-b498-b399c8eb8ccc"}]},"parent":{"ref":"EID6a3759dd-0175-1000-671d-c0347db8f17a"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:20:13Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6a374e43-0175-1000-b057-56d99eab86f9"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:20:13Z","duration":294,"status":"FAILED"},{"id":"EID6a375b03-0175-1000-54ff-02157ba1e983","testStepResults":{"TestStepResult":{"id":"EID6a375b03-0175-1000-513b-7e9b3b113bc2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a375c05-0175-1000-0981-8702c2c72bfc","parent":{"ref":"EID6a375b03-0175-1000-513b-7e9b3b113bc2"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:20:14Z","duration":0,"status":"PASSED"},{"id":"EID6a375c05-0175-1000-7911-c8917c07d0fa","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a375b03-0175-1000-513b-7e9b3b113bc2"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:20:14Z","duration":24,"status":"FAILED"},{"id":"EID6a375c1d-0175-1000-44cb-27f4c86fe14a","parent":{"ref":"EID6a375b03-0175-1000-513b-7e9b3b113bc2"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:20:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDde4286ac-d526-48f4-a9f8-25e5d89f2200"},{"ref":"EIDf59a49de-1940-4c0e-83ad-55c1fd66df69"},{"ref":"EID45419b14-ba19-4740-aaff-769dd146c445"}]},"parent":{"ref":"EID6a375b03-0175-1000-54ff-02157ba1e983"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:20:14Z","duration":49,"status":"FAILED"}},"parent":{"ref":"EID6a374e43-0175-1000-b057-56d99eab86f9"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:20:14Z","duration":303,"status":"FAILED"},{"id":"EID6a375c32-0175-1000-4d46-f2421938ace7","testStepResults":{"TestStepResult":{"id":"EID6a375c32-0175-1000-a6fe-c33323164349","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a375cd1-0175-1000-4b62-76b5ab6d9739","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a375c32-0175-1000-a6fe-c33323164349"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:20:14Z","duration":14,"status":"FAILED"},{"id":"EID6a375cdf-0175-1000-65b3-bf1029eb941d","parent":{"ref":"EID6a375c32-0175-1000-a6fe-c33323164349"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:20:14Z","duration":0,"status":"PASSED"},{"id":"EID6a375cdf-0175-1000-b840-0e184dada494","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a375c32-0175-1000-a6fe-c33323164349"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:20:14Z","duration":0,"status":"FAILED"},{"id":"EID6a375cdf-0175-1000-3e69-b75e9cdf309a","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6a375c32-0175-1000-a6fe-c33323164349"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:20:14Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID3f6668f9-79c1-4c00-8d67-ef2aa38c0c49"},{"ref":"EID05da1be0-3c86-4785-963b-ad166ea3911f"},{"ref":"EIDdf603332-02d7-4780-bd68-595e0d0010b5"}]},"parent":{"ref":"EID6a375c32-0175-1000-4d46-f2421938ace7"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:20:14Z","duration":89,"status":"FAILED"}},"parent":{"ref":"EID6a374e43-0175-1000-b057-56d99eab86f9"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:20:14Z","duration":174,"status":"FAILED"},{"id":"EID6a375ce0-0175-1000-31c8-5a41045ba993","testStepResults":{"TestStepResult":{"id":"EID6a375ce0-0175-1000-3985-0e261219e4e5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a375d98-0175-1000-59af-488d839a5a0f","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a375ce0-0175-1000-3985-0e261219e4e5"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:20:14Z","duration":19,"status":"FAILED"},{"id":"EID6a375dab-0175-1000-e1b7-5390c7c7675b","parent":{"ref":"EID6a375ce0-0175-1000-3985-0e261219e4e5"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:20:14Z","duration":0,"status":"PASSED"},{"id":"EID6a375dab-0175-1000-2ed6-3cf97f3c98a0","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a375ce0-0175-1000-3985-0e261219e4e5"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:20:14Z","duration":0,"status":"FAILED"},{"id":"EID6a375dab-0175-1000-fa71-b92972421db1","parent":{"ref":"EID6a375ce0-0175-1000-3985-0e261219e4e5"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:20:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID373b2436-565f-4157-9261-226c3a71c112"},{"ref":"EIDb5865c91-1091-4781-8b64-90ff7bd30991"},{"ref":"EID1abc136a-c918-442c-ad4f-ae4be1d0679b"}]},"parent":{"ref":"EID6a375ce0-0175-1000-31c8-5a41045ba993"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:20:14Z","duration":84,"status":"FAILED"}},"parent":{"ref":"EID6a374e43-0175-1000-b057-56d99eab86f9"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:20:14Z","duration":203,"status":"FAILED"},{"id":"EID6a375dba-0175-1000-1e3d-5a672decba63","testStepResults":{"TestStepResult":[{"id":"EID6a375dba-0175-1000-0f2f-0444c953905b","parent":{"ref":"EID6a375dba-0175-1000-1e3d-5a672decba63"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:20:14Z","duration":0,"status":"PASSED"},{"id":"EID6a375dba-0175-1000-2750-7c3e529dc2fd","parent":{"ref":"EID6a375dba-0175-1000-1e3d-5a672decba63"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:20:14Z","duration":176,"status":"PASSED"},{"id":"EID6a375dba-0175-1000-0045-b3c0257e3031","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a375f02-0175-1000-8711-b53a0f05dce0","parent":{"ref":"EID6a375dba-0175-1000-0045-b3c0257e3031"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:20:15Z","duration":0,"status":"PASSED"},{"id":"EID6a375f02-0175-1000-7fca-4ceb866b5250","parent":{"ref":"EID6a375dba-0175-1000-0045-b3c0257e3031"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:20:15Z","duration":0,"status":"PASSED"},{"id":"EID6a375f02-0175-1000-336c-6780981191cd","parent":{"ref":"EID6a375dba-0175-1000-0045-b3c0257e3031"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:20:15Z","duration":0,"status":"PASSED"},{"id":"EID6a375f02-0175-1000-fd15-03c517e2863e","parent":{"ref":"EID6a375dba-0175-1000-0045-b3c0257e3031"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:20:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDaaef0844-58ad-455e-84fe-5721b091872e"},{"ref":"EIDec388e04-2366-4911-9794-d84a70cc1ca4"},{"ref":"EIDa405f356-a227-4103-9e28-7acb2533f404"}]},"parent":{"ref":"EID6a375dba-0175-1000-1e3d-5a672decba63"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:20:14Z","duration":150,"status":"PASSED"},{"id":"EID6a375f02-0175-1000-5119-49f406338799","attachments":{"attachment":{"ref":"EID8810ad6c-201e-435b-bb60-de768220a5af"}},"parent":{"ref":"EID6a375dba-0175-1000-1e3d-5a672decba63"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:20:15Z","duration":3,"status":"PASSED"},{"id":"EID6a375f18-0175-1000-f6fd-3269595daa51","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a376038-0175-1000-9c2c-eec74f6cc533","parent":{"ref":"EID6a375f18-0175-1000-f6fd-3269595daa51"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:20:15Z","duration":0,"status":"PASSED"},{"id":"EID6a376038-0175-1000-f710-53c6af9f6250","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a375f18-0175-1000-f6fd-3269595daa51"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:20:15Z","duration":24,"status":"FAILED"},{"id":"EID6a376050-0175-1000-2aef-9f52ac25c3e4","parent":{"ref":"EID6a375f18-0175-1000-f6fd-3269595daa51"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:20:15Z","duration":0,"status":"PASSED"},{"id":"EID6a376050-0175-1000-6a31-759685e7d45a","parent":{"ref":"EID6a375f18-0175-1000-f6fd-3269595daa51"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:20:15Z","duration":0,"status":"PASSED"},{"id":"EID6a376050-0175-1000-cd36-a12a6ab0d0d9","parent":{"ref":"EID6a375f18-0175-1000-f6fd-3269595daa51"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:20:15Z","duration":0,"status":"PASSED"},{"id":"EID6a376050-0175-1000-3069-558887bdd006","parent":{"ref":"EID6a375f18-0175-1000-f6fd-3269595daa51"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:20:15Z","duration":0,"status":"PASSED"},{"id":"EID6a376050-0175-1000-ad64-386b7bd282de","parent":{"ref":"EID6a375f18-0175-1000-f6fd-3269595daa51"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:20:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID48e45b69-5412-44b4-9350-1e6b83106d90"},{"ref":"EIDdd87ad0b-9bdf-4251-a0fc-906019cf2dd9"},{"ref":"EID91cbfe0e-f86d-4af4-8763-3f20ce33723e"}]},"parent":{"ref":"EID6a375dba-0175-1000-1e3d-5a672decba63"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:20:15Z","duration":190,"status":"FAILED"}]},"parent":{"ref":"EID6a374e43-0175-1000-b057-56d99eab86f9"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:20:14Z","duration":662,"status":"FAILED"},{"id":"EID6a376050-0175-1000-957e-9dbf9300c3cb","testStepResults":{"TestStepResult":[{"id":"EID6a376050-0175-1000-74b4-fb57c535486c","parent":{"ref":"EID6a376050-0175-1000-957e-9dbf9300c3cb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:20:15Z","duration":0,"status":"PASSED"},{"id":"EID6a376050-0175-1000-a170-f4811e5a24a2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a376145-0175-1000-8fd6-4b24c17951e5","parent":{"ref":"EID6a376050-0175-1000-a170-f4811e5a24a2"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:20:15Z","duration":0,"status":"PASSED"},{"id":"EID6a376145-0175-1000-7a68-d327286b2be9","parent":{"ref":"EID6a376050-0175-1000-a170-f4811e5a24a2"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:20:15Z","duration":0,"status":"PASSED"},{"id":"EID6a376145-0175-1000-e42b-0611e8e25c1d","parent":{"ref":"EID6a376050-0175-1000-a170-f4811e5a24a2"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:20:15Z","duration":0,"status":"PASSED"},{"id":"EID6a376145-0175-1000-4459-5859b27e0f8a","parent":{"ref":"EID6a376050-0175-1000-a170-f4811e5a24a2"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:20:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9a5d361d-ccac-4d3b-8745-82802d7acda0"},{"ref":"EID6b8c71b9-2628-4512-a2a0-b7a241784230"},{"ref":"EIDbd2d1f37-a3ca-4651-bd8b-0f05103b4d8c"}]},"parent":{"ref":"EID6a376050-0175-1000-957e-9dbf9300c3cb"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:20:15Z","duration":140,"status":"PASSED"},{"id":"EID6a376145-0175-1000-3ee0-c6bb4db91f1c","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a376162-0175-1000-22fa-29f5c675b191","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a376308-0175-1000-1567-83a493199517","parent":{"ref":"EID6a376162-0175-1000-22fa-29f5c675b191"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:20:16Z","duration":0,"status":"PASSED"},{"id":"EID6a376308-0175-1000-6588-c3ff4f1a7c75","parent":{"ref":"EID6a376162-0175-1000-22fa-29f5c675b191"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:20:16Z","duration":0,"status":"PASSED"},{"id":"EID6a376308-0175-1000-de79-7c72bd4a68a4","parent":{"ref":"EID6a376162-0175-1000-22fa-29f5c675b191"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:20:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8c3a6b29-9053-4ed7-a170-dd06e631e06b"},{"ref":"EID9a3baa88-cd2f-4635-97af-9158bcb6ce00"},{"ref":"EID64670c4a-5502-4a18-8293-b0c040173145"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:20:15Z","duration":151,"status":"PASSED"},{"id":"EID6a37630a-0175-1000-760d-547111ab462c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a376425-0175-1000-6251-f2d4a7bda123","parent":{"ref":"EID6a37630a-0175-1000-760d-547111ab462c"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:20:16Z","duration":0,"status":"PASSED"},{"id":"EID6a376425-0175-1000-71c1-6357ecaeda4a","parent":{"ref":"EID6a37630a-0175-1000-760d-547111ab462c"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:20:16Z","duration":0,"status":"PASSED"},{"id":"EID6a376425-0175-1000-fe9c-9c2433cdb74b","parent":{"ref":"EID6a37630a-0175-1000-760d-547111ab462c"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:20:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd80704d3-b1a0-4ebd-87b3-90c463e14e17"},{"ref":"EIDc2505888-df9f-46b3-a1f3-77b92f461142"},{"ref":"EID5d982bcc-eb2f-49b4-b5ce-813e8a07cd08"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:20:16Z","duration":146,"status":"PASSED"},{"id":"EID6a37644d-0175-1000-150d-6a522b361b07","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37650f-0175-1000-d9e4-9c81ac185463","parent":{"ref":"EID6a37644d-0175-1000-150d-6a522b361b07"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:20:16Z","duration":0,"status":"PASSED"},{"id":"EID6a37650f-0175-1000-5f6a-72dab55db8dc","parent":{"ref":"EID6a37644d-0175-1000-150d-6a522b361b07"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:20:16Z","duration":0,"status":"PASSED"},{"id":"EID6a37650f-0175-1000-8976-bc9daf2e68ce","parent":{"ref":"EID6a37644d-0175-1000-150d-6a522b361b07"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:20:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID96e1de99-92d8-45bb-9789-5b0eb59eb544"},{"ref":"EIDd54a1924-04d8-443f-ad2e-6d25b96f4268"},{"ref":"EIDe5324189-5857-44e7-8c19-82539f8d7eb0"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:20:16Z","duration":146,"status":"PASSED"}]},"parent":{"ref":"EID6a376050-0175-1000-957e-9dbf9300c3cb"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:20:15Z","duration":970,"status":"PASSED"},{"id":"EID6a376510-0175-1000-54b0-89800c50185c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a376572-0175-1000-8649-44ae4c8e6521","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a376510-0175-1000-54b0-89800c50185c"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:20:16Z","duration":11,"status":"FAILED"},{"id":"EID6a37657d-0175-1000-3545-b7722ffc3ac9","parent":{"ref":"EID6a376510-0175-1000-54b0-89800c50185c"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:20:16Z","duration":0,"status":"PASSED"},{"id":"EID6a37657d-0175-1000-9110-aa3df6ea0dea","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a376510-0175-1000-54b0-89800c50185c"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:20:16Z","duration":0,"status":"FAILED"},{"id":"EID6a37657d-0175-1000-487c-fa73636415b0","parent":{"ref":"EID6a376510-0175-1000-54b0-89800c50185c"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:20:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9a69800a-7ae9-4ada-be4e-137ccc27ab41"},{"ref":"EID60f01904-9caf-41c5-bb79-1d08f969469e"},{"ref":"EIDc5302fbb-9e56-47d2-8ad4-efd63d889fcf"}]},"parent":{"ref":"EID6a376050-0175-1000-957e-9dbf9300c3cb"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:20:16Z","duration":34,"status":"FAILED"}]},"parent":{"ref":"EID6a374e43-0175-1000-b057-56d99eab86f9"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:20:15Z","duration":1326,"status":"FAILED"},{"id":"EID6a37657e-0175-1000-e722-f39646d08232","testStepResults":{"TestStepResult":{"id":"EID6a37657e-0175-1000-9491-f95cb1ef7b8b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3765f0-0175-1000-529f-ab10472d5b7b","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a37657e-0175-1000-9491-f95cb1ef7b8b"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:20:16Z","duration":11,"status":"FAILED"},{"id":"EID6a3765fb-0175-1000-6c6b-701c6458e9d4","parent":{"ref":"EID6a37657e-0175-1000-9491-f95cb1ef7b8b"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:20:16Z","duration":0,"status":"PASSED"},{"id":"EID6a3765fb-0175-1000-5d5c-96c748da440d","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a37657e-0175-1000-9491-f95cb1ef7b8b"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:20:16Z","duration":0,"status":"FAILED"},{"id":"EID6a3765fb-0175-1000-2c7c-295fd6bf92a4","parent":{"ref":"EID6a37657e-0175-1000-9491-f95cb1ef7b8b"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:20:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6b8fbf3a-4099-4518-b388-39b62f96ad4d"},{"ref":"EIDc4c3a40d-a7bc-4b93-b7c2-63f528831243"},{"ref":"EIDd0a4424d-a8ce-4028-8513-932f93bc8204"}]},"parent":{"ref":"EID6a37657e-0175-1000-e722-f39646d08232"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:20:16Z","duration":40,"status":"FAILED"}},"parent":{"ref":"EID6a374e43-0175-1000-b057-56d99eab86f9"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:20:16Z","duration":125,"status":"FAILED"}]},"parent":{"ref":"EID384ebe78-3da0-4888-b0a9-db866bedd119"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:20:10Z","duration":6072,"status":"FAILED"},{"id":"EID6a3765fb-0175-1000-c66d-2b6a51e5533d","testCaseResults":{"TestCaseResult":[{"id":"EID6a3765fb-0175-1000-d94d-5f8e459ddc9d","testStepResults":{"TestStepResult":{"id":"EID6a3765fc-0175-1000-dc2d-d853152a69f2","parent":{"ref":"EID6a3765fb-0175-1000-d94d-5f8e459ddc9d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:20:16Z","duration":700,"status":"SKIPPED"}},"parent":{"ref":"EID6a3765fb-0175-1000-c66d-2b6a51e5533d"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:20:16Z","duration":13,"status":"SKIPPED"},{"id":"EID6a376608-0175-1000-1699-b8f6dacd7d0a","testStepResults":{"TestStepResult":{"id":"EID6a376608-0175-1000-07af-80d68f875365","parent":{"ref":"EID6a376608-0175-1000-1699-b8f6dacd7d0a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:20:16Z","duration":700,"status":"SKIPPED"}},"parent":{"ref":"EID6a3765fb-0175-1000-c66d-2b6a51e5533d"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:20:16Z","duration":0,"status":"SKIPPED"},{"id":"EID6a376608-0175-1000-189f-534b4ab09044","testStepResults":{"TestStepResult":{"id":"EID6a376608-0175-1000-d750-b6de8e2aae27","parent":{"ref":"EID6a376608-0175-1000-189f-534b4ab09044"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:20:16Z","duration":700,"status":"SKIPPED"}},"parent":{"ref":"EID6a3765fb-0175-1000-c66d-2b6a51e5533d"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:20:16Z","duration":0,"status":"SKIPPED"},{"id":"EID6a376608-0175-1000-00c2-924f31295457","testStepResults":{"TestStepResult":{"id":"EID6a376608-0175-1000-6d17-8ab6caf9e168","parent":{"ref":"EID6a376608-0175-1000-00c2-924f31295457"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:20:16Z","duration":700,"status":"SKIPPED"}},"parent":{"ref":"EID6a3765fb-0175-1000-c66d-2b6a51e5533d"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:20:16Z","duration":0,"status":"SKIPPED"},{"id":"EID6a376608-0175-1000-a202-a5cd7c8069e4","testStepResults":{"TestStepResult":{"id":"EID6a376608-0175-1000-6b38-0426690aa275","parent":{"ref":"EID6a376608-0175-1000-a202-a5cd7c8069e4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:20:16Z","duration":700,"status":"SKIPPED"}},"parent":{"ref":"EID6a3765fb-0175-1000-c66d-2b6a51e5533d"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:20:16Z","duration":0,"status":"SKIPPED"},{"id":"EID6a376609-0175-1000-3c5b-facc1bf3bf48","testStepResults":{"TestStepResult":{"id":"EID6a376609-0175-1000-ab60-98bd9ff0ce82","parent":{"ref":"EID6a376609-0175-1000-3c5b-facc1bf3bf48"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:20:16Z","duration":714,"status":"SKIPPED"}},"parent":{"ref":"EID6a3765fb-0175-1000-c66d-2b6a51e5533d"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:20:16Z","duration":14,"status":"SKIPPED"},{"id":"EID6a376617-0175-1000-1744-0c00c6a689fd","testStepResults":{"TestStepResult":{"id":"EID6a376617-0175-1000-2d27-337389699ca9","parent":{"ref":"EID6a376617-0175-1000-1744-0c00c6a689fd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:20:16Z","duration":700,"status":"SKIPPED"}},"parent":{"ref":"EID6a3765fb-0175-1000-c66d-2b6a51e5533d"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:20:16Z","duration":0,"status":"SKIPPED"}]},"parent":{"ref":"EID384ebe78-3da0-4888-b0a9-db866bedd119"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:20:16Z","duration":28,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"ServiceResponse","id":"EID323a0dbc-87ac-4420-a039-480466956199","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID323a0dbc-87ac-4420-a039-480466956199"}},{"type":"Message","id":"EID00743441-0d3a-4a17-9992-8ffb7a8a7f0c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID00743441-0d3a-4a17-9992-8ffb7a8a7f0c"}},{"type":"ServiceResponse","id":"EID6a7de94d-8154-493e-a913-15880f094829","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID6a7de94d-8154-493e-a913-15880f094829"}},{"type":"ServiceResponse","id":"EIDf59a49de-1940-4c0e-83ad-55c1fd66df69","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDf59a49de-1940-4c0e-83ad-55c1fd66df69"}},{"type":"ServiceEndpoint","id":"EID9a69800a-7ae9-4ada-be4e-137ccc27ab41","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID43989484-bcd5-4ab1-8b60-06903e2dde33","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDd36e1be2-ad05-41cb-a3a2-49e99cb32621","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDd36e1be2-ad05-41cb-a3a2-49e99cb32621"}},{"type":"ServiceEndpoint","id":"EID8837a056-50df-4f6c-9e7a-a33486f2e469","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID8810ad6c-201e-435b-bb60-de768220a5af","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID8810ad6c-201e-435b-bb60-de768220a5af"}},{"type":"Message","id":"EID0473ec95-d681-401c-81dd-9e21e505eab1","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID0473ec95-d681-401c-81dd-9e21e505eab1"}},{"type":"ServiceEndpoint","id":"EIDf615c196-855c-411b-a9e0-d5d93be331ca","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID6b8c71b9-2628-4512-a2a0-b7a241784230","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID6b8c71b9-2628-4512-a2a0-b7a241784230"}},{"type":"ServiceEndpoint","id":"EIDde4286ac-d526-48f4-a9f8-25e5d89f2200","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID0865b28a-a7d7-4187-b498-b399c8eb8ccc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDdcead63d-915e-45ad-82f7-70bd07854bc3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID7937488b-1dd9-4f36-969e-f1a840a3dbdb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID7937488b-1dd9-4f36-969e-f1a840a3dbdb"}},{"type":"GetParameter","id":"EIDae064bf4-401e-437c-b925-c50373ad31d2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID7beacd50-1ec7-48f7-949f-1ed4d520842f","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID7beacd50-1ec7-48f7-949f-1ed4d520842f"}},{"type":"ServiceEndpoint","id":"EID5f629fed-eb0b-44d5-8bc3-9ffd58203307","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID260bfc63-9174-4704-9c60-10d64de5fa51","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID260bfc63-9174-4704-9c60-10d64de5fa51"}},{"type":"ServiceResponse","id":"EIDc4c3a40d-a7bc-4b93-b7c2-63f528831243","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDc4c3a40d-a7bc-4b93-b7c2-63f528831243"}},{"type":"Error","id":"EID860ea805-b70f-4c67-91f5-144d5313a003","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID860ea805-b70f-4c67-91f5-144d5313a003"}},{"type":"GetParameter","id":"EIDd0a4424d-a8ce-4028-8513-932f93bc8204","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID1ead6b26-a14b-425c-97c9-53067b136f10","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EID86a8907a-e530-4cf6-b68f-f8460586053d","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID86a8907a-e530-4cf6-b68f-f8460586053d"}},{"type":"GetParameter","id":"EIDd8b1a003-1281-4415-83dd-fb64d3eacb63","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID2bc5c3f2-5ff8-46c1-ba88-ebb2b2ca40d4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDaaef0844-58ad-455e-84fe-5721b091872e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDbd2d1f37-a3ca-4651-bd8b-0f05103b4d8c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EIDeb261896-7333-4704-a95b-e84f9b766414","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDba332648-353b-46a6-b952-1149b2690eea","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDba332648-353b-46a6-b952-1149b2690eea"}},{"type":"Message","id":"EIDae73bc82-961c-41cb-95b6-2f7679661630","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDae73bc82-961c-41cb-95b6-2f7679661630"}},{"type":"ServiceResponse","id":"EID8c32ecbb-f4aa-4584-a8a1-10769a133f7d","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID8c32ecbb-f4aa-4584-a8a1-10769a133f7d"}},{"type":"ServiceEndpoint","id":"EID48e45b69-5412-44b4-9350-1e6b83106d90","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID9a5d361d-ccac-4d3b-8745-82802d7acda0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EID090c2154-10ac-4513-95e5-c901ac644b99","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID8b5cbfcb-8506-4036-ad0f-0644e6e50590","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID8b5cbfcb-8506-4036-ad0f-0644e6e50590"}},{"type":"ServiceResponse","id":"EID05da1be0-3c86-4785-963b-ad166ea3911f","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID05da1be0-3c86-4785-963b-ad166ea3911f"}},{"type":"ServiceEndpoint","id":"EID8c3a6b29-9053-4ed7-a170-dd06e631e06b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EID6400dff2-737d-439e-8bfe-219d59bfb2d6","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID6400dff2-737d-439e-8bfe-219d59bfb2d6"}},{"type":"ServiceResponse","id":"EIDe21b9cce-30f4-4d93-a34e-5456ceb66586","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDe21b9cce-30f4-4d93-a34e-5456ceb66586"}},{"type":"ServiceResponse","id":"EID8a3cf6fe-fa90-47ec-acd4-923ebacad7e8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID8a3cf6fe-fa90-47ec-acd4-923ebacad7e8"}},{"type":"GetParameter","id":"EID2dca6e39-7399-4f09-a275-d30779597626","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"Message","id":"EIDd4c14a3b-1bd1-484a-9c5e-fd6dbfcdf67f","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDd4c14a3b-1bd1-484a-9c5e-fd6dbfcdf67f"}},{"type":"ServiceResponse","id":"EIDe0f9ef58-efec-4924-bc51-13eaa188ee57","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDe0f9ef58-efec-4924-bc51-13eaa188ee57"}},{"type":"GetParameter","id":"EID3e7d3465-a043-4338-892e-ef7bd416323a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID91cbfe0e-f86d-4af4-8763-3f20ce33723e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID45419b14-ba19-4740-aaff-769dd146c445","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDb8a58fce-2a40-4618-971f-bc25fb06bc82","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDb8a58fce-2a40-4618-971f-bc25fb06bc82"}},{"type":"ServiceResponse","id":"EIDdeb7369a-5317-4dc8-869a-1c33147f5cc3","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDdeb7369a-5317-4dc8-869a-1c33147f5cc3"}},{"type":"GetParameter","id":"EID64670c4a-5502-4a18-8293-b0c040173145","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EIDa0f81043-ba6c-45b8-9635-831e4af99550","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Error","id":"EID2a4b79d2-e3e1-4187-bbd0-76824abe17c1","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID2a4b79d2-e3e1-4187-bbd0-76824abe17c1"}},{"type":"ServiceEndpoint","id":"EID1a02b5d8-51c7-4249-9f4c-8bfabcf25150","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDb1809d96-49d3-4927-bbe8-7b55a3e99a67","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID4ccb2365-bca1-442e-b48e-d96f29be983e","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID4ccb2365-bca1-442e-b48e-d96f29be983e"}},{"type":"GetParameter","id":"EIDe5324189-5857-44e7-8c19-82539f8d7eb0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EIDa72e8b7c-d7c7-4a6e-afe4-bc3ffaf94eaa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID6b8fbf3a-4099-4518-b388-39b62f96ad4d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID2e1c6e69-35f4-4a23-9d08-b86ceeafce85","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDbc8bdffd-c2ab-4534-9ada-6100b0381e4b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID5d982bcc-eb2f-49b4-b5ce-813e8a07cd08","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EIDb79c6e98-4359-4b35-8f9c-237ff15a5555","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDc5302fbb-9e56-47d2-8ad4-efd63d889fcf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID5a1d52cc-a7d9-4c93-865c-553b6a21c061","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID5a1d52cc-a7d9-4c93-865c-553b6a21c061"}},{"type":"Error","id":"EID7c374216-1cd6-4ba8-ab71-617143e53fb8","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID7c374216-1cd6-4ba8-ab71-617143e53fb8"}},{"type":"ServiceResponse","id":"EIDdd87ad0b-9bdf-4251-a0fc-906019cf2dd9","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDdd87ad0b-9bdf-4251-a0fc-906019cf2dd9"}},{"type":"ServiceResponse","id":"EID1782d436-bb8b-402e-87b1-095cb5818b41","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID1782d436-bb8b-402e-87b1-095cb5818b41"}},{"type":"Error","id":"EID5b5362c5-cb08-4ccb-92e9-e9b06e9ae73c","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID5b5362c5-cb08-4ccb-92e9-e9b06e9ae73c"}},{"type":"GetParameter","id":"EID3d98eec8-a5af-4dcf-bc0a-9bbdaaf60fea","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EIDb358f098-9c0a-4c97-b9f3-a8d26dcaa26f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDb358f098-9c0a-4c97-b9f3-a8d26dcaa26f"}},{"type":"ServiceResponse","id":"EIDd05eaf1d-b7ac-4ae6-bd26-776674052c9e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDd05eaf1d-b7ac-4ae6-bd26-776674052c9e"}},{"type":"Message","id":"EID609371dc-e936-4b88-ab50-dc929e391b71","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID609371dc-e936-4b88-ab50-dc929e391b71"}},{"type":"GetParameter","id":"EIDbc99240e-05be-4b8d-8338-7bb6c147cf10","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID2ed62a6c-2b5f-4da4-ba5f-f753cf86020e","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID2ed62a6c-2b5f-4da4-ba5f-f753cf86020e"}},{"type":"ServiceEndpoint","id":"EID373b2436-565f-4157-9261-226c3a71c112","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDc250d882-bca9-460a-9e1d-df7a3c1deac1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDd7e42624-36db-4f77-b5e5-f17347d7f711","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID536154ac-b604-4a23-a58d-e47320e95656","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID47676b1f-4618-46f5-96e9-b466be34e738","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID47676b1f-4618-46f5-96e9-b466be34e738"}},{"type":"ServiceResponse","id":"EID1723141c-bbed-4b39-a2eb-4e1f25392c3f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID1723141c-bbed-4b39-a2eb-4e1f25392c3f"}},{"type":"Error","id":"EID5dd4380f-ea9a-4452-9f9e-55fce6f66334","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID5dd4380f-ea9a-4452-9f9e-55fce6f66334"}},{"type":"Message","id":"EID5c26190b-d696-45f2-b69d-d3569dca9758","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID5c26190b-d696-45f2-b69d-d3569dca9758"}},{"type":"ServiceResponse","id":"EIDd044348d-cad0-46d9-8ac2-05679635a5eb","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDd044348d-cad0-46d9-8ac2-05679635a5eb"}},{"type":"Error","id":"EID665e6bd3-aede-4369-9c89-377565b018ce","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID665e6bd3-aede-4369-9c89-377565b018ce"}},{"type":"GetParameter","id":"EIDa405f356-a227-4103-9e28-7acb2533f404","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDaa33f851-261a-4b28-9407-03e360edceb6","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDaa33f851-261a-4b28-9407-03e360edceb6"}},{"type":"ServiceResponse","id":"EID2e9beac1-0bc8-4b55-841a-cdc5109ee9d2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID2e9beac1-0bc8-4b55-841a-cdc5109ee9d2"}},{"type":"GetParameter","id":"EIDa04250f9-e05a-476b-a315-af2eb0ab0af9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID0225ece7-38fd-4f84-ae9f-1c5c3e417c1a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID0225ece7-38fd-4f84-ae9f-1c5c3e417c1a"}},{"type":"ServiceEndpoint","id":"EIDce698e83-0212-46ca-a837-7c6eff3c226d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID87e89bbe-7bbf-4c39-9aca-7c9565d66a28","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDb5865c91-1091-4781-8b64-90ff7bd30991","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDb5865c91-1091-4781-8b64-90ff7bd30991"}},{"type":"Error","id":"EIDf0e37b5c-5330-437b-b4d0-73941dab7502","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDf0e37b5c-5330-437b-b4d0-73941dab7502"}},{"type":"ServiceEndpoint","id":"EID0ee55f15-1c50-43e5-afd0-a8056b3bb1bc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID8463ab0c-53dd-450d-a650-da04175a3aa5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDd7482c65-057a-445f-b8ec-6fcd623a5ec1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDd7482c65-057a-445f-b8ec-6fcd623a5ec1"}},{"type":"ServiceResponse","id":"EIDec388e04-2366-4911-9794-d84a70cc1ca4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDec388e04-2366-4911-9794-d84a70cc1ca4"}},{"type":"ServiceResponse","id":"EID60f01904-9caf-41c5-bb79-1d08f969469e","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID60f01904-9caf-41c5-bb79-1d08f969469e"}},{"type":"GetParameter","id":"EIDf978e973-3898-44a9-b83f-b5f47afa0e61","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID1bfa59da-8d83-456c-8457-9d889dd0e6a6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID2231dde2-e0c9-41b6-947c-5127be3d8f7b","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID2231dde2-e0c9-41b6-947c-5127be3d8f7b"}},{"type":"ServiceResponse","id":"EIDd54a1924-04d8-443f-ad2e-6d25b96f4268","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDd54a1924-04d8-443f-ad2e-6d25b96f4268"}},{"type":"ServiceEndpoint","id":"EIDf7631e21-0adc-4a03-887d-96629514b705","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDfa422499-8889-4d41-9549-be2fb87be4ef","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDfa422499-8889-4d41-9549-be2fb87be4ef"}},{"type":"ServiceEndpoint","id":"EID036be437-2836-4528-a08a-c167bc9ceaca","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID9a3baa88-cd2f-4635-97af-9158bcb6ce00","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID9a3baa88-cd2f-4635-97af-9158bcb6ce00"}},{"type":"ServiceEndpoint","id":"EIDb440c7b4-d3fa-468e-95f0-d3851605663b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID96e1de99-92d8-45bb-9789-5b0eb59eb544","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EID0d32397a-d523-4c62-a537-10b3ca2436f0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID0d32397a-d523-4c62-a537-10b3ca2436f0"}},{"type":"Error","id":"EIDf3c959c9-56a0-48f2-9411-2ba161bfe9e0","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDf3c959c9-56a0-48f2-9411-2ba161bfe9e0"}},{"type":"Message","id":"EIDbf7befe1-b89c-448c-a0b1-23dc0df58f1a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDbf7befe1-b89c-448c-a0b1-23dc0df58f1a"}},{"type":"Message","id":"EID68b5d1cb-8c97-469d-b8a9-d59be1cbeb56","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID68b5d1cb-8c97-469d-b8a9-d59be1cbeb56"}},{"type":"Message","id":"EID0fe909dd-52ce-4458-8dab-14b30ba8b667","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID0fe909dd-52ce-4458-8dab-14b30ba8b667"}},{"type":"Message","id":"EID59d56dbd-7e47-4717-b887-b68aa0edc2ac","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID59d56dbd-7e47-4717-b887-b68aa0edc2ac"}},{"type":"Message","id":"EID08314bf8-78cd-4e61-8c1b-4f6c08f9b51b","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID08314bf8-78cd-4e61-8c1b-4f6c08f9b51b"}},{"type":"GetParameter","id":"EID091b8cd6-519b-46ea-86a3-d149f78ab8f4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDe0bd698e-ad81-4128-994b-027fb8277a97","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDe0bd698e-ad81-4128-994b-027fb8277a97"}},{"type":"GetParameter","id":"EID288cb6ca-8228-477e-850a-18a2bf6cf940","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID799b896d-1c85-47ed-8ebf-fa7842f3d65b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID6f3f1e47-876f-46fd-a279-cf37e0c324b0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID6f3f1e47-876f-46fd-a279-cf37e0c324b0"}},{"type":"ServiceEndpoint","id":"EID68a4806d-d01b-487c-b1e0-61eec44689d9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDc4d8b1ee-4a16-47a0-835b-7a93bce73b53","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDc4d8b1ee-4a16-47a0-835b-7a93bce73b53"}},{"type":"ServiceResponse","id":"EID2b775178-8161-4463-a647-592140626753","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID2b775178-8161-4463-a647-592140626753"}},{"type":"ServiceResponse","id":"EID37793125-a2ca-459c-b362-c9c6af9db8a9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID37793125-a2ca-459c-b362-c9c6af9db8a9"}},{"type":"GetParameter","id":"EIDb8c95563-652e-464d-8474-287e0ca6d4b7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDe212c5c0-e00a-48d1-a538-8fc0d3d307d9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDa3048942-1029-4dee-b02e-8e437f6965d9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID8daba856-5318-41c3-83a8-5bdd62d08abb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID0dd99bb9-ac7e-473a-90a8-6c955bdb197b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDf0f1abff-a0a5-4003-bade-b871aae05d0b","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDf0f1abff-a0a5-4003-bade-b871aae05d0b"}},{"type":"LogFile","id":"EID15a2579e-951f-4bce-bb1e-f4d6f7e2d58d","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID15a2579e-951f-4bce-bb1e-f4d6f7e2d58d"}},{"type":"GetParameter","id":"EIDdf603332-02d7-4780-bd68-595e0d0010b5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID309aa20a-5e3a-4f83-93c2-a700220b061b","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID309aa20a-5e3a-4f83-93c2-a700220b061b"}},{"type":"ServiceEndpoint","id":"EID833f37bf-204f-4c51-be03-97eb8b0c3cca","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID69ceaaac-c045-457f-a646-1bb1988a81ab","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDaceb9e6a-3dea-488f-9cfa-713038b8e3f5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDec047a84-cb12-46ef-8914-84866696a7c4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDec047a84-cb12-46ef-8914-84866696a7c4"}},{"type":"Error","id":"EIDffaf89d9-4900-4e84-a143-645b7a0689d6","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDffaf89d9-4900-4e84-a143-645b7a0689d6"}},{"type":"ServiceEndpoint","id":"EID6fb8655c-8b41-4ba8-8057-e5429cc9dd13","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDb58da24c-ed83-4757-833e-de38e469f962","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDb6186c8c-23c9-4f13-b473-865008124307","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID0c3129b6-c178-4893-9616-d3302300768e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID0c3129b6-c178-4893-9616-d3302300768e"}},{"type":"ServiceResponse","id":"EIDc2505888-df9f-46b3-a1f3-77b92f461142","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDc2505888-df9f-46b3-a1f3-77b92f461142"}},{"type":"Error","id":"EIDf7b0b411-4d52-4c32-8cd9-14ca96f3feb5","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDf7b0b411-4d52-4c32-8cd9-14ca96f3feb5"}},{"type":"GetParameter","id":"EID0e22f614-3786-4e8b-a083-85d3512b7bd0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDf5971fab-7b93-44ff-9feb-c1218770ce30","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDf5971fab-7b93-44ff-9feb-c1218770ce30"}},{"type":"ServiceEndpoint","id":"EID3f6668f9-79c1-4c00-8d67-ef2aa38c0c49","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EIDe836686a-9afd-4af3-bf40-50da10f78631","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDe836686a-9afd-4af3-bf40-50da10f78631"}},{"type":"ServiceEndpoint","id":"EID0309f255-11f2-4035-aab3-45e8cae26c4d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID638dc22c-8bbd-4850-b2ac-0ed2a0044066","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID638dc22c-8bbd-4850-b2ac-0ed2a0044066"}},{"type":"Message","id":"EIDdd334dd0-3713-4b67-b927-1ccc4a356530","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDdd334dd0-3713-4b67-b927-1ccc4a356530"}},{"type":"ServiceEndpoint","id":"EIDc774daf5-61f1-4b1a-8445-cd22d7237b63","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDb140c7ac-3f2d-4ee6-b17d-d4055a01fece","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID9d0d587a-2816-48ab-8679-18f9d5993c09","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID9d0d587a-2816-48ab-8679-18f9d5993c09"}},{"type":"ServiceEndpoint","id":"EIDd80704d3-b1a0-4ebd-87b3-90c463e14e17","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EIDff572883-7512-4038-b89f-65537912485e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID08668565-b70a-46ee-bdb8-4a0fefd86f9a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID08668565-b70a-46ee-bdb8-4a0fefd86f9a"}},{"type":"GetParameter","id":"EID1abc136a-c918-442c-ad4f-ae4be1d0679b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EIDbd8b9acc-0795-4947-b5e9-8f15a1dc2a1e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EIDbd8b9acc-0795-4947-b5e9-8f15a1dc2a1e"}},{"type":"Error","id":"EID93e651ea-9d46-4e53-83ee-e0f5168cb9bc","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID384ebe78-3da0-4888-b0a9-db866bedd119/Attachments/EID93e651ea-9d46-4e53-83ee-e0f5168cb9bc"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:19:59Z","duration":17527,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:20:25.337 [print] EID91968587-cea7-40fc-8eed-57b1183fdc0a
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:20:25.338 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:20:25.339 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:20:25.339 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:20:25.340 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/91968587-cea7-40fc-8eed-57b1183fdc0a.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:20:25.340 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/91968587-cea7-40fc-8eed-57b1183fdc0a.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:20:25.341 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID91968587-cea7-40fc-8eed-57b1183fdc0a/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.012
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.006
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
13:20:25.361 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.001
13:20:25.363 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
13:20:25.363 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1:45.378
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.006
13:10:37.706 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 5.889
13:10:37.708 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 286
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml"}}}

13:10:43.585 response time in milliseconds: 5015.09
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:10:42 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:10:41 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/d8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6.json","testRuns":{"TestRun":{"id":"EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:10:40.351Z","testTasks":{"TestTask":{"id":"EIDcf8ba77e-00a4-49f7-9090-2c92406741e0","parent":{"ref":"EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID0a0d7937-2de7-4664-a31c-458bd8b76bcf"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID0a0d7937-2de7-4664-a31c-458bd8b76bcf","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:10:38.172Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:10:39.785Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.008
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:10:43.607 [print] EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:10:43.611 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:10:43.611 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.003
13:10:43.615 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/d8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:10:43.616 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:10:43.616 [print] statuspath TestRuns/EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6
* print 'progresspath ', progresspath 0.000
13:10:43.617 [print] progresspath  TestRuns/EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6/progress
Given path progresspath 0.000
When method GET 0.580
13:10:43.618 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:44.197 response time in milliseconds: 578.45
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:10:44 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["27.10.2020 13:10:40 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:40 UTC 2020)","27.10.2020 13:10:40 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:40 - Preparing 1 Test Task:","27.10.2020 13:10:40 -  TestTask 1 (cf8ba77e-00a4-49f7-9090-2c92406741e0)","27.10.2020 13:10:40 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:40 -  with parameters: ","27.10.2020 13:10:40 - etf.testcases = *","27.10.2020 13:10:40 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:40 - Setting state to CREATED","27.10.2020 13:10:40 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:41 - Starting TestRun.d8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6 at 2020-10-27T13:10:42Z","27.10.2020 13:10:42 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:42 - Project Properties: ","27.10.2020 13:10:42 - etf.testcases - * ","27.10.2020 13:10:42 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","27.10.2020 13:10:42 - username -  ","27.10.2020 13:10:42 - authUser -  ","27.10.2020 13:10:42 - authMethod - basic ","27.10.2020 13:10:42 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:10:44.198 [print] {
  "val": "12",
  "max": "13",
  "log": [
    "27.10.2020 13:10:40 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:40 UTC 2020)",
    "27.10.2020 13:10:40 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:10:40 - Preparing 1 Test Task:",
    "27.10.2020 13:10:40 -  TestTask 1 (cf8ba77e-00a4-49f7-9090-2c92406741e0)",
    "27.10.2020 13:10:40 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:10:40 -  with parameters: ",
    "27.10.2020 13:10:40 - etf.testcases = *",
    "27.10.2020 13:10:40 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:10:40 - Setting state to CREATED",
    "27.10.2020 13:10:40 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:10:41 - Starting TestRun.d8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6 at 2020-10-27T13:10:42Z",
    "27.10.2020 13:10:42 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:10:42 - Project Properties: ",
    "27.10.2020 13:10:42 - etf.testcases - * ",
    "27.10.2020 13:10:42 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ",
    "27.10.2020 13:10:42 - username -  ",
    "27.10.2020 13:10:42 - authUser -  ",
    "27.10.2020 13:10:42 - authMethod - basic ",
    "27.10.2020 13:10:42 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 1:8.321
13:10:44.199 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:44.718 response time in milliseconds: 518.25
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:10:44 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["27.10.2020 13:10:40 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:40 UTC 2020)","27.10.2020 13:10:40 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:40 - Preparing 1 Test Task:","27.10.2020 13:10:40 -  TestTask 1 (cf8ba77e-00a4-49f7-9090-2c92406741e0)","27.10.2020 13:10:40 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:40 -  with parameters: ","27.10.2020 13:10:40 - etf.testcases = *","27.10.2020 13:10:40 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:40 - Setting state to CREATED","27.10.2020 13:10:40 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:41 - Starting TestRun.d8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6 at 2020-10-27T13:10:42Z","27.10.2020 13:10:42 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:42 - Project Properties: ","27.10.2020 13:10:42 - etf.testcases - * ","27.10.2020 13:10:42 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","27.10.2020 13:10:42 - username -  ","27.10.2020 13:10:42 - authUser -  ","27.10.2020 13:10:42 - authMethod - basic ","27.10.2020 13:10:42 - TestRunTask initialized"]}

13:10:44.719 retry condition not satisfied: response.val == response.max
13:10:44.719 sleeping before retry #1
13:10:49.720 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:50.229 response time in milliseconds: 508.33
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:10:50 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"34","max":"35","log":["27.10.2020 13:10:40 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:40 UTC 2020)","27.10.2020 13:10:40 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:40 - Preparing 1 Test Task:","27.10.2020 13:10:40 -  TestTask 1 (cf8ba77e-00a4-49f7-9090-2c92406741e0)","27.10.2020 13:10:40 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:40 -  with parameters: ","27.10.2020 13:10:40 - etf.testcases = *","27.10.2020 13:10:40 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:40 - Setting state to CREATED","27.10.2020 13:10:40 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:41 - Starting TestRun.d8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6 at 2020-10-27T13:10:42Z","27.10.2020 13:10:42 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:42 - Project Properties: ","27.10.2020 13:10:42 - etf.testcases - * ","27.10.2020 13:10:42 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","27.10.2020 13:10:42 - username -  ","27.10.2020 13:10:42 - authUser -  ","27.10.2020 13:10:42 - authMethod - basic ","27.10.2020 13:10:42 - TestRunTask initialized"]}

13:10:50.230 retry condition not satisfied: response.val == response.max
13:10:50.230 sleeping before retry #2
13:10:55.231 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:55.765 response time in milliseconds: 530.38
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:10:55 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"62","max":"63","log":["27.10.2020 13:10:40 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:40 UTC 2020)","27.10.2020 13:10:40 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:40 - Preparing 1 Test Task:","27.10.2020 13:10:40 -  TestTask 1 (cf8ba77e-00a4-49f7-9090-2c92406741e0)","27.10.2020 13:10:40 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:40 -  with parameters: ","27.10.2020 13:10:40 - etf.testcases = *","27.10.2020 13:10:40 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:40 - Setting state to CREATED","27.10.2020 13:10:40 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:41 - Starting TestRun.d8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6 at 2020-10-27T13:10:42Z","27.10.2020 13:10:42 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:42 - Project Properties: ","27.10.2020 13:10:42 - etf.testcases - * ","27.10.2020 13:10:42 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","27.10.2020 13:10:42 - username -  ","27.10.2020 13:10:42 - authUser -  ","27.10.2020 13:10:42 - authMethod - basic ","27.10.2020 13:10:42 - TestRunTask initialized"]}

13:10:55.766 retry condition not satisfied: response.val == response.max
13:10:55.767 sleeping before retry #3
13:11:00.768 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:01.300 response time in milliseconds: 530.92
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:11:01 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"101","max":"102","log":["27.10.2020 13:10:40 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:40 UTC 2020)","27.10.2020 13:10:40 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:40 - Preparing 1 Test Task:","27.10.2020 13:10:40 -  TestTask 1 (cf8ba77e-00a4-49f7-9090-2c92406741e0)","27.10.2020 13:10:40 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:40 -  with parameters: ","27.10.2020 13:10:40 - etf.testcases = *","27.10.2020 13:10:40 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:40 - Setting state to CREATED","27.10.2020 13:10:40 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:41 - Starting TestRun.d8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6 at 2020-10-27T13:10:42Z","27.10.2020 13:10:42 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:42 - Project Properties: ","27.10.2020 13:10:42 - etf.testcases - * ","27.10.2020 13:10:42 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","27.10.2020 13:10:42 - username -  ","27.10.2020 13:10:42 - authUser -  ","27.10.2020 13:10:42 - authMethod - basic ","27.10.2020 13:10:42 - TestRunTask initialized","27.10.2020 13:10:59 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:11:01.301 retry condition not satisfied: response.val == response.max
13:11:01.302 sleeping before retry #4
13:11:06.304 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:06.818 response time in milliseconds: 513.67
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:11:06 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:10:40 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:40 UTC 2020)","27.10.2020 13:10:40 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:40 - Preparing 1 Test Task:","27.10.2020 13:10:40 -  TestTask 1 (cf8ba77e-00a4-49f7-9090-2c92406741e0)","27.10.2020 13:10:40 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:40 -  with parameters: ","27.10.2020 13:10:40 - etf.testcases = *","27.10.2020 13:10:40 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:40 - Setting state to CREATED","27.10.2020 13:10:40 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:41 - Starting TestRun.d8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6 at 2020-10-27T13:10:42Z","27.10.2020 13:10:42 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:42 - Project Properties: ","27.10.2020 13:10:42 - etf.testcases - * ","27.10.2020 13:10:42 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","27.10.2020 13:10:42 - username -  ","27.10.2020 13:10:42 - authUser -  ","27.10.2020 13:10:42 - authMethod - basic ","27.10.2020 13:10:42 - TestRunTask initialized","27.10.2020 13:10:59 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:11:06.819 retry condition not satisfied: response.val == response.max
13:11:06.819 sleeping before retry #5
13:11:11.820 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:12.341 response time in milliseconds: 519.91
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:11:12 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:10:40 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:40 UTC 2020)","27.10.2020 13:10:40 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:40 - Preparing 1 Test Task:","27.10.2020 13:10:40 -  TestTask 1 (cf8ba77e-00a4-49f7-9090-2c92406741e0)","27.10.2020 13:10:40 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:40 -  with parameters: ","27.10.2020 13:10:40 - etf.testcases = *","27.10.2020 13:10:40 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:40 - Setting state to CREATED","27.10.2020 13:10:40 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:41 - Starting TestRun.d8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6 at 2020-10-27T13:10:42Z","27.10.2020 13:10:42 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:42 - Project Properties: ","27.10.2020 13:10:42 - etf.testcases - * ","27.10.2020 13:10:42 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","27.10.2020 13:10:42 - username -  ","27.10.2020 13:10:42 - authUser -  ","27.10.2020 13:10:42 - authMethod - basic ","27.10.2020 13:10:42 - TestRunTask initialized","27.10.2020 13:10:59 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:11:06 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:11:07 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:11:08 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:11:12.341 retry condition not satisfied: response.val == response.max
13:11:12.341 sleeping before retry #6
13:11:17.343 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:17.854 response time in milliseconds: 510.14
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:11:17 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:10:40 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:40 UTC 2020)","27.10.2020 13:10:40 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:40 - Preparing 1 Test Task:","27.10.2020 13:10:40 -  TestTask 1 (cf8ba77e-00a4-49f7-9090-2c92406741e0)","27.10.2020 13:10:40 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:40 -  with parameters: ","27.10.2020 13:10:40 - etf.testcases = *","27.10.2020 13:10:40 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:40 - Setting state to CREATED","27.10.2020 13:10:40 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:41 - Starting TestRun.d8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6 at 2020-10-27T13:10:42Z","27.10.2020 13:10:42 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:42 - Project Properties: ","27.10.2020 13:10:42 - etf.testcases - * ","27.10.2020 13:10:42 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","27.10.2020 13:10:42 - username -  ","27.10.2020 13:10:42 - authUser -  ","27.10.2020 13:10:42 - authMethod - basic ","27.10.2020 13:10:42 - TestRunTask initialized","27.10.2020 13:10:59 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:11:06 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:11:07 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:11:08 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:11:17.854 retry condition not satisfied: response.val == response.max
13:11:17.854 sleeping before retry #7
13:11:22.858 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:23.377 response time in milliseconds: 517.44
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Tue, 27 Oct 2020 13:11:23 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:10:40 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:40 UTC 2020)","27.10.2020 13:10:40 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:40 - Preparing 1 Test Task:","27.10.2020 13:10:40 -  TestTask 1 (cf8ba77e-00a4-49f7-9090-2c92406741e0)","27.10.2020 13:10:40 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:40 -  with parameters: ","27.10.2020 13:10:40 - etf.testcases = *","27.10.2020 13:10:40 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:40 - Setting state to CREATED","27.10.2020 13:10:40 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:41 - Starting TestRun.d8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6 at 2020-10-27T13:10:42Z","27.10.2020 13:10:42 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:42 - Project Properties: ","27.10.2020 13:10:42 - etf.testcases - * ","27.10.2020 13:10:42 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","27.10.2020 13:10:42 - username -  ","27.10.2020 13:10:42 - authUser -  ","27.10.2020 13:10:42 - authMethod - basic ","27.10.2020 13:10:42 - TestRunTask initialized","27.10.2020 13:10:59 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:11:06 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:11:07 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:11:08 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:11:23.379 retry condition not satisfied: response.val == response.max
13:11:23.379 sleeping before retry #8
13:11:28.380 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:28.899 response time in milliseconds: 516.97
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Tue, 27 Oct 2020 13:11:28 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:10:40 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:40 UTC 2020)","27.10.2020 13:10:40 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:40 - Preparing 1 Test Task:","27.10.2020 13:10:40 -  TestTask 1 (cf8ba77e-00a4-49f7-9090-2c92406741e0)","27.10.2020 13:10:40 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:40 -  with parameters: ","27.10.2020 13:10:40 - etf.testcases = *","27.10.2020 13:10:40 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:40 - Setting state to CREATED","27.10.2020 13:10:40 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:41 - Starting TestRun.d8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6 at 2020-10-27T13:10:42Z","27.10.2020 13:10:42 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:42 - Project Properties: ","27.10.2020 13:10:42 - etf.testcases - * ","27.10.2020 13:10:42 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","27.10.2020 13:10:42 - username -  ","27.10.2020 13:10:42 - authUser -  ","27.10.2020 13:10:42 - authMethod - basic ","27.10.2020 13:10:42 - TestRunTask initialized","27.10.2020 13:10:59 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:11:06 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:11:07 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:11:08 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:11:28.899 retry condition not satisfied: response.val == response.max
13:11:28.899 sleeping before retry #9
13:11:33.901 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:34.428 response time in milliseconds: 526.99
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Tue, 27 Oct 2020 13:11:34 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:10:40 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:40 UTC 2020)","27.10.2020 13:10:40 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:40 - Preparing 1 Test Task:","27.10.2020 13:10:40 -  TestTask 1 (cf8ba77e-00a4-49f7-9090-2c92406741e0)","27.10.2020 13:10:40 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:40 -  with parameters: ","27.10.2020 13:10:40 - etf.testcases = *","27.10.2020 13:10:40 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:40 - Setting state to CREATED","27.10.2020 13:10:40 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:41 - Starting TestRun.d8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6 at 2020-10-27T13:10:42Z","27.10.2020 13:10:42 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:42 - Project Properties: ","27.10.2020 13:10:42 - etf.testcases - * ","27.10.2020 13:10:42 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","27.10.2020 13:10:42 - username -  ","27.10.2020 13:10:42 - authUser -  ","27.10.2020 13:10:42 - authMethod - basic ","27.10.2020 13:10:42 - TestRunTask initialized","27.10.2020 13:10:59 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:11:06 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:11:07 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:11:08 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:11:34.435 retry condition not satisfied: response.val == response.max
13:11:34.436 sleeping before retry #10
13:11:39.437 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:39.951 response time in milliseconds: 513.32
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Tue, 27 Oct 2020 13:11:39 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:10:40 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:40 UTC 2020)","27.10.2020 13:10:40 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:40 - Preparing 1 Test Task:","27.10.2020 13:10:40 -  TestTask 1 (cf8ba77e-00a4-49f7-9090-2c92406741e0)","27.10.2020 13:10:40 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:40 -  with parameters: ","27.10.2020 13:10:40 - etf.testcases = *","27.10.2020 13:10:40 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:40 - Setting state to CREATED","27.10.2020 13:10:40 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:41 - Starting TestRun.d8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6 at 2020-10-27T13:10:42Z","27.10.2020 13:10:42 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:42 - Project Properties: ","27.10.2020 13:10:42 - etf.testcases - * ","27.10.2020 13:10:42 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","27.10.2020 13:10:42 - username -  ","27.10.2020 13:10:42 - authUser -  ","27.10.2020 13:10:42 - authMethod - basic ","27.10.2020 13:10:42 - TestRunTask initialized","27.10.2020 13:10:59 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:11:06 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:11:07 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:11:08 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:11:39.951 retry condition not satisfied: response.val == response.max
13:11:39.951 sleeping before retry #11
13:11:44.953 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:45.474 response time in milliseconds: 520.00
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Tue, 27 Oct 2020 13:11:45 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:10:40 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:40 UTC 2020)","27.10.2020 13:10:40 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:40 - Preparing 1 Test Task:","27.10.2020 13:10:40 -  TestTask 1 (cf8ba77e-00a4-49f7-9090-2c92406741e0)","27.10.2020 13:10:40 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:40 -  with parameters: ","27.10.2020 13:10:40 - etf.testcases = *","27.10.2020 13:10:40 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:40 - Setting state to CREATED","27.10.2020 13:10:40 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:41 - Starting TestRun.d8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6 at 2020-10-27T13:10:42Z","27.10.2020 13:10:42 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:42 - Project Properties: ","27.10.2020 13:10:42 - etf.testcases - * ","27.10.2020 13:10:42 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","27.10.2020 13:10:42 - username -  ","27.10.2020 13:10:42 - authUser -  ","27.10.2020 13:10:42 - authMethod - basic ","27.10.2020 13:10:42 - TestRunTask initialized","27.10.2020 13:10:59 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:11:06 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:11:07 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:11:08 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:11:45.477 retry condition not satisfied: response.val == response.max
13:11:45.477 sleeping before retry #12
13:11:50.478 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:52.519 response time in milliseconds: 2040.15
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Tue, 27 Oct 2020 13:11:52 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:11:52.519 retry condition satisfied
* print response 0.000
13:11:52.519 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 30.473
13:11:52.520 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:12:22.968 response time in milliseconds: 29347.37
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Cache-Control: public, max-age=120
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Tue, 27 Oct 2020 13:12:21 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Last-Modified: Tue, 27 Oct 2020 13:11:50 GMT
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/d8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6.json","testRuns":{"TestRun":{"id":"EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:10:40.351Z","testTasks":{"TestTask":{"id":"EIDcf8ba77e-00a4-49f7-9090-2c92406741e0","parent":{"ref":"EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID0a0d7937-2de7-4664-a31c-458bd8b76bcf"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EIDc680b975-0bf4-489c-a18e-f9d3015170f2"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID0a0d7937-2de7-4664-a31c-458bd8b76bcf","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:10:38.172Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:10:39.785Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EIDc680b975-0bf4-489c-a18e-f9d3015170f2","testObject":{"ref":"EID0a0d7937-2de7-4664-a31c-458bd8b76bcf"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a2ea286-0175-1000-efc8-c85047d3a58f","testCaseResults":{"TestCaseResult":[{"id":"EID6a2ea288-0175-1000-8056-c026da2fb4b2","testStepResults":{"TestStepResult":[{"id":"EID6a2ea299-0175-1000-ba27-a8f7f616ea28","parent":{"ref":"EID6a2ea288-0175-1000-8056-c026da2fb4b2"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:10:42Z","duration":14,"status":"PASSED"},{"id":"EID6a2ea2a7-0175-1000-4adc-6bdd2d4c163d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ea436-0175-1000-70c9-8d373124c418","parent":{"ref":"EID6a2ea2a7-0175-1000-4adc-6bdd2d4c163d"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:10:42Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea436-0175-1000-52e8-94b34fdd4508","parent":{"ref":"EID6a2ea2a7-0175-1000-4adc-6bdd2d4c163d"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:10:42Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea436-0175-1000-0ec7-db07332e4196","parent":{"ref":"EID6a2ea2a7-0175-1000-4adc-6bdd2d4c163d"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:10:42Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea436-0175-1000-952b-4a8e9fdbda60","parent":{"ref":"EID6a2ea2a7-0175-1000-4adc-6bdd2d4c163d"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:10:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID29c58666-f359-4106-8dae-56dc0ed32c5b"},{"ref":"EID9fecdb6d-8b60-4f13-a2ef-4c077f9d6763"},{"ref":"EID384e5e96-1782-4da2-9e4d-fa5aa1cefa25"}]},"parent":{"ref":"EID6a2ea288-0175-1000-8056-c026da2fb4b2"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:10:42Z","duration":200,"status":"PASSED"}]},"parent":{"ref":"EID6a2ea286-0175-1000-efc8-c85047d3a58f"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:10:42Z","duration":430,"status":"PASSED"},{"id":"EID6a2ea436-0175-1000-7f1d-88326c1ec609","testStepResults":{"TestStepResult":{"id":"EID6a2ea436-0175-1000-9c8e-bc3e25390ece","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ea585-0175-1000-94a9-5f14810b6975","parent":{"ref":"EID6a2ea436-0175-1000-9c8e-bc3e25390ece"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:10:43Z","duration":1,"status":"PASSED"},{"id":"EID6a2ea586-0175-1000-eb55-13df0bc768af","parent":{"ref":"EID6a2ea436-0175-1000-9c8e-bc3e25390ece"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea586-0175-1000-4789-4ba5eaf45b32","parent":{"ref":"EID6a2ea436-0175-1000-9c8e-bc3e25390ece"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc11f6c53-6fa7-42b6-8f7f-1bfd7afa2a7a"},{"ref":"EID37f53372-8ddc-4504-b0df-0dc0913271f8"},{"ref":"EID3ca3311b-b20a-4dc9-9012-7afb0be4350e"}]},"parent":{"ref":"EID6a2ea436-0175-1000-7f1d-88326c1ec609"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:10:42Z","duration":181,"status":"PASSED"}},"parent":{"ref":"EID6a2ea286-0175-1000-efc8-c85047d3a58f"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:10:42Z","duration":336,"status":"PASSED"}]},"parent":{"ref":"EIDc680b975-0bf4-489c-a18e-f9d3015170f2"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:10:42Z","duration":768,"status":"PASSED"},{"id":"EID6a2ea586-0175-1000-680d-357fe1e74004","testCaseResults":{"TestCaseResult":[{"id":"EID6a2ea586-0175-1000-c26e-f4b6e82d3bde","testStepResults":{"TestStepResult":[{"id":"EID6a2ea58f-0175-1000-6cc2-4408fb572b87","parent":{"ref":"EID6a2ea586-0175-1000-c26e-f4b6e82d3bde"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:10:43Z","duration":181,"status":"PASSED"},{"id":"EID6a2ea58f-0175-1000-9dce-257b1f9ca294","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ea6bd-0175-1000-3ea4-105864f5aafe","parent":{"ref":"EID6a2ea58f-0175-1000-9dce-257b1f9ca294"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea6bd-0175-1000-85c9-cb491b52415d","parent":{"ref":"EID6a2ea58f-0175-1000-9dce-257b1f9ca294"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea6bd-0175-1000-57a4-d6ad4542a2d2","parent":{"ref":"EID6a2ea58f-0175-1000-9dce-257b1f9ca294"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea6bd-0175-1000-eacc-8ba053f65ce6","parent":{"ref":"EID6a2ea58f-0175-1000-9dce-257b1f9ca294"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea6bd-0175-1000-dc6a-ee485b447ce2","parent":{"ref":"EID6a2ea58f-0175-1000-9dce-257b1f9ca294"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2b35c3ee-e504-41cb-a09f-dbaf72da3720"},{"ref":"EID80b2b8f3-0cba-44ba-ab78-1fca027256e2"},{"ref":"EIDe531fa99-a2a5-4131-9df8-89101877d9e9"}]},"parent":{"ref":"EID6a2ea586-0175-1000-c26e-f4b6e82d3bde"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:10:43Z","duration":153,"status":"PASSED"}]},"parent":{"ref":"EID6a2ea586-0175-1000-680d-357fe1e74004"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:10:43Z","duration":311,"status":"PASSED"},{"id":"EID6a2ea6bd-0175-1000-0006-36698f8c8b73","testStepResults":{"TestStepResult":[{"id":"EID6a2ea6bd-0175-1000-8dbb-4f4fa35e0294","attachments":{"attachment":[{"ref":"EIDc2ce19f3-4360-4d69-97b5-e0cbf0a07114"},{"ref":"EID09d89e13-0147-4c68-9713-6398b8d9b1b1"}]},"parent":{"ref":"EID6a2ea6bd-0175-1000-0006-36698f8c8b73"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:10:43Z","duration":1065,"status":"PASSED"},{"id":"EID6a2eab10-0175-1000-6ed7-9883af2eef13","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eacd0-0175-1000-576c-12f76cdf442d","parent":{"ref":"EID6a2eab10-0175-1000-6ed7-9883af2eef13"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"PASSED"},{"id":"EID6a2eacd0-0175-1000-ceca-727e00065f15","parent":{"ref":"EID6a2eab10-0175-1000-6ed7-9883af2eef13"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"PASSED"},{"id":"EID6a2eacd0-0175-1000-8e3c-51da5ced2162","parent":{"ref":"EID6a2eab10-0175-1000-6ed7-9883af2eef13"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"PASSED"},{"id":"EID6a2eacd0-0175-1000-274b-979ebf1734ba","parent":{"ref":"EID6a2eab10-0175-1000-6ed7-9883af2eef13"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID61032ea8-1ac8-4476-85fc-5b0cede9d579"},{"ref":"EIDf3376faf-511d-4b97-9b77-9b9f165388b2"},{"ref":"EIDfb47e6c0-9842-4707-8338-f27a66cfdda0"}]},"parent":{"ref":"EID6a2ea6bd-0175-1000-0006-36698f8c8b73"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:10:44Z","duration":366,"status":"PASSED"}]},"parent":{"ref":"EID6a2ea586-0175-1000-680d-357fe1e74004"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:10:43Z","duration":1555,"status":"PASSED"},{"id":"EID6a2eacd1-0175-1000-dbe1-04acd100472f","testStepResults":{"TestStepResult":[{"id":"EID6a2eacd1-0175-1000-cf39-792ab4c1af2b","attachments":{"attachment":[{"ref":"EID02263cbc-0ba0-46ed-a825-342171013100"},{"ref":"EIDa287746e-9b52-4423-b901-b1d6763c5e90"}]},"parent":{"ref":"EID6a2eacd1-0175-1000-dbe1-04acd100472f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:10:45Z","duration":439,"status":"PASSED"},{"id":"EID6a2eaeb4-0175-1000-8b6c-cb16b5f5b6e6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eb0b2-0175-1000-b6b9-a1e6c75022ad","parent":{"ref":"EID6a2eaeb4-0175-1000-8b6c-cb16b5f5b6e6"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb0b2-0175-1000-4a32-bcda75b82a8a","parent":{"ref":"EID6a2eaeb4-0175-1000-8b6c-cb16b5f5b6e6"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb0b2-0175-1000-1deb-e5dbc2dc6712","parent":{"ref":"EID6a2eaeb4-0175-1000-8b6c-cb16b5f5b6e6"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb0b2-0175-1000-d0a2-a935e62aea5d","parent":{"ref":"EID6a2eaeb4-0175-1000-8b6c-cb16b5f5b6e6"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb0b3-0175-1000-873a-4a5aab793972","parent":{"ref":"EID6a2eaeb4-0175-1000-8b6c-cb16b5f5b6e6"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID84346b5a-76e6-4ed4-b944-85984c5314c7"},{"ref":"EIDe2c4c4da-fdfb-4797-9dc9-9478c811fbd8"},{"ref":"EIDa9e8c563-9243-45ae-b739-ea1f41dc9f04"}]},"parent":{"ref":"EID6a2eacd1-0175-1000-dbe1-04acd100472f"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:10:45Z","duration":399,"status":"PASSED"}]},"parent":{"ref":"EID6a2ea586-0175-1000-680d-357fe1e74004"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:10:45Z","duration":994,"status":"PASSED"},{"id":"EID6a2eb0b3-0175-1000-359f-688ecd73e7b7","testStepResults":{"TestStepResult":[{"id":"EID6a2eb0b3-0175-1000-3270-ea410423851b","attachments":{"attachment":[{"ref":"EID27487dd1-3303-44cc-97c6-87cc8ac607ea"},{"ref":"EIDdbcdb387-d962-4d1c-9650-a6dd452ce2ae"}]},"parent":{"ref":"EID6a2eb0b3-0175-1000-359f-688ecd73e7b7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:10:46Z","duration":289,"status":"PASSED"},{"id":"EID6a2eb22e-0175-1000-c3b6-244d534c3118","parent":{"ref":"EID6a2eb0b3-0175-1000-359f-688ecd73e7b7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb22e-0175-1000-feb9-5a7c04cac7c5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eb472-0175-1000-fca7-b902a1db1380","parent":{"ref":"EID6a2eb22e-0175-1000-feb9-5a7c04cac7c5"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb472-0175-1000-5949-52ccb2ff0509","parent":{"ref":"EID6a2eb22e-0175-1000-feb9-5a7c04cac7c5"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb472-0175-1000-6b23-96d1ac117cfe","parent":{"ref":"EID6a2eb22e-0175-1000-feb9-5a7c04cac7c5"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb472-0175-1000-054c-9eced6c5fd14","parent":{"ref":"EID6a2eb22e-0175-1000-feb9-5a7c04cac7c5"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID32d7d4db-ce67-4c51-98f1-363168aefc8c"},{"ref":"EIDea2700c2-c3a6-4f26-8a70-06aa9459a65b"},{"ref":"EID8bb46a76-6138-4432-92b3-4a08874d4880"}]},"parent":{"ref":"EID6a2eb0b3-0175-1000-359f-688ecd73e7b7"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:10:46Z","duration":469,"status":"PASSED"},{"id":"EID6a2eb472-0175-1000-f6a5-c40f00c07487","attachments":{"attachment":{"ref":"EID6508e847-2fae-40db-a81d-2b30f11d236d"}},"parent":{"ref":"EID6a2eb0b3-0175-1000-359f-688ecd73e7b7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:10:47Z","duration":1,"status":"PASSED"},{"id":"EID6a2eb485-0175-1000-7b8e-9b376f009a97","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eb68c-0175-1000-885f-e62349febb09","parent":{"ref":"EID6a2eb485-0175-1000-7b8e-9b376f009a97"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb68c-0175-1000-4de7-c35c61e4cc01","parent":{"ref":"EID6a2eb485-0175-1000-7b8e-9b376f009a97"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb68c-0175-1000-fc2f-74b3751ee9be","parent":{"ref":"EID6a2eb485-0175-1000-7b8e-9b376f009a97"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:10:47Z","duration":1,"status":"PASSED"},{"id":"EID6a2eb68d-0175-1000-17b8-12f9ed9f3bf0","parent":{"ref":"EID6a2eb485-0175-1000-7b8e-9b376f009a97"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb68d-0175-1000-0421-7afff1b8a1c5","parent":{"ref":"EID6a2eb485-0175-1000-7b8e-9b376f009a97"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9d2152a8-7843-47df-bb2e-a714995f5ddc"},{"ref":"EID72308920-9c17-4867-b4e3-64cfde3f3eab"},{"ref":"EID04fbe01b-323c-4fc7-b8e9-71f92bb626e5"}]},"parent":{"ref":"EID6a2eb0b3-0175-1000-359f-688ecd73e7b7"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:10:47Z","duration":306,"status":"PASSED"}]},"parent":{"ref":"EID6a2ea586-0175-1000-680d-357fe1e74004"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:10:46Z","duration":1498,"status":"PASSED"},{"id":"EID6a2eb68d-0175-1000-c9ff-4031c6739ce4","testStepResults":{"TestStepResult":[{"id":"EID6a2eb68d-0175-1000-e226-8b8f435ca0ed","attachments":{"attachment":[{"ref":"EID49bce9b6-b67f-4c67-a8cc-f52fb7242ee8"},{"ref":"EID5f396b0e-8b2b-41ef-8e33-63e1961f4518"}]},"parent":{"ref":"EID6a2eb68d-0175-1000-c9ff-4031c6739ce4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:10:47Z","duration":719,"status":"PASSED"},{"id":"EID6a2eb987-0175-1000-8b30-11d3c1e97c35","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ebd6a-0175-1000-a09f-ca0ba2b4cfd4","parent":{"ref":"EID6a2eb987-0175-1000-8b30-11d3c1e97c35"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:10:49Z","duration":0,"status":"PASSED"},{"id":"EID6a2ebd6a-0175-1000-70ec-55e084fed047","parent":{"ref":"EID6a2eb987-0175-1000-8b30-11d3c1e97c35"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:10:49Z","duration":0,"status":"PASSED"},{"id":"EID6a2ebd6a-0175-1000-d998-2f6a4d4e9d30","parent":{"ref":"EID6a2eb987-0175-1000-8b30-11d3c1e97c35"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:10:49Z","duration":0,"status":"PASSED"},{"id":"EID6a2ebd6a-0175-1000-50ab-3c4a7538b5fb","parent":{"ref":"EID6a2eb987-0175-1000-8b30-11d3c1e97c35"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:10:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID38cd73d2-1894-4c55-98f5-00ce85b38a35"},{"ref":"EIDf53e342d-5e7b-4ecc-802d-b396d6ee9066"},{"ref":"EIDcbb43810-e7b7-4a88-b4ab-a0bc30519736"}]},"parent":{"ref":"EID6a2eb68d-0175-1000-c9ff-4031c6739ce4"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:10:48Z","duration":830,"status":"PASSED"}]},"parent":{"ref":"EID6a2ea586-0175-1000-680d-357fe1e74004"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:10:47Z","duration":1757,"status":"PASSED"},{"id":"EID6a2ebd6a-0175-1000-a40b-6c4ea85f3a6c","testStepResults":{"TestStepResult":[{"id":"EID6a2ebd6a-0175-1000-0c24-19fe6cfe1168","attachments":{"attachment":[{"ref":"EIDba324ea0-b772-4ed2-af76-504d27b0141f"},{"ref":"EID2c6c2a4c-f477-4baf-b2ba-e99202efb4ea"}]},"parent":{"ref":"EID6a2ebd6a-0175-1000-a40b-6c4ea85f3a6c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:10:49Z","duration":260,"status":"PASSED"},{"id":"EID6a2ebe92-0175-1000-08ce-0dae97b68d76","parent":{"ref":"EID6a2ebd6a-0175-1000-a40b-6c4ea85f3a6c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:10:49Z","duration":0,"status":"PASSED"},{"id":"EID6a2ebe92-0175-1000-a373-d822a22f05ca","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ec0c5-0175-1000-73c0-c7b5880eebd7","parent":{"ref":"EID6a2ebe92-0175-1000-a373-d822a22f05ca"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:10:50Z","duration":0,"status":"PASSED"},{"id":"EID6a2ec0c5-0175-1000-0993-93a235a778ba","parent":{"ref":"EID6a2ebe92-0175-1000-a373-d822a22f05ca"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:10:50Z","duration":0,"status":"PASSED"},{"id":"EID6a2ec0c5-0175-1000-1c33-0aeb2834f303","parent":{"ref":"EID6a2ebe92-0175-1000-a373-d822a22f05ca"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:10:50Z","duration":0,"status":"PASSED"},{"id":"EID6a2ec0c5-0175-1000-0c1b-30e8e28a149f","parent":{"ref":"EID6a2ebe92-0175-1000-a373-d822a22f05ca"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:10:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID911a0c5c-c171-4b1d-855b-c79ca63fa561"},{"ref":"EID6debb2fa-ccb8-43d4-9239-9d488f024065"},{"ref":"EID98684a02-3362-4692-b0a4-0c0fcc82d633"}]},"parent":{"ref":"EID6a2ebd6a-0175-1000-a40b-6c4ea85f3a6c"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:10:49Z","duration":450,"status":"PASSED"},{"id":"EID6a2ec0c5-0175-1000-e6f7-4791b86411f2","attachments":{"attachment":{"ref":"EID3bddfcb3-ebfd-43c6-9b8f-3e2ddb0ab75b"}},"parent":{"ref":"EID6a2ebd6a-0175-1000-a40b-6c4ea85f3a6c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:10:50Z","duration":1,"status":"PASSED"},{"id":"EID6a2ec0fb-0175-1000-6db2-e7ead0147e64","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ec1a4-0175-1000-ffed-835117e997ee","parent":{"ref":"EID6a2ec0fb-0175-1000-6db2-e7ead0147e64"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:10:50Z","duration":0,"status":"PASSED"},{"id":"EID6a2ec1a4-0175-1000-b743-0c6b2794b26a","parent":{"ref":"EID6a2ec0fb-0175-1000-6db2-e7ead0147e64"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:10:50Z","duration":0,"status":"PASSED"},{"id":"EID6a2ec1a4-0175-1000-6def-251547e95cae","parent":{"ref":"EID6a2ec0fb-0175-1000-6db2-e7ead0147e64"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:10:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID02d6a208-1fcf-4cbf-9799-aef90a1ab150"},{"ref":"EID1d4ec749-5e58-486c-935c-7709b7b9797a"},{"ref":"EID3181dc43-246a-4574-a8d3-bcb70f8c3b9b"}]},"parent":{"ref":"EID6a2ebd6a-0175-1000-a40b-6c4ea85f3a6c"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:10:50Z","duration":90,"status":"PASSED"},{"id":"EID6a2ec1a4-0175-1000-df21-967a7d22bcc0","attachments":{"attachment":{"ref":"EID5bd1e1b1-da37-4f93-be7c-2d4f73992ddb"}},"parent":{"ref":"EID6a2ebd6a-0175-1000-a40b-6c4ea85f3a6c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-27T13:10:50Z","duration":0,"status":"PASSED"},{"id":"EID6a2ec1b1-0175-1000-6d51-1b36443c55a4","attachments":{"attachment":{"ref":"EIDc6318fe4-c887-4ddf-941e-1478ca7ac3f6"}},"parent":{"ref":"EID6a2ebd6a-0175-1000-a40b-6c4ea85f3a6c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-27T13:10:50Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6a2ea586-0175-1000-680d-357fe1e74004"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:10:49Z","duration":1110,"status":"PASSED"},{"id":"EID6a2ec1c0-0175-1000-1b71-2f3d84414091","testStepResults":{"TestStepResult":[{"id":"EID6a2ec1c0-0175-1000-08df-bfd7ba12ac93","attachments":{"attachment":[{"ref":"EID598f49d8-8f8e-4219-81d0-f13554363410"},{"ref":"EID695dca5e-0422-4f86-8ad8-3cf16be2800c"}]},"parent":{"ref":"EID6a2ec1c0-0175-1000-1b71-2f3d84414091"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:10:50Z","duration":861,"status":"PASSED"},{"id":"EID6a2ec547-0175-1000-6ddd-c5f3d4ba82dd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ec7b3-0175-1000-798a-1f93fc882b63","parent":{"ref":"EID6a2ec547-0175-1000-6ddd-c5f3d4ba82dd"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:10:52Z","duration":0,"status":"PASSED"},{"id":"EID6a2ec7b3-0175-1000-5f1e-f1368736ec6c","parent":{"ref":"EID6a2ec547-0175-1000-6ddd-c5f3d4ba82dd"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:10:52Z","duration":0,"status":"PASSED"},{"id":"EID6a2ec7b3-0175-1000-7028-86586af31138","parent":{"ref":"EID6a2ec547-0175-1000-6ddd-c5f3d4ba82dd"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:10:52Z","duration":0,"status":"PASSED"},{"id":"EID6a2ec7b3-0175-1000-2868-a082376536fe","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a2ec547-0175-1000-6ddd-c5f3d4ba82dd"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:10:52Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID5afcb95f-590c-44b1-89d3-769943de70b4"},{"ref":"EIDdc347148-b9c0-4d48-b300-488054bc92f5"},{"ref":"EID93bf7968-804d-491d-ba07-3c9c71b9c349"}]},"parent":{"ref":"EID6a2ec1c0-0175-1000-1b71-2f3d84414091"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:10:51Z","duration":416,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a2ea586-0175-1000-680d-357fe1e74004"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:10:50Z","duration":1523,"status":"PASSED_MANUAL"},{"id":"EID6a2ec7b3-0175-1000-dd24-768b68a2a4c0","testStepResults":{"TestStepResult":{"id":"EID6a2ec7b3-0175-1000-2476-e1f2025bb9c7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eca2d-0175-1000-bd86-6e73bb4417cc","parent":{"ref":"EID6a2ec7b3-0175-1000-2476-e1f2025bb9c7"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:10:52Z","duration":0,"status":"PASSED"},{"id":"EID6a2eca2d-0175-1000-c969-c04f965d8919","parent":{"ref":"EID6a2ec7b3-0175-1000-2476-e1f2025bb9c7"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:10:52Z","duration":0,"status":"PASSED"},{"id":"EID6a2eca2d-0175-1000-3e50-1fdc29799022","parent":{"ref":"EID6a2ec7b3-0175-1000-2476-e1f2025bb9c7"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:10:52Z","duration":0,"status":"PASSED"},{"id":"EID6a2eca2d-0175-1000-dc72-7d4e84a55d63","parent":{"ref":"EID6a2ec7b3-0175-1000-2476-e1f2025bb9c7"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:10:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbb249d11-8c90-45e0-bb32-5d8da5990f7c"},{"ref":"EIDd00bd3fc-34d1-4df3-a629-c5b886fd0a34"},{"ref":"EID97d7e32c-693f-4425-b03f-f79126400f8c"}]},"parent":{"ref":"EID6a2ec7b3-0175-1000-dd24-768b68a2a4c0"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:10:52Z","duration":306,"status":"PASSED"}},"parent":{"ref":"EID6a2ea586-0175-1000-680d-357fe1e74004"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:10:52Z","duration":635,"status":"PASSED"},{"id":"EID6a2eca2e-0175-1000-5c4f-fdf11f986990","testStepResults":{"TestStepResult":{"id":"EID6a2eca2e-0175-1000-c8a3-ac1119837559","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ecad2-0175-1000-6205-456be2410544","parent":{"ref":"EID6a2eca2e-0175-1000-c8a3-ac1119837559"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:10:52Z","duration":0,"status":"PASSED"},{"id":"EID6a2ecad2-0175-1000-8749-efeeda3ae774","parent":{"ref":"EID6a2eca2e-0175-1000-c8a3-ac1119837559"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:10:52Z","duration":0,"status":"PASSED"},{"id":"EID6a2ecad2-0175-1000-04f9-e2f5eed3ba5b","parent":{"ref":"EID6a2eca2e-0175-1000-c8a3-ac1119837559"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:10:52Z","duration":0,"status":"PASSED"},{"id":"EID6a2ecad2-0175-1000-e24b-6378edde169d","parent":{"ref":"EID6a2eca2e-0175-1000-c8a3-ac1119837559"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:10:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID574a7fe7-f2f9-4949-806d-ebaa2b625976"},{"ref":"EIDcc58bc23-a056-4b98-b100-1efbc39f25e4"},{"ref":"EID44a3f73c-0bf9-4243-90c1-a4861b4ffbaf"}]},"parent":{"ref":"EID6a2eca2e-0175-1000-5c4f-fdf11f986990"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:10:52Z","duration":47,"status":"PASSED"}},"parent":{"ref":"EID6a2ea586-0175-1000-680d-357fe1e74004"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:10:52Z","duration":164,"status":"PASSED"},{"id":"EID6a2ecad2-0175-1000-ca69-dbc6edebbbb7","testStepResults":{"TestStepResult":[{"id":"EID6a2ecad2-0175-1000-d467-ebba9e313e24","attachments":{"attachment":[{"ref":"EID742bc9d3-6a76-42b2-bea1-3bcc8cbcab44"},{"ref":"EIDa679af62-2475-402b-b061-08ae1c6b729b"},{"ref":"EIDb47a8e60-8b2b-454f-91f0-29d4e59f0f7a"},{"ref":"EIDf8a98978-58a2-4efa-b0f1-507f8e416913"},{"ref":"EID4150dad7-5773-44de-b98f-c875897dc77a"},{"ref":"EID356495ca-2bf8-45c9-b6b0-2cf85df57a8a"},{"ref":"EID0919590b-6370-441d-b89c-5c366ba1adda"},{"ref":"EID5549e52c-23e6-440c-b103-aaedd9fbd2c7"},{"ref":"EID2efd1bf8-6063-48da-a900-2aa305c8bb0a"},{"ref":"EID51d03a83-fd1e-456e-ba3e-ed693aaae31c"},{"ref":"EIDa8441b45-0bbe-467b-b8b7-1e8a48de9690"},{"ref":"EIDedf1b680-ddd5-4999-915c-dd478dde0a86"}]},"parent":{"ref":"EID6a2ecad2-0175-1000-ca69-dbc6edebbbb7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:10:52Z","duration":1717,"status":"PASSED"},{"id":"EID6a2ed2da-0175-1000-0e66-1c9075420715","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ed3cb-0175-1000-b814-fbc2729548f6","parent":{"ref":"EID6a2ed2da-0175-1000-0e66-1c9075420715"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-27T13:10:55Z","duration":0,"status":"PASSED"},{"id":"EID6a2ed3cb-0175-1000-f31a-d29a81e7b15d","parent":{"ref":"EID6a2ed2da-0175-1000-0e66-1c9075420715"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-27T13:10:55Z","duration":0,"status":"PASSED"},{"id":"EID6a2ed3cb-0175-1000-e853-8c5e486c680f","parent":{"ref":"EID6a2ed2da-0175-1000-0e66-1c9075420715"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-27T13:10:55Z","duration":0,"status":"PASSED"},{"id":"EID6a2ed3cb-0175-1000-6dbf-b32f62e8243c","parent":{"ref":"EID6a2ed2da-0175-1000-0e66-1c9075420715"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-27T13:10:55Z","duration":0,"status":"PASSED"},{"id":"EID6a2ed3cb-0175-1000-8787-4c280d8d1c2d","parent":{"ref":"EID6a2ed2da-0175-1000-0e66-1c9075420715"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-27T13:10:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7028b56b-1491-477c-8473-6baf74d816f0"},{"ref":"EID1c5c1134-4281-46ad-8d32-c45dce575f80"},{"ref":"EID5ddd8fe2-cced-4aff-8131-2d0169761fce"}]},"parent":{"ref":"EID6a2ecad2-0175-1000-ca69-dbc6edebbbb7"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-27T13:10:54Z","duration":87,"status":"PASSED"}]},"parent":{"ref":"EID6a2ea586-0175-1000-680d-357fe1e74004"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:10:52Z","duration":2297,"status":"PASSED"},{"id":"EID6a2ed3cb-0175-1000-0e3a-d537e45920ef","testStepResults":{"TestStepResult":{"id":"EID6a2ed3cb-0175-1000-ab42-4bc6296fa6c5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ed4f2-0175-1000-53e5-012724e79c62","parent":{"ref":"EID6a2ed3cb-0175-1000-ab42-4bc6296fa6c5"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:10:55Z","duration":0,"status":"PASSED"},{"id":"EID6a2ed4f3-0175-1000-1168-aa6d2c0d163a","parent":{"ref":"EID6a2ed3cb-0175-1000-ab42-4bc6296fa6c5"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:10:55Z","duration":0,"status":"PASSED"},{"id":"EID6a2ed4f3-0175-1000-df68-9b17294dc879","parent":{"ref":"EID6a2ed3cb-0175-1000-ab42-4bc6296fa6c5"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:10:55Z","duration":0,"status":"PASSED"},{"id":"EID6a2ed4f3-0175-1000-6744-06a77526614c","parent":{"ref":"EID6a2ed3cb-0175-1000-ab42-4bc6296fa6c5"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:10:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID12d4798e-5ea2-45e5-8efd-fd6de09b05c1"},{"ref":"EID80e90f67-0268-48ae-98c9-1ffb48f98866"},{"ref":"EIDb7006a9a-a9d7-4985-9e04-06af20dcfbff"}]},"parent":{"ref":"EID6a2ed3cb-0175-1000-0e3a-d537e45920ef"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:10:55Z","duration":103,"status":"PASSED"}},"parent":{"ref":"EID6a2ea586-0175-1000-680d-357fe1e74004"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:10:55Z","duration":296,"status":"PASSED"},{"id":"EID6a2ed4f3-0175-1000-75a2-8b311b0fdeac","testStepResults":{"TestStepResult":{"id":"EID6a2ed4f3-0175-1000-b656-b756571d45ce","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ed7e7-0175-1000-13fe-c8501fa27fd9","parent":{"ref":"EID6a2ed4f3-0175-1000-b656-b756571d45ce"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:10:56Z","duration":0,"status":"PASSED"},{"id":"EID6a2ed7e7-0175-1000-a93b-10f7d4efde9c","parent":{"ref":"EID6a2ed4f3-0175-1000-b656-b756571d45ce"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:10:56Z","duration":0,"status":"PASSED"},{"id":"EID6a2ed7e7-0175-1000-b240-68e6e3f6bd55","parent":{"ref":"EID6a2ed4f3-0175-1000-b656-b756571d45ce"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:10:56Z","duration":0,"status":"PASSED"},{"id":"EID6a2ed7e7-0175-1000-7cdb-3b2ace8324ca","parent":{"ref":"EID6a2ed4f3-0175-1000-b656-b756571d45ce"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:10:56Z","duration":0,"status":"PASSED"},{"id":"EID6a2ed7e7-0175-1000-423f-5e21b3951f43","parent":{"ref":"EID6a2ed4f3-0175-1000-b656-b756571d45ce"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:10:56Z","duration":0,"status":"PASSED"},{"id":"EID6a2ed7e7-0175-1000-cc12-5a72f877d020","parent":{"ref":"EID6a2ed4f3-0175-1000-b656-b756571d45ce"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:10:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8a469cb8-02ba-4f8f-8fe9-5fa05d516d04"},{"ref":"EIDe04223e4-2be7-4fb6-9ac9-6d52f03a8809"},{"ref":"EID4f657305-57e3-4de3-a27c-70711e673571"}]},"parent":{"ref":"EID6a2ed4f3-0175-1000-75a2-8b311b0fdeac"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:10:55Z","duration":517,"status":"PASSED"}},"parent":{"ref":"EID6a2ea586-0175-1000-680d-357fe1e74004"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:10:55Z","duration":756,"status":"PASSED"},{"id":"EID6a2ed7e7-0175-1000-fa24-3d4b2b323c29","testStepResults":{"TestStepResult":{"id":"EID6a2ed7f1-0175-1000-2d90-123ad0884ac6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eda26-0175-1000-8b4c-bb6f123cb5bf","parent":{"ref":"EID6a2ed7f1-0175-1000-2d90-123ad0884ac6"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:10:56Z","duration":0,"status":"PASSED"},{"id":"EID6a2eda26-0175-1000-51e3-a3194425ac3b","parent":{"ref":"EID6a2ed7f1-0175-1000-2d90-123ad0884ac6"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:10:56Z","duration":0,"status":"PASSED"},{"id":"EID6a2eda26-0175-1000-0d89-bf407e8daf0a","parent":{"ref":"EID6a2ed7f1-0175-1000-2d90-123ad0884ac6"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:10:56Z","duration":0,"status":"PASSED"},{"id":"EID6a2eda26-0175-1000-f224-29558ff4ef8b","parent":{"ref":"EID6a2ed7f1-0175-1000-2d90-123ad0884ac6"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:10:56Z","duration":0,"status":"PASSED"},{"id":"EID6a2eda26-0175-1000-b612-2d3d46620faa","parent":{"ref":"EID6a2ed7f1-0175-1000-2d90-123ad0884ac6"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:10:56Z","duration":0,"status":"PASSED"},{"id":"EID6a2eda26-0175-1000-32ff-bfac0b2cd8c1","parent":{"ref":"EID6a2ed7f1-0175-1000-2d90-123ad0884ac6"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:10:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID05594c6f-7b20-4b9e-b57c-4c549f3bbc89"},{"ref":"EID745945ee-1998-4b10-90b2-b38de1efa837"},{"ref":"EID4f03c99e-6898-4470-9ab8-2ae49cdcb82c"}]},"parent":{"ref":"EID6a2ed7e7-0175-1000-fa24-3d4b2b323c29"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:10:56Z","duration":377,"status":"PASSED"}},"parent":{"ref":"EID6a2ea586-0175-1000-680d-357fe1e74004"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:10:56Z","duration":575,"status":"PASSED"},{"id":"EID6a2eda27-0175-1000-e993-d20eb054286f","testStepResults":{"TestStepResult":{"id":"EID6a2eda27-0175-1000-ec53-8a50dce83d99","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2edb66-0175-1000-7b7e-0f35dc728d31","parent":{"ref":"EID6a2eda27-0175-1000-ec53-8a50dce83d99"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:10:57Z","duration":0,"status":"PASSED"},{"id":"EID6a2edb66-0175-1000-970a-ee33ba87a57a","parent":{"ref":"EID6a2eda27-0175-1000-ec53-8a50dce83d99"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:10:57Z","duration":0,"status":"PASSED"},{"id":"EID6a2edb66-0175-1000-8038-2de4360a37e0","parent":{"ref":"EID6a2eda27-0175-1000-ec53-8a50dce83d99"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:10:57Z","duration":0,"status":"PASSED"},{"id":"EID6a2edb66-0175-1000-0a24-7885b07874a2","parent":{"ref":"EID6a2eda27-0175-1000-ec53-8a50dce83d99"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:10:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa6c162b8-47a0-4db9-9736-995679b5e4f6"},{"ref":"EID452a14aa-89ef-44b4-b3c7-b0acac5ea8fb"},{"ref":"EID13f476a7-0c56-4109-8401-dc113c55a751"}]},"parent":{"ref":"EID6a2eda27-0175-1000-e993-d20eb054286f"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:10:56Z","duration":175,"status":"PASSED"}},"parent":{"ref":"EID6a2ea586-0175-1000-680d-357fe1e74004"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:10:56Z","duration":319,"status":"PASSED"},{"id":"EID6a2edb66-0175-1000-a6af-7c29588748d9","testStepResults":{"TestStepResult":[{"id":"EID6a2edb66-0175-1000-009f-3a7af96716a2","attachments":{"attachment":[{"ref":"EIDdcd2e992-b2b1-4d46-85eb-160d31322c86"},{"ref":"EIDa0b84b60-1e0e-435c-bc0e-b7e0afe5f25e"},{"ref":"EIDc971c8ff-4a8a-429d-bdb0-e5b2a1a2c5b4"},{"ref":"EID56bba5d8-9a8e-43fd-990f-61ef8f70ba5f"}]},"parent":{"ref":"EID6a2edb66-0175-1000-a6af-7c29588748d9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:10:57Z","duration":624,"status":"PASSED"},{"id":"EID6a2ede74-0175-1000-a5c7-984ec430f87b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ee131-0175-1000-f4fb-9d511e44dc0d","parent":{"ref":"EID6a2ede74-0175-1000-a5c7-984ec430f87b"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:10:58Z","duration":0,"status":"PASSED"},{"id":"EID6a2ee131-0175-1000-9df9-8e86eeba8dfa","parent":{"ref":"EID6a2ede74-0175-1000-a5c7-984ec430f87b"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:10:58Z","duration":0,"status":"PASSED"},{"id":"EID6a2ee131-0175-1000-d026-f2910ae17f6c","parent":{"ref":"EID6a2ede74-0175-1000-a5c7-984ec430f87b"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:10:58Z","duration":0,"status":"PASSED"},{"id":"EID6a2ee131-0175-1000-f514-acc420ec6f72","parent":{"ref":"EID6a2ede74-0175-1000-a5c7-984ec430f87b"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:10:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1510b927-1cf6-403a-bdf7-f49da842085d"},{"ref":"EID33aa5834-6451-4ebf-b776-ccf9357a99b2"},{"ref":"EID3e8d0e6b-6e5b-458d-b955-b3016c4c3380"}]},"parent":{"ref":"EID6a2edb66-0175-1000-a6af-7c29588748d9"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:10:57Z","duration":584,"status":"PASSED"}]},"parent":{"ref":"EID6a2ea586-0175-1000-680d-357fe1e74004"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:10:57Z","duration":1483,"status":"PASSED"},{"id":"EID6a2ee131-0175-1000-5959-4493aa638574","testStepResults":{"TestStepResult":{"id":"EID6a2ee131-0175-1000-e3de-30e5fb459f3f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ee48f-0175-1000-26e1-2b47abe9ec7a","parent":{"ref":"EID6a2ee131-0175-1000-e3de-30e5fb459f3f"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:10:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2ee48f-0175-1000-c97b-351ac8a73a8b","parent":{"ref":"EID6a2ee131-0175-1000-e3de-30e5fb459f3f"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:10:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2ee48f-0175-1000-ed51-a932a554df26","parent":{"ref":"EID6a2ee131-0175-1000-e3de-30e5fb459f3f"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:10:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2ee48f-0175-1000-2162-7e822d20cd27","parent":{"ref":"EID6a2ee131-0175-1000-e3de-30e5fb459f3f"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:10:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdda5ffc5-c6dd-458a-82d0-2c78c3dcf909"},{"ref":"EID15c173bb-1f34-4547-bda8-6c41dd7a1ff3"},{"ref":"EIDcf9f3aaa-73e4-4c25-ac10-62e0686dce27"}]},"parent":{"ref":"EID6a2ee131-0175-1000-5959-4493aa638574"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:10:58Z","duration":670,"status":"PASSED"}},"parent":{"ref":"EID6a2ea586-0175-1000-680d-357fe1e74004"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:10:58Z","duration":862,"status":"PASSED"},{"id":"EID6a2ee49b-0175-1000-9f42-54b83fda5e67","testStepResults":{"TestStepResult":[{"id":"EID6a2ee49b-0175-1000-544a-120f890d8e9e","parent":{"ref":"EID6a2ee49b-0175-1000-9f42-54b83fda5e67"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:10:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2ee49b-0175-1000-8c12-5198fae716a6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ee5d4-0175-1000-555e-b3b7331fdc87","parent":{"ref":"EID6a2ee49b-0175-1000-8c12-5198fae716a6"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:10:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2ee5d4-0175-1000-0422-debd5d1ad43d","parent":{"ref":"EID6a2ee49b-0175-1000-8c12-5198fae716a6"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:10:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2ee5d4-0175-1000-4151-b3c3a7f9861b","parent":{"ref":"EID6a2ee49b-0175-1000-8c12-5198fae716a6"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:10:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2ee5d4-0175-1000-7506-7c31d4334b2a","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6a2ee49b-0175-1000-8c12-5198fae716a6"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:10:59Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID9f2030c1-a8cc-4c1d-84e8-f07aa752e65a"},{"ref":"EID2fe07f1d-b7ec-4ffd-98d2-f0b9cb5774d4"},{"ref":"EIDc10d3bcb-503d-47bb-9946-e7b5840394b7"}]},"parent":{"ref":"EID6a2ee49b-0175-1000-9f42-54b83fda5e67"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:10:59Z","duration":201,"status":"FAILED"}]},"parent":{"ref":"EID6a2ea586-0175-1000-680d-357fe1e74004"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:10:59Z","duration":339,"status":"FAILED"}]},"parent":{"ref":"EIDc680b975-0bf4-489c-a18e-f9d3015170f2"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:10:43Z","duration":16489,"status":"FAILED"},{"id":"EID6a2ee5ef-0175-1000-d6ab-ae8800c4bd06","testCaseResults":{"TestCaseResult":[{"id":"EID6a2ee5ef-0175-1000-2c6d-ed73b2af25ff","testStepResults":{"TestStepResult":[{"id":"EID6a2ee5ef-0175-1000-5499-2239852abf81","parent":{"ref":"EID6a2ee5ef-0175-1000-2c6d-ed73b2af25ff"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:10:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2ee5ef-0175-1000-3d6c-9bee881e901d","parent":{"ref":"EID6a2ee5ef-0175-1000-2c6d-ed73b2af25ff"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:10:59Z","duration":670,"status":"PASSED"},{"id":"EID6a2ee5f0-0175-1000-f14f-ff1b6d428fa0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ee7c5-0175-1000-6542-1dc1ceb5af21","parent":{"ref":"EID6a2ee5f0-0175-1000-f14f-ff1b6d428fa0"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:11:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2ee7c5-0175-1000-e97b-95dae6e34be8","parent":{"ref":"EID6a2ee5f0-0175-1000-f14f-ff1b6d428fa0"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:11:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2ee7c5-0175-1000-4b6e-e4c49908bf9d","parent":{"ref":"EID6a2ee5f0-0175-1000-f14f-ff1b6d428fa0"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:11:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3c5e66d4-88a5-4f77-bcda-458617b5f904"},{"ref":"EID96f6360f-72e9-4561-b22b-134d4f4d7b75"},{"ref":"EID79c8a820-2ba9-43c8-aa74-a688d18bbda8"}]},"parent":{"ref":"EID6a2ee5ef-0175-1000-2c6d-ed73b2af25ff"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:10:59Z","duration":270,"status":"PASSED"},{"id":"EID6a2ee7c5-0175-1000-090e-883b046afd24","attachments":{"attachment":{"ref":"EIDdfa2046c-6297-4058-98e6-99f03a20b73a"}},"parent":{"ref":"EID6a2ee5ef-0175-1000-2c6d-ed73b2af25ff"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:11:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2ee7d1-0175-1000-60b6-59cc8520c90a","parent":{"ref":"EID6a2ee5ef-0175-1000-2c6d-ed73b2af25ff"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:11:00Z","duration":11,"status":"PASSED"}]},"parent":{"ref":"EID6a2ee5ef-0175-1000-d6ab-ae8800c4bd06"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:10:59Z","duration":493,"status":"PASSED"},{"id":"EID6a2ee7dc-0175-1000-41b0-9ff34ac3ed78","testStepResults":{"TestStepResult":[{"id":"EID6a2ee7e5-0175-1000-c210-e82de9931cfd","parent":{"ref":"EID6a2ee7dc-0175-1000-41b0-9ff34ac3ed78"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:11:00Z","duration":181,"status":"PASSED"},{"id":"EID6a2ee7e5-0175-1000-55f8-afd55e7fdcb6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ee8a0-0175-1000-73b4-bd7f95351599","parent":{"ref":"EID6a2ee7e5-0175-1000-55f8-afd55e7fdcb6"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:11:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2ee8a0-0175-1000-2100-e330a581a5f0","parent":{"ref":"EID6a2ee7e5-0175-1000-55f8-afd55e7fdcb6"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:11:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2ee8a0-0175-1000-9d84-41a5e5a8c744","parent":{"ref":"EID6a2ee7e5-0175-1000-55f8-afd55e7fdcb6"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:11:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2ee8a0-0175-1000-81e6-1f7b39232a4d","parent":{"ref":"EID6a2ee7e5-0175-1000-55f8-afd55e7fdcb6"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:11:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2ee8a0-0175-1000-099d-8b0ab396999d","parent":{"ref":"EID6a2ee7e5-0175-1000-55f8-afd55e7fdcb6"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:11:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb8254cc1-ea1f-4157-8a0e-7ab3d10aab46"},{"ref":"EID3026066d-a13d-4ed6-8bcb-8b0737f48a56"},{"ref":"EIDc2a61867-71ff-45a1-aad7-e5735a5567ef"}]},"parent":{"ref":"EID6a2ee7dc-0175-1000-41b0-9ff34ac3ed78"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:11:00Z","duration":56,"status":"PASSED"}]},"parent":{"ref":"EID6a2ee5ef-0175-1000-d6ab-ae8800c4bd06"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:11:00Z","duration":196,"status":"PASSED"},{"id":"EID6a2ee8a9-0175-1000-48a9-5c2af54e9520","testStepResults":{"TestStepResult":[{"id":"EID6a2ee8a9-0175-1000-5fb6-532f1832fbad","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eea73-0175-1000-a7f4-14e3d8df4d36","parent":{"ref":"EID6a2ee8a9-0175-1000-5fb6-532f1832fbad"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:11:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2eea73-0175-1000-98a4-2f614deea75c","parent":{"ref":"EID6a2ee8a9-0175-1000-5fb6-532f1832fbad"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:11:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2eea73-0175-1000-03af-39d7ec10276f","parent":{"ref":"EID6a2ee8a9-0175-1000-5fb6-532f1832fbad"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:11:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7c2c9183-e42f-4d63-95e1-e8dc1c3f4147"},{"ref":"EID24a8d203-7d9f-42d3-94a0-5f19a2043053"},{"ref":"EID7553ad4b-d3db-4bca-b0d4-37e98f69aeca"}]},"parent":{"ref":"EID6a2ee8a9-0175-1000-48a9-5c2af54e9520"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:11:00Z","duration":368,"status":"PASSED"},{"id":"EID6a2eea73-0175-1000-1529-11cc89232825","attachments":{"attachment":{"ref":"EID475ff6bb-3e6c-43f6-add5-1c38174696f8"}},"parent":{"ref":"EID6a2ee8a9-0175-1000-48a9-5c2af54e9520"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-27T13:11:00Z","duration":1,"status":"PASSED"},{"id":"EID6a2eea8b-0175-1000-796e-4269f001ae8f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eebca-0175-1000-0e18-56b93474990d","parent":{"ref":"EID6a2eea8b-0175-1000-796e-4269f001ae8f"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-27T13:11:01Z","duration":0,"status":"PASSED"},{"id":"EID6a2eebca-0175-1000-1ba6-4613bfbc9456","parent":{"ref":"EID6a2eea8b-0175-1000-796e-4269f001ae8f"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-27T13:11:01Z","duration":0,"status":"PASSED"},{"id":"EID6a2eebca-0175-1000-aa68-e20b4abccdd1","parent":{"ref":"EID6a2eea8b-0175-1000-796e-4269f001ae8f"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-27T13:11:01Z","duration":0,"status":"PASSED"},{"id":"EID6a2eebca-0175-1000-95c3-3f8a64c19fcd","parent":{"ref":"EID6a2eea8b-0175-1000-796e-4269f001ae8f"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-27T13:11:01Z","duration":0,"status":"PASSED"},{"id":"EID6a2eebca-0175-1000-9e0d-110dd4e35b5e","parent":{"ref":"EID6a2eea8b-0175-1000-796e-4269f001ae8f"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-27T13:11:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID92991149-42ee-4019-bd93-505202f5fac9"},{"ref":"EIDb86f0b58-6c83-434f-bf76-cee1ee47dce2"},{"ref":"EID24f1d6e9-1f45-4946-821f-e1d949b4f99a"}]},"parent":{"ref":"EID6a2ee8a9-0175-1000-48a9-5c2af54e9520"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-27T13:11:01Z","duration":233,"status":"PASSED"}]},"parent":{"ref":"EID6a2ee5ef-0175-1000-d6ab-ae8800c4bd06"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:11:00Z","duration":810,"status":"PASSED"},{"id":"EID6a2eebd3-0175-1000-3bab-de1ee079ace2","testStepResults":{"TestStepResult":[{"id":"EID6a2eebd3-0175-1000-82b1-8474d0493385","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eec4f-0175-1000-7566-8967d5ed9137","parent":{"ref":"EID6a2eebd3-0175-1000-82b1-8474d0493385"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:11:01Z","duration":0,"status":"PASSED"},{"id":"EID6a2eec4f-0175-1000-1e10-069ed9a5c7ee","parent":{"ref":"EID6a2eebd3-0175-1000-82b1-8474d0493385"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:11:01Z","duration":0,"status":"PASSED"},{"id":"EID6a2eec4f-0175-1000-fd98-7b1ded56fa36","parent":{"ref":"EID6a2eebd3-0175-1000-82b1-8474d0493385"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:11:01Z","duration":0,"status":"PASSED"},{"id":"EID6a2eec4f-0175-1000-0094-121c039ee84d","parent":{"ref":"EID6a2eebd3-0175-1000-82b1-8474d0493385"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:11:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7422318d-72ce-43a1-bcd7-d2c7c5e9aad4"},{"ref":"EIDc701773e-3768-4c0a-bfdc-4725acdbc3e2"},{"ref":"EIDcfc586eb-c3d7-41ac-ba3d-7912b272f6bf"}]},"parent":{"ref":"EID6a2eebd3-0175-1000-3bab-de1ee079ace2"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:11:01Z","duration":47,"status":"PASSED"},{"id":"EID6a2eec4f-0175-1000-a1c2-1347aa989868","attachments":{"attachment":{"ref":"EIDa7c66b43-72ef-4b44-895a-75d909264d04"}},"parent":{"ref":"EID6a2eebd3-0175-1000-3bab-de1ee079ace2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-27T13:11:01Z","duration":0,"status":"PASSED"},{"id":"EID6a2eecc9-0175-1000-96e2-bc6ecf43cfd4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eecfa-0175-1000-9ba9-ca98c1bd2c07","parent":{"ref":"EID6a2eecc9-0175-1000-96e2-bc6ecf43cfd4"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-27T13:11:01Z","duration":1,"status":"PASSED"},{"id":"EID6a2eecfb-0175-1000-39b0-0914922715e8","parent":{"ref":"EID6a2eecc9-0175-1000-96e2-bc6ecf43cfd4"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-27T13:11:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8692e7c0-eb45-4802-b72e-1f31766836fe"},{"ref":"EID03d2e12d-b8aa-429a-844c-bc81867b2a35"}]},"parent":{"ref":"EID6a2eebd3-0175-1000-3bab-de1ee079ace2"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-27T13:11:01Z","duration":46,"status":"PASSED"},{"id":"EID6a2eecfb-0175-1000-5699-6715ce8246d1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eedb8-0175-1000-8567-e8c5e95a7616","parent":{"ref":"EID6a2eecfb-0175-1000-5699-6715ce8246d1"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-27T13:11:01Z","duration":0,"status":"PASSED"},{"id":"EID6a2eedb8-0175-1000-8727-56fadeecd71e","parent":{"ref":"EID6a2eecfb-0175-1000-5699-6715ce8246d1"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-27T13:11:01Z","duration":0,"status":"PASSED"},{"id":"EID6a2eedb8-0175-1000-5ed1-68f9954aa348","parent":{"ref":"EID6a2eecfb-0175-1000-5699-6715ce8246d1"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-27T13:11:01Z","duration":0,"status":"PASSED"},{"id":"EID6a2eedb8-0175-1000-1380-55defa32d034","parent":{"ref":"EID6a2eecfb-0175-1000-5699-6715ce8246d1"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-27T13:11:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID714e787e-1876-4370-9a0b-f8b62a8d8f5e"},{"ref":"EIDfafec43d-9de3-47f2-b073-0bb17e646e2d"},{"ref":"EID64c2406f-46d7-4524-a6dc-619f6207aee1"}]},"parent":{"ref":"EID6a2eebd3-0175-1000-3bab-de1ee079ace2"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-27T13:11:01Z","duration":57,"status":"PASSED"}]},"parent":{"ref":"EID6a2ee5ef-0175-1000-d6ab-ae8800c4bd06"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:11:01Z","duration":494,"status":"PASSED"},{"id":"EID6a2eedc1-0175-1000-5736-d7ae1fa89a33","testStepResults":{"TestStepResult":{"id":"EID6a2eedc1-0175-1000-f2c3-c015c62683da","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eeef0-0175-1000-7a05-df668d712713","parent":{"ref":"EID6a2eedc1-0175-1000-f2c3-c015c62683da"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:11:02Z","duration":0,"status":"PASSED"},{"id":"EID6a2eeef0-0175-1000-1647-38558b05812a","parent":{"ref":"EID6a2eedc1-0175-1000-f2c3-c015c62683da"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:11:02Z","duration":0,"status":"PASSED"},{"id":"EID6a2eeef0-0175-1000-0b86-df76a2fa929a","parent":{"ref":"EID6a2eedc1-0175-1000-f2c3-c015c62683da"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:11:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1a6b2f3b-4641-4229-a898-be26c139ec35"},{"ref":"EID0c061e4a-1fd8-427a-99bf-36e358bb628e"},{"ref":"EIDbea21015-4e4b-4e23-b0f4-9c8783cece45"}]},"parent":{"ref":"EID6a2eedc1-0175-1000-5736-d7ae1fa89a33"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:11:01Z","duration":154,"status":"PASSED"}},"parent":{"ref":"EID6a2ee5ef-0175-1000-d6ab-ae8800c4bd06"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:11:01Z","duration":303,"status":"PASSED"},{"id":"EID6a2eeef1-0175-1000-b5bc-839c11560cab","testStepResults":{"TestStepResult":{"id":"EID6a2eeef1-0175-1000-047b-047da1fbaa25","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eef7e-0175-1000-317e-bf507c9b859e","parent":{"ref":"EID6a2eeef1-0175-1000-047b-047da1fbaa25"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:11:02Z","duration":0,"status":"PASSED"},{"id":"EID6a2eef7e-0175-1000-8564-e53318fe9730","parent":{"ref":"EID6a2eeef1-0175-1000-047b-047da1fbaa25"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:11:02Z","duration":0,"status":"PASSED"},{"id":"EID6a2eef7e-0175-1000-cafa-55a7395b4c98","parent":{"ref":"EID6a2eeef1-0175-1000-047b-047da1fbaa25"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:11:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID83e6e001-036c-458c-b7c4-1b8902257712"},{"ref":"EID122ec6df-a3d3-46e0-aecf-7a119b3c9cac"},{"ref":"EIDb48eb314-eee6-492a-9ec6-b9019f33ddf1"}]},"parent":{"ref":"EID6a2eeef1-0175-1000-b5bc-839c11560cab"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:11:02Z","duration":85,"status":"PASSED"}},"parent":{"ref":"EID6a2ee5ef-0175-1000-d6ab-ae8800c4bd06"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:11:02Z","duration":141,"status":"PASSED"},{"id":"EID6a2eef7e-0175-1000-7e37-a7643be53a0c","testStepResults":{"TestStepResult":{"id":"EID6a2eef7e-0175-1000-f475-54480a70ff50","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ef0e2-0175-1000-0864-f13a254bfbcf","parent":{"ref":"EID6a2eef7e-0175-1000-f475-54480a70ff50"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:11:02Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef0e2-0175-1000-15b4-0932024a1dba","parent":{"ref":"EID6a2eef7e-0175-1000-f475-54480a70ff50"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:11:02Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef0e2-0175-1000-a202-2ac15bf34b8a","parent":{"ref":"EID6a2eef7e-0175-1000-f475-54480a70ff50"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:11:02Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef0e2-0175-1000-a450-09dbdd8e6c54","parent":{"ref":"EID6a2eef7e-0175-1000-f475-54480a70ff50"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:11:02Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef0e2-0175-1000-8d41-d3a785273ac1","parent":{"ref":"EID6a2eef7e-0175-1000-f475-54480a70ff50"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:11:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID12b5b70c-0551-4ef9-a7be-34b2b99229bd"},{"ref":"EID624c6013-5584-4038-863a-e897eb7477a1"},{"ref":"EID8ab4c9cb-4661-4d5c-b1d5-1d66f1e20433"}]},"parent":{"ref":"EID6a2eef7e-0175-1000-7e37-a7643be53a0c"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:11:02Z","duration":222,"status":"PASSED"}},"parent":{"ref":"EID6a2ee5ef-0175-1000-d6ab-ae8800c4bd06"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:11:02Z","duration":363,"status":"PASSED"},{"id":"EID6a2ef0e9-0175-1000-0356-089d773ba7bf","testStepResults":{"TestStepResult":{"id":"EID6a2ef0e9-0175-1000-0805-f143809fed17","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ef1e6-0175-1000-1821-1c4d6f905d90","parent":{"ref":"EID6a2ef0e9-0175-1000-0805-f143809fed17"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:11:02Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef1e6-0175-1000-181c-d8da6acccf49","parent":{"ref":"EID6a2ef0e9-0175-1000-0805-f143809fed17"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:11:02Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef1e6-0175-1000-18b0-5e2d388afe68","parent":{"ref":"EID6a2ef0e9-0175-1000-0805-f143809fed17"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:11:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0ac07922-2058-45ea-bacb-4d897e25bed5"},{"ref":"EID434c9cec-2d94-4b87-b560-fd105f9ab0d6"},{"ref":"EID9db22114-a82c-4d8e-993c-aaf2afe8623d"}]},"parent":{"ref":"EID6a2ef0e9-0175-1000-0356-089d773ba7bf"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:11:02Z","duration":162,"status":"PASSED"}},"parent":{"ref":"EID6a2ee5ef-0175-1000-d6ab-ae8800c4bd06"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:11:02Z","duration":253,"status":"PASSED"},{"id":"EID6a2ef1e6-0175-1000-0a09-da1c8b27c95d","testStepResults":{"TestStepResult":{"id":"EID6a2ef1e6-0175-1000-241e-0203797f7d41","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ef2c0-0175-1000-fe4f-8df4d44ce01a","parent":{"ref":"EID6a2ef1e6-0175-1000-241e-0203797f7d41"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:11:03Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef2c0-0175-1000-76ad-4c88a097100b","parent":{"ref":"EID6a2ef1e6-0175-1000-241e-0203797f7d41"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:11:03Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef2c0-0175-1000-8449-cd81d665f9ba","parent":{"ref":"EID6a2ef1e6-0175-1000-241e-0203797f7d41"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:11:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2378eecc-8bd4-4dc5-ac53-9a1866443e37"},{"ref":"EIDacca2c62-8109-4af2-a1cd-ad40fade9516"},{"ref":"EID2a2dbdab-058d-4137-af14-a84ae6f8c3a2"}]},"parent":{"ref":"EID6a2ef1e6-0175-1000-0a09-da1c8b27c95d"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:11:02Z","duration":119,"status":"PASSED"}},"parent":{"ref":"EID6a2ee5ef-0175-1000-d6ab-ae8800c4bd06"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:11:02Z","duration":218,"status":"PASSED"},{"id":"EID6a2ef2c0-0175-1000-e257-0c06da32e576","testStepResults":{"TestStepResult":{"id":"EID6a2ef2c0-0175-1000-1601-955f5141b9de","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ef41c-0175-1000-e912-773dec63e411","parent":{"ref":"EID6a2ef2c0-0175-1000-1601-955f5141b9de"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:11:03Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef41c-0175-1000-9e45-59299d67a8c1","parent":{"ref":"EID6a2ef2c0-0175-1000-1601-955f5141b9de"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:11:03Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef41c-0175-1000-d192-96885d36c694","parent":{"ref":"EID6a2ef2c0-0175-1000-1601-955f5141b9de"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:11:03Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef41c-0175-1000-1df4-8b4409eb19b0","parent":{"ref":"EID6a2ef2c0-0175-1000-1601-955f5141b9de"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:11:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcebe36bf-0d42-4c98-8421-01fa0786e48b"},{"ref":"EIDcaa2e24a-14b9-47d3-95be-071a8cb89b41"},{"ref":"EIDf2885d95-158f-407e-8676-bf02473f9b64"}]},"parent":{"ref":"EID6a2ef2c0-0175-1000-e257-0c06da32e576"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:11:03Z","duration":262,"status":"PASSED"}},"parent":{"ref":"EID6a2ee5ef-0175-1000-d6ab-ae8800c4bd06"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:11:03Z","duration":348,"status":"PASSED"},{"id":"EID6a2ef424-0175-1000-200e-9b3c26b52979","testStepResults":{"TestStepResult":{"id":"EID6a2ef424-0175-1000-1f15-5cd4e2e184b9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ef523-0175-1000-752d-c95730715dd0","parent":{"ref":"EID6a2ef424-0175-1000-1f15-5cd4e2e184b9"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:11:03Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef523-0175-1000-4837-fa11e17847a2","parent":{"ref":"EID6a2ef424-0175-1000-1f15-5cd4e2e184b9"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:11:03Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef523-0175-1000-4b95-d7580d7c1553","parent":{"ref":"EID6a2ef424-0175-1000-1f15-5cd4e2e184b9"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:11:03Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef523-0175-1000-f11a-c6c245f1021c","parent":{"ref":"EID6a2ef424-0175-1000-1f15-5cd4e2e184b9"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:11:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID75e8e693-ac8f-4384-b849-e012656bfe53"},{"ref":"EID8b012f9d-59f5-4165-88f4-5f53b9288531"},{"ref":"EID7ca94742-bcfa-414f-a76c-2796d782c196"}]},"parent":{"ref":"EID6a2ef424-0175-1000-200e-9b3c26b52979"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:11:03Z","duration":48,"status":"PASSED"}},"parent":{"ref":"EID6a2ee5ef-0175-1000-d6ab-ae8800c4bd06"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:11:03Z","duration":255,"status":"PASSED"},{"id":"EID6a2ef523-0175-1000-db24-e869a4003bb8","testStepResults":{"TestStepResult":[{"id":"EID6a2ef523-0175-1000-b6b7-5efd3c8b0138","parent":{"ref":"EID6a2ef523-0175-1000-db24-e869a4003bb8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:11:03Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef523-0175-1000-6dce-84c78ab29146","parent":{"ref":"EID6a2ef523-0175-1000-db24-e869a4003bb8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:11:03Z","duration":334,"status":"PASSED"},{"id":"EID6a2ef523-0175-1000-6118-603593d36e1a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ef5b6-0175-1000-2fa5-345c0507daab","parent":{"ref":"EID6a2ef523-0175-1000-6118-603593d36e1a"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:11:03Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef5b6-0175-1000-e4d4-3e7c4c3d33eb","parent":{"ref":"EID6a2ef523-0175-1000-6118-603593d36e1a"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:11:03Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef5b6-0175-1000-6010-9fa9a2fdba0c","parent":{"ref":"EID6a2ef523-0175-1000-6118-603593d36e1a"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:11:03Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef5b6-0175-1000-5509-a9fc717cd114","parent":{"ref":"EID6a2ef523-0175-1000-6118-603593d36e1a"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:11:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDaa4010d5-05b7-40a0-bb6c-0ff3929b06bf"},{"ref":"EID754a6583-3c7d-4fcf-aee9-d034ae91c835"},{"ref":"EIDe0dd65d6-6e13-48c3-b714-f2e569a72696"}]},"parent":{"ref":"EID6a2ef523-0175-1000-db24-e869a4003bb8"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:11:03Z","duration":44,"status":"PASSED"},{"id":"EID6a2ef5b6-0175-1000-4fca-5aeb016f855c","attachments":{"attachment":{"ref":"EIDa1559523-fb43-45ef-8b95-5903c2f7759e"}},"parent":{"ref":"EID6a2ef523-0175-1000-db24-e869a4003bb8"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:11:03Z","duration":1,"status":"PASSED"},{"id":"EID6a2ef5c5-0175-1000-6d7e-48c9bd3387a8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ef772-0175-1000-b439-bf7cedb1adf0","parent":{"ref":"EID6a2ef5c5-0175-1000-6d7e-48c9bd3387a8"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:11:04Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef772-0175-1000-2f48-c8e02b38a121","parent":{"ref":"EID6a2ef5c5-0175-1000-6d7e-48c9bd3387a8"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:11:04Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef772-0175-1000-1f69-777907c38d53","parent":{"ref":"EID6a2ef5c5-0175-1000-6d7e-48c9bd3387a8"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:11:04Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef772-0175-1000-597b-8e665186b94e","parent":{"ref":"EID6a2ef5c5-0175-1000-6d7e-48c9bd3387a8"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:11:04Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef772-0175-1000-5257-9fa4c310ab56","parent":{"ref":"EID6a2ef5c5-0175-1000-6d7e-48c9bd3387a8"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:11:04Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef772-0175-1000-52d5-823293be448c","parent":{"ref":"EID6a2ef5c5-0175-1000-6d7e-48c9bd3387a8"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:11:04Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef772-0175-1000-400b-a38c83b7d16c","parent":{"ref":"EID6a2ef5c5-0175-1000-6d7e-48c9bd3387a8"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:11:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDeaf549ac-6507-490c-9590-bbcfdb26bbcb"},{"ref":"EID70d7a6cb-cae4-4d76-b350-0d58849be63e"},{"ref":"EIDaaf067c2-cb0d-4cdf-ba44-41c9a928779c"}]},"parent":{"ref":"EID6a2ef523-0175-1000-db24-e869a4003bb8"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:11:03Z","duration":215,"status":"PASSED"}]},"parent":{"ref":"EID6a2ee5ef-0175-1000-d6ab-ae8800c4bd06"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:11:03Z","duration":591,"status":"PASSED"},{"id":"EID6a2ef772-0175-1000-25d2-c4933b8dc534","testStepResults":{"TestStepResult":[{"id":"EID6a2ef772-0175-1000-f0eb-37eb4edf7f34","parent":{"ref":"EID6a2ef772-0175-1000-25d2-c4933b8dc534"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:11:04Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef772-0175-1000-45cf-4849df636453","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ef948-0175-1000-a97a-174ead049455","parent":{"ref":"EID6a2ef772-0175-1000-45cf-4849df636453"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:11:04Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef948-0175-1000-fe89-99d906d2e1a0","parent":{"ref":"EID6a2ef772-0175-1000-45cf-4849df636453"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:11:04Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef948-0175-1000-4c46-64fa9ea94391","parent":{"ref":"EID6a2ef772-0175-1000-45cf-4849df636453"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:11:04Z","duration":0,"status":"PASSED"},{"id":"EID6a2ef948-0175-1000-3f74-56fe93560eaa","parent":{"ref":"EID6a2ef772-0175-1000-45cf-4849df636453"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:11:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3e4ba31b-a4aa-4017-8419-a764b94d29de"},{"ref":"EID6a845bab-d4c2-4d3e-b32d-8dc7a58963f8"},{"ref":"EID0ac50762-498b-41e9-bdbe-051d23f71b5c"}]},"parent":{"ref":"EID6a2ef772-0175-1000-25d2-c4933b8dc534"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:11:04Z","duration":148,"status":"PASSED"},{"id":"EID6a2ef948-0175-1000-8e7d-da0edb97a314","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a2ef96a-0175-1000-fd6f-847cb51204e3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2efaf5-0175-1000-8250-74ff5aff426a","parent":{"ref":"EID6a2ef96a-0175-1000-fd6f-847cb51204e3"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2efaf5-0175-1000-f45a-ce392d1fb0f8","parent":{"ref":"EID6a2ef96a-0175-1000-fd6f-847cb51204e3"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2efaf5-0175-1000-d4d1-1a7eb90d3b90","parent":{"ref":"EID6a2ef96a-0175-1000-fd6f-847cb51204e3"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:11:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc8934a5a-61e6-4b2d-bd66-fe75a86edf7c"},{"ref":"EID4fccd5e6-1eac-4543-ad35-9344dffdfb6d"},{"ref":"EID1ba1ad69-a226-4c63-9b31-5bf1882b1c21"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:11:04Z","duration":148,"status":"PASSED"},{"id":"EID6a2efaf9-0175-1000-ebc4-bd8105d875fc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2efbac-0175-1000-d8d0-2324508fd310","parent":{"ref":"EID6a2efaf9-0175-1000-ebc4-bd8105d875fc"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2efbac-0175-1000-5d51-c8337d44515e","parent":{"ref":"EID6a2efaf9-0175-1000-ebc4-bd8105d875fc"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2efbac-0175-1000-ff1a-594a85453532","parent":{"ref":"EID6a2efaf9-0175-1000-ebc4-bd8105d875fc"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:11:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9d2aea26-a06d-4cb4-8f48-5e5b16bc3f48"},{"ref":"EIDe0489b28-cc43-4f17-a13b-56a74d64d8fd"},{"ref":"EID033f1b08-67ff-42cd-8792-f2274b020bef"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:11:05Z","duration":42,"status":"PASSED"},{"id":"EID6a2efbae-0175-1000-154d-1910d3d326dd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2efca6-0175-1000-9428-c9811bb5db07","parent":{"ref":"EID6a2efbae-0175-1000-154d-1910d3d326dd"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2efca7-0175-1000-b7f1-134bd2fa6263","parent":{"ref":"EID6a2efbae-0175-1000-154d-1910d3d326dd"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2efca7-0175-1000-5df8-f55d030a3aa2","parent":{"ref":"EID6a2efbae-0175-1000-154d-1910d3d326dd"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:11:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7715752d-669a-4df9-b658-6409c33ce796"},{"ref":"EID0532e87e-0167-4cac-8435-b4670ee0dad6"},{"ref":"EID2698fe10-df43-4a91-bbbd-81dc86bbed6e"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:11:05Z","duration":150,"status":"PASSED"}]},"parent":{"ref":"EID6a2ef772-0175-1000-25d2-c4933b8dc534"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:11:04Z","duration":863,"status":"PASSED"},{"id":"EID6a2efca8-0175-1000-3e29-1a827bbd4950","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2efd3a-0175-1000-4fc6-20e4944c6e0d","parent":{"ref":"EID6a2efca8-0175-1000-3e29-1a827bbd4950"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2efd3a-0175-1000-8737-e02df408a976","parent":{"ref":"EID6a2efca8-0175-1000-3e29-1a827bbd4950"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2efd3a-0175-1000-eab5-02bdf953cb80","parent":{"ref":"EID6a2efca8-0175-1000-3e29-1a827bbd4950"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2efd3a-0175-1000-1eba-251e31b9d5f5","parent":{"ref":"EID6a2efca8-0175-1000-3e29-1a827bbd4950"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:11:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd4f1f490-843d-48f9-9294-cebf8e2d4c43"},{"ref":"EIDed5db14b-3813-4779-950d-7e327267dbbd"},{"ref":"EID32535962-dec2-46cd-8828-0d9c807d228c"}]},"parent":{"ref":"EID6a2ef772-0175-1000-25d2-c4933b8dc534"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:11:05Z","duration":51,"status":"PASSED"}]},"parent":{"ref":"EID6a2ee5ef-0175-1000-d6ab-ae8800c4bd06"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:11:04Z","duration":1480,"status":"PASSED"},{"id":"EID6a2efd3a-0175-1000-39eb-4b9d5eab2e59","testStepResults":{"TestStepResult":{"id":"EID6a2efd3b-0175-1000-6ac1-4838d939b4d3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2efe01-0175-1000-109f-8872b6d8a2c3","parent":{"ref":"EID6a2efd3b-0175-1000-6ac1-4838d939b4d3"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2efe01-0175-1000-ad2b-eeff72ec6ab4","parent":{"ref":"EID6a2efd3b-0175-1000-6ac1-4838d939b4d3"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2efe01-0175-1000-2294-037abb991cba","parent":{"ref":"EID6a2efd3b-0175-1000-6ac1-4838d939b4d3"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:11:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2efe01-0175-1000-b8e6-728571415d8f","parent":{"ref":"EID6a2efd3b-0175-1000-6ac1-4838d939b4d3"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:11:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID547d8232-b2d4-4263-ac67-758870f1910f"},{"ref":"EID0244f1f1-3125-4dcd-ac94-2f318d386f5e"},{"ref":"EID49803ff5-7243-4f0f-9a09-09d1d56f43f0"}]},"parent":{"ref":"EID6a2efd3a-0175-1000-39eb-4b9d5eab2e59"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:11:05Z","duration":97,"status":"PASSED"}},"parent":{"ref":"EID6a2ee5ef-0175-1000-d6ab-ae8800c4bd06"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:11:05Z","duration":200,"status":"PASSED"}]},"parent":{"ref":"EIDc680b975-0bf4-489c-a18e-f9d3015170f2"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:10:59Z","duration":6163,"status":"PASSED"},{"id":"EID6a2efe02-0175-1000-9145-a2e69e0c9bde","testCaseResults":{"TestCaseResult":[{"id":"EID6a2efe02-0175-1000-7c56-98bdabb42ea3","testStepResults":{"TestStepResult":[{"id":"EID6a2efe02-0175-1000-30d7-8dbbcf60388a","parent":{"ref":"EID6a2efe02-0175-1000-7c56-98bdabb42ea3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:11:05Z","duration":803,"status":"PASSED"},{"id":"EID6a2efe03-0175-1000-9ff3-1dfb488edfac","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eff2c-0175-1000-e119-baf8fa636e25","parent":{"ref":"EID6a2efe03-0175-1000-9ff3-1dfb488edfac"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-27T13:11:06Z","duration":0,"status":"PASSED"},{"id":"EID6a2eff2c-0175-1000-490b-d2b3df8c9752","parent":{"ref":"EID6a2efe03-0175-1000-9ff3-1dfb488edfac"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-27T13:11:06Z","duration":0,"status":"PASSED"},{"id":"EID6a2eff2c-0175-1000-3c46-cefecf7736b7","parent":{"ref":"EID6a2efe03-0175-1000-9ff3-1dfb488edfac"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-27T13:11:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe20bed5b-b622-4ebd-b4ab-04cf5485a892"},{"ref":"EID2d1fecd5-ca87-454c-bcac-148c7a07b077"},{"ref":"EID7cdbe891-f560-4289-81e2-14721a7f8315"}]},"parent":{"ref":"EID6a2efe02-0175-1000-7c56-98bdabb42ea3"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-27T13:11:05Z","duration":109,"status":"PASSED"},{"id":"EID6a2eff2d-0175-1000-85cf-5187dd7fb8e2","attachments":{"attachment":{"ref":"EID7aa531b6-c545-437b-b3b4-95abba03ba88"}},"parent":{"ref":"EID6a2efe02-0175-1000-7c56-98bdabb42ea3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-27T13:11:06Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a2efe02-0175-1000-9145-a2e69e0c9bde"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:11:05Z","duration":310,"status":"PASSED"},{"id":"EID6a2eff38-0175-1000-2ff7-eb2bd41acbbf","testStepResults":{"TestStepResult":[{"id":"EID6a2eff38-0175-1000-bce7-91818415433f","parent":{"ref":"EID6a2eff38-0175-1000-2ff7-eb2bd41acbbf"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:11:06Z","duration":802,"status":"PASSED"},{"id":"EID6a2eff38-0175-1000-8b93-53c817432043","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2efff5-0175-1000-f0d6-d89d23faab1a","parent":{"ref":"EID6a2eff38-0175-1000-8b93-53c817432043"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-27T13:11:06Z","duration":0,"status":"PASSED"},{"id":"EID6a2efff5-0175-1000-0465-1023e8e76827","parent":{"ref":"EID6a2eff38-0175-1000-8b93-53c817432043"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-27T13:11:06Z","duration":0,"status":"PASSED"},{"id":"EID6a2efff5-0175-1000-c1d2-d288b24aa460","parent":{"ref":"EID6a2eff38-0175-1000-8b93-53c817432043"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-27T13:11:06Z","duration":0,"status":"PASSED"},{"id":"EID6a2efff5-0175-1000-e0de-e9007efe40c2","parent":{"ref":"EID6a2eff38-0175-1000-8b93-53c817432043"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-27T13:11:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5f25ccf2-6da0-4369-896c-f6c86169d01c"},{"ref":"EID5983bf3b-d806-481f-b9e2-f4bf11fb005b"},{"ref":"EID111993cb-6980-455e-bd82-24da5f3af7dd"}]},"parent":{"ref":"EID6a2eff38-0175-1000-2ff7-eb2bd41acbbf"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-27T13:11:06Z","duration":89,"status":"PASSED"}]},"parent":{"ref":"EID6a2efe02-0175-1000-9145-a2e69e0c9bde"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:11:06Z","duration":189,"status":"PASSED"},{"id":"EID6a2efff5-0175-1000-e073-cfae9f788ef4","testStepResults":{"TestStepResult":[{"id":"EID6a2efff5-0175-1000-4c6f-692ca1cc4eae","parent":{"ref":"EID6a2efff5-0175-1000-e073-cfae9f788ef4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:11:06Z","duration":802,"status":"PASSED"},{"id":"EID6a2efff5-0175-1000-646a-7072d5397a9e","parent":{"ref":"EID6a2efff5-0175-1000-e073-cfae9f788ef4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-27T13:11:06Z","duration":0,"status":"PASSED"},{"id":"EID6a2efff5-0175-1000-0a35-c472f61e64df","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2f00b0-0175-1000-04ce-40b82564f642","parent":{"ref":"EID6a2efff5-0175-1000-0a35-c472f61e64df"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-27T13:11:06Z","duration":0,"status":"PASSED"},{"id":"EID6a2f00b0-0175-1000-c0d2-c8b3831688f6","parent":{"ref":"EID6a2efff5-0175-1000-0a35-c472f61e64df"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-27T13:11:06Z","duration":0,"status":"PASSED"},{"id":"EID6a2f00b0-0175-1000-17bc-07a7dcb71e54","parent":{"ref":"EID6a2efff5-0175-1000-0a35-c472f61e64df"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-27T13:11:06Z","duration":0,"status":"PASSED"},{"id":"EID6a2f00b0-0175-1000-baf5-3d5073d468d7","parent":{"ref":"EID6a2efff5-0175-1000-0a35-c472f61e64df"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-27T13:11:06Z","duration":0,"status":"PASSED"},{"id":"EID6a2f00b0-0175-1000-1d22-cfb3ed009e8b","parent":{"ref":"EID6a2efff5-0175-1000-0a35-c472f61e64df"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-27T13:11:06Z","duration":0,"status":"PASSED"},{"id":"EID6a2f00b0-0175-1000-a942-54cb78b71578","parent":{"ref":"EID6a2efff5-0175-1000-0a35-c472f61e64df"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-27T13:11:06Z","duration":0,"status":"PASSED"},{"id":"EID6a2f00b0-0175-1000-490a-ead981e89ad4","parent":{"ref":"EID6a2efff5-0175-1000-0a35-c472f61e64df"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-27T13:11:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID70221b3b-7a70-4372-99eb-bd14a5d4b00b"},{"ref":"EID7a8b2bce-e39b-4a2a-a4fd-bce741353fca"},{"ref":"EIDac3b90a7-faff-4857-a48f-247e535fb930"}]},"parent":{"ref":"EID6a2efff5-0175-1000-e073-cfae9f788ef4"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-27T13:11:06Z","duration":87,"status":"PASSED"},{"id":"EID6a2f00b0-0175-1000-8921-14ad497f16fc","invokedTests":{"":null,"TestStepResult":{"id":"EID6a2f00d4-0175-1000-1c20-5f6bf3753933","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2f0181-0175-1000-3c35-bdb07924dde7","parent":{"ref":"EID6a2f00d4-0175-1000-1c20-5f6bf3753933"},"resultedFrom":{"ref":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2"},"startTimestamp":"2020-10-27T13:11:06Z","duration":0,"status":"PASSED"},{"id":"EID6a2f0181-0175-1000-b412-17f6b1a0ad26","parent":{"ref":"EID6a2f00d4-0175-1000-1c20-5f6bf3753933"},"resultedFrom":{"ref":"EID4c8b189c-31ec-4098-8f45-6952a58780c6"},"startTimestamp":"2020-10-27T13:11:06Z","duration":0,"status":"PASSED"},{"id":"EID6a2f0181-0175-1000-b1ce-f57bd0ac558b","messages":{"message":{"ref":"TR.unexpectedContentType","translationArguments":{"argument":[{"token":"actual","$":"application/x-zip-compressed"},{"token":"expected","$":"application/x-compressed"}]}}},"parent":{"ref":"EID6a2f00d4-0175-1000-1c20-5f6bf3753933"},"resultedFrom":{"ref":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3"},"startTimestamp":"2020-10-27T13:11:06Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDc6f12957-9533-4b9b-8e89-7cb311fb24a8"},{"ref":"EIDcd9de26b-8803-4c21-8c39-3e5f8ad54bee"},{"ref":"EIDf7d031d6-3dd9-46c9-8b45-b97467795b09"}]},"resultedFrom":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"startTimestamp":"2020-10-27T13:11:06Z","duration":43,"status":"FAILED"}},"attachments":{"attachment":[{"ref":"EID68ddf355-9c2f-410c-a091-2019b69b85bc"},{"ref":"EIDb7acecd2-dbca-468d-b719-6cd6acec669f"}]},"parent":{"ref":"EID6a2efff5-0175-1000-e073-cfae9f788ef4"},"resultedFrom":{"ref":"EIDb0803022-623e-456c-aa2e-bc968ee33150"},"startTimestamp":"2020-10-27T13:11:06Z","duration":215,"status":"FAILED"}]},"parent":{"ref":"EID6a2efe02-0175-1000-9145-a2e69e0c9bde"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:11:06Z","duration":428,"status":"FAILED"},{"id":"EID6a2f01a1-0175-1000-6492-77254d2fb389","testStepResults":{"TestStepResult":[{"id":"EID6a2f01a2-0175-1000-4af9-d7a8ae752dff","parent":{"ref":"EID6a2f01a1-0175-1000-6492-77254d2fb389"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:11:06Z","duration":813,"status":"PASSED"},{"id":"EID6a2f01ae-0175-1000-968f-277a5aa298e2","parent":{"ref":"EID6a2f01a1-0175-1000-6492-77254d2fb389"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-27T13:11:06Z","duration":0,"status":"PASSED"},{"id":"EID6a2f01ae-0175-1000-87e9-4e00c42b5633","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2f0258-0175-1000-5d7d-54906bdde1ab","parent":{"ref":"EID6a2f01ae-0175-1000-87e9-4e00c42b5633"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-27T13:11:07Z","duration":0,"status":"PASSED"},{"id":"EID6a2f0258-0175-1000-8cf8-a02858b2de2b","parent":{"ref":"EID6a2f01ae-0175-1000-87e9-4e00c42b5633"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-27T13:11:07Z","duration":0,"status":"PASSED"},{"id":"EID6a2f0258-0175-1000-a860-9a404fec1937","parent":{"ref":"EID6a2f01ae-0175-1000-87e9-4e00c42b5633"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-27T13:11:07Z","duration":0,"status":"PASSED"},{"id":"EID6a2f0258-0175-1000-1ee2-97a7d37ba876","parent":{"ref":"EID6a2f01ae-0175-1000-87e9-4e00c42b5633"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-27T13:11:07Z","duration":0,"status":"PASSED"},{"id":"EID6a2f0258-0175-1000-7bba-84fe2de23894","parent":{"ref":"EID6a2f01ae-0175-1000-87e9-4e00c42b5633"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-27T13:11:07Z","duration":0,"status":"PASSED"},{"id":"EID6a2f0258-0175-1000-a787-f245efbde9f0","parent":{"ref":"EID6a2f01ae-0175-1000-87e9-4e00c42b5633"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-27T13:11:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID220eebd9-0665-491c-a312-3f6c746c7950"},{"ref":"EIDb737e9ae-d397-44d0-a14b-2e568abb5174"},{"ref":"EID46c89a27-ba1c-4e10-8a9c-3937007a0c7e"}]},"parent":{"ref":"EID6a2f01a1-0175-1000-6492-77254d2fb389"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-27T13:11:06Z","duration":86,"status":"PASSED"},{"id":"EID6a2f0258-0175-1000-9f00-13a58b2dfeff","parent":{"ref":"EID6a2f01a1-0175-1000-6492-77254d2fb389"},"resultedFrom":{"ref":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b"},"startTimestamp":"2020-10-27T13:11:07Z","duration":29,"status":"PASSED"},{"id":"EID6a2f0275-0175-1000-6bb3-43631d90f954","parent":{"ref":"EID6a2f01a1-0175-1000-6492-77254d2fb389"},"resultedFrom":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"startTimestamp":"2020-10-27T13:11:07Z","duration":1,"status":"UNDEFINED"}]},"parent":{"ref":"EID6a2efe02-0175-1000-9145-a2e69e0c9bde"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:11:06Z","duration":213,"status":"UNDEFINED"},{"id":"EID6a2f0276-0175-1000-263f-117be98cdd9a","testStepResults":{"TestStepResult":[{"id":"EID6a2f0276-0175-1000-06ef-07a3e4e70414","parent":{"ref":"EID6a2f0276-0175-1000-263f-117be98cdd9a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:11:07Z","duration":802,"status":"PASSED"},{"id":"EID6a2f0276-0175-1000-4730-8c6e14d96a5b","messages":{"message":{"ref":"TR.unexpectedContentType","translationArguments":{"argument":[{"token":"actual","$":"application/x-zip-compressed"},{"token":"expected","$":"application/x-compressed"}]}}},"attachments":{"attachment":[{"ref":"EID14b59c1b-5bce-40ad-ad86-b69aa02f62f4"},{"ref":"EID7a50c18b-048e-4f89-9901-a9086da16b86"},{"ref":"EID6f040c95-f2ad-4d5e-8960-aeeb7567de1d"},{"ref":"EID1b453c92-0760-4091-881e-a7e9dcc4f317"},{"ref":"EID23f66800-7bec-4bd2-b662-2413fee78514"},{"ref":"EIDa0020c0c-b83a-466a-b3f1-2d38264474d5"},{"ref":"EID841ca00f-d34e-4d8e-a888-d1150581fcb1"},{"ref":"EID16bc670b-292c-483a-bc58-39612ef1bef1"},{"ref":"EID789ee66d-a7be-4e9b-aaaf-9ca619077b59"},{"ref":"EIDa3bbc8fa-80e5-46d3-b011-5c7f9f3f2899"},{"ref":"EIDdd3cf1f3-fa10-4402-bdfb-0a5b0164b258"},{"ref":"EID17d52b4b-470c-4ebf-ab85-c25930929647"},{"ref":"EID0fae8415-a0c0-496f-8215-2c42709bab73"},{"ref":"EID39178d78-cb11-4b5e-a8a0-e97d301364f6"},{"ref":"EIDb8daea36-457f-47fc-a468-7a6a983e1373"},{"ref":"EID37c365a5-502a-4170-a9a9-2dc132c71cef"},{"ref":"EID9599af4a-2ee4-4b21-a088-5ba9d97351f0"},{"ref":"EID2a0bc509-49b0-4098-817e-a8bddd6b4c95"},{"ref":"EID6500960a-67b1-4ff0-900c-43b021177f83"}]},"parent":{"ref":"EID6a2f0276-0175-1000-263f-117be98cdd9a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-27T13:11:07Z","duration":1010,"status":"SKIPPED"}]},"parent":{"ref":"EID6a2efe02-0175-1000-9145-a2e69e0c9bde"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:11:07Z","duration":1359,"status":"SKIPPED"},{"id":"EID6a2f07c5-0175-1000-b236-ced480cebc6c","testStepResults":{"TestStepResult":[{"id":"EID6a2f07c5-0175-1000-4905-eb9ab9488e48","parent":{"ref":"EID6a2f07c5-0175-1000-b236-ced480cebc6c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:11:08Z","duration":802,"status":"PASSED"},{"id":"EID6a2f07c5-0175-1000-e376-a009c5d954b4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2f0864-0175-1000-c712-6a182e8ee2e0","parent":{"ref":"EID6a2f07c5-0175-1000-e376-a009c5d954b4"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-27T13:11:08Z","duration":0,"status":"PASSED"},{"id":"EID6a2f0864-0175-1000-1d59-fc0685945bf5","parent":{"ref":"EID6a2f07c5-0175-1000-e376-a009c5d954b4"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-27T13:11:08Z","duration":0,"status":"PASSED"},{"id":"EID6a2f0864-0175-1000-384a-f9efcef9f2dc","parent":{"ref":"EID6a2f07c5-0175-1000-e376-a009c5d954b4"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-27T13:11:08Z","duration":0,"status":"PASSED"},{"id":"EID6a2f0864-0175-1000-731e-21e117ec4fbf","parent":{"ref":"EID6a2f07c5-0175-1000-e376-a009c5d954b4"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-27T13:11:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdd7d40ea-15eb-4437-83bb-cf179197d7c9"},{"ref":"EIDc9e7c4be-e7df-4fc1-8274-3563f902d4fe"},{"ref":"EID1fa74f25-d007-499a-a640-45f43c01f62e"}]},"parent":{"ref":"EID6a2f07c5-0175-1000-b236-ced480cebc6c"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-27T13:11:08Z","duration":89,"status":"PASSED"}]},"parent":{"ref":"EID6a2efe02-0175-1000-9145-a2e69e0c9bde"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:11:08Z","duration":159,"status":"PASSED"},{"id":"EID6a2f0865-0175-1000-44b2-d36cea105217","testStepResults":{"TestStepResult":[{"id":"EID6a2f0865-0175-1000-5931-79e3ab45f739","parent":{"ref":"EID6a2f0865-0175-1000-44b2-d36cea105217"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:11:08Z","duration":802,"status":"PASSED"},{"id":"EID6a2f0865-0175-1000-f66b-3494d406c0c9","parent":{"ref":"EID6a2f0865-0175-1000-44b2-d36cea105217"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-27T13:11:08Z","duration":0,"status":"PASSED"},{"id":"EID6a2f0865-0175-1000-03a4-4ab6f269db79","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2f0902-0175-1000-1a81-14f69d87cdfb","parent":{"ref":"EID6a2f0865-0175-1000-03a4-4ab6f269db79"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-27T13:11:08Z","duration":0,"status":"PASSED"},{"id":"EID6a2f0902-0175-1000-5d0d-1cbdcd3e7116","parent":{"ref":"EID6a2f0865-0175-1000-03a4-4ab6f269db79"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-27T13:11:08Z","duration":0,"status":"PASSED"},{"id":"EID6a2f0902-0175-1000-05fb-d1a7352ead36","parent":{"ref":"EID6a2f0865-0175-1000-03a4-4ab6f269db79"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-27T13:11:08Z","duration":0,"status":"PASSED"},{"id":"EID6a2f0902-0175-1000-bdc5-6fbe8402c6fa","parent":{"ref":"EID6a2f0865-0175-1000-03a4-4ab6f269db79"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-27T13:11:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9aba6465-dc69-40a9-b612-4f64c5e2bc66"},{"ref":"EID6e3a5f21-421b-497f-8848-9cd41dddf8da"},{"ref":"EID2159ba14-32d3-4cb9-a7a4-e4938afcc7bb"}]},"parent":{"ref":"EID6a2f0865-0175-1000-44b2-d36cea105217"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-27T13:11:08Z","duration":86,"status":"PASSED"},{"id":"EID6a2f0902-0175-1000-8a5c-15859ced337e","attachments":{"attachment":{"ref":"EID7421d753-78f1-40af-bd73-e8ebce98c01e"}},"parent":{"ref":"EID6a2f0865-0175-1000-44b2-d36cea105217"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-27T13:11:08Z","duration":1,"status":"PASSED"},{"id":"EID6a2f090f-0175-1000-1289-a6c71584ce7c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2f0913-0175-1000-d1ea-81c634a02f7e","parent":{"ref":"EID6a2f090f-0175-1000-1289-a6c71584ce7c"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-27T13:11:08Z","duration":0,"status":"PASSED"},{"id":"EID6a2f0914-0175-1000-4cd1-4e4e3ceb90ad","parent":{"ref":"EID6a2f090f-0175-1000-1289-a6c71584ce7c"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-27T13:11:08Z","duration":0,"status":"PASSED"},{"id":"EID6a2f0914-0175-1000-8429-daac0f949104","parent":{"ref":"EID6a2f090f-0175-1000-1289-a6c71584ce7c"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-27T13:11:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID117b5f70-339f-4382-b572-f40c244cbcc9"},{"ref":"EID497c0107-42fd-4778-944b-a54daafea540"}]},"parent":{"ref":"EID6a2f0865-0175-1000-44b2-d36cea105217"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-27T13:11:08Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a2efe02-0175-1000-9145-a2e69e0c9bde"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:11:08Z","duration":175,"status":"PASSED"}]},"parent":{"ref":"EIDc680b975-0bf4-489c-a18e-f9d3015170f2"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:11:05Z","duration":2834,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"Message","id":"EID6508e847-2fae-40db-a81d-2b30f11d236d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID6508e847-2fae-40db-a81d-2b30f11d236d"}},{"type":"ServiceResponse","id":"EIDf3376faf-511d-4b97-9b77-9b9f165388b2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDf3376faf-511d-4b97-9b77-9b9f165388b2"}},{"type":"GetParameter","id":"EIDcf9f3aaa-73e4-4c25-ac10-62e0686dce27","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID3bddfcb3-ebfd-43c6-9b8f-3e2ddb0ab75b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID3bddfcb3-ebfd-43c6-9b8f-3e2ddb0ab75b"}},{"type":"Message","id":"EIDa8441b45-0bbe-467b-b8b7-1e8a48de9690","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDa8441b45-0bbe-467b-b8b7-1e8a48de9690"}},{"type":"ServiceEndpoint","id":"EID32d7d4db-ce67-4c51-98f1-363168aefc8c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID2efd1bf8-6063-48da-a900-2aa305c8bb0a","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID2efd1bf8-6063-48da-a900-2aa305c8bb0a"}},{"type":"GetParameter","id":"EID93bf7968-804d-491d-ba07-3c9c71b9c349","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDa1559523-fb43-45ef-8b95-5903c2f7759e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDa1559523-fb43-45ef-8b95-5903c2f7759e"}},{"type":"ServiceEndpoint","id":"EID9d2152a8-7843-47df-bb2e-a714995f5ddc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID6f040c95-f2ad-4d5e-8960-aeeb7567de1d","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID6f040c95-f2ad-4d5e-8960-aeeb7567de1d"}},{"type":"GetParameter","id":"EIDb48eb314-eee6-492a-9ec6-b9019f33ddf1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceResponse","id":"EIDb86f0b58-6c83-434f-bf76-cee1ee47dce2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDb86f0b58-6c83-434f-bf76-cee1ee47dce2"}},{"type":"ServiceEndpoint","id":"EID220eebd9-0665-491c-a312-3f6c746c7950","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID24a8d203-7d9f-42d3-94a0-5f19a2043053","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID24a8d203-7d9f-42d3-94a0-5f19a2043053"}},{"type":"ServiceEndpoint","id":"EID0ac07922-2058-45ea-bacb-4d897e25bed5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"Message","id":"EID9599af4a-2ee4-4b21-a088-5ba9d97351f0","label":"Message.18","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID9599af4a-2ee4-4b21-a088-5ba9d97351f0"}},{"type":"GetParameter","id":"EID9db22114-a82c-4d8e-993c-aaf2afe8623d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EID1ba1ad69-a226-4c63-9b31-5bf1882b1c21","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EID37c365a5-502a-4170-a9a9-2dc132c71cef","label":"Message.16","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID37c365a5-502a-4170-a9a9-2dc132c71cef"}},{"type":"Message","id":"EID7a50c18b-048e-4f89-9901-a9086da16b86","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID7a50c18b-048e-4f89-9901-a9086da16b86"}},{"type":"Message","id":"EID5549e52c-23e6-440c-b103-aaedd9fbd2c7","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID5549e52c-23e6-440c-b103-aaedd9fbd2c7"}},{"type":"GetParameter","id":"EIDe531fa99-a2a5-4131-9df8-89101877d9e9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID3026066d-a13d-4ed6-8bcb-8b0737f48a56","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID3026066d-a13d-4ed6-8bcb-8b0737f48a56"}},{"type":"ServiceEndpoint","id":"EID38cd73d2-1894-4c55-98f5-00ce85b38a35","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID5afcb95f-590c-44b1-89d3-769943de70b4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID15c173bb-1f34-4547-bda8-6c41dd7a1ff3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID15c173bb-1f34-4547-bda8-6c41dd7a1ff3"}},{"type":"GetParameter","id":"EID98684a02-3362-4692-b0a4-0c0fcc82d633","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID2698fe10-df43-4a91-bbbd-81dc86bbed6e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EID0919590b-6370-441d-b89c-5c366ba1adda","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID0919590b-6370-441d-b89c-5c366ba1adda"}},{"type":"Message","id":"EID789ee66d-a7be-4e9b-aaaf-9ca619077b59","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID789ee66d-a7be-4e9b-aaaf-9ca619077b59"}},{"type":"Message","id":"EIDc2ce19f3-4360-4d69-97b5-e0cbf0a07114","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDc2ce19f3-4360-4d69-97b5-e0cbf0a07114"}},{"type":"Message","id":"EID742bc9d3-6a76-42b2-bea1-3bcc8cbcab44","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID742bc9d3-6a76-42b2-bea1-3bcc8cbcab44"}},{"type":"ServiceEndpoint","id":"EID2378eecc-8bd4-4dc5-ac53-9a1866443e37","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"Message","id":"EID09d89e13-0147-4c68-9713-6398b8d9b1b1","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID09d89e13-0147-4c68-9713-6398b8d9b1b1"}},{"type":"ServiceEndpoint","id":"EIDdda5ffc5-c6dd-458a-82d0-2c78c3dcf909","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID0532e87e-0167-4cac-8435-b4670ee0dad6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID0532e87e-0167-4cac-8435-b4670ee0dad6"}},{"type":"GetParameter","id":"EIDc2a61867-71ff-45a1-aad7-e5735a5567ef","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"Message","id":"EIDedf1b680-ddd5-4999-915c-dd478dde0a86","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDedf1b680-ddd5-4999-915c-dd478dde0a86"}},{"type":"GetParameter","id":"EIDf2885d95-158f-407e-8676-bf02473f9b64","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceResponse","id":"EID1c5c1134-4281-46ad-8d32-c45dce575f80","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID1c5c1134-4281-46ad-8d32-c45dce575f80"}},{"type":"ServiceEndpoint","id":"EID3e4ba31b-a4aa-4017-8419-a764b94d29de","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EIDc9e7c4be-e7df-4fc1-8274-3563f902d4fe","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDc9e7c4be-e7df-4fc1-8274-3563f902d4fe"}},{"type":"ServiceEndpoint","id":"EID8a469cb8-02ba-4f8f-8fe9-5fa05d516d04","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDc10d3bcb-503d-47bb-9946-e7b5840394b7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDe0489b28-cc43-4f17-a13b-56a74d64d8fd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDe0489b28-cc43-4f17-a13b-56a74d64d8fd"}},{"type":"Message","id":"EID23f66800-7bec-4bd2-b662-2413fee78514","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID23f66800-7bec-4bd2-b662-2413fee78514"}},{"type":"Message","id":"EID49bce9b6-b67f-4c67-a8cc-f52fb7242ee8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID49bce9b6-b67f-4c67-a8cc-f52fb7242ee8"}},{"type":"GetParameter","id":"EID24f1d6e9-1f45-4946-821f-e1d949b4f99a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceResponse","id":"EIDcd9de26b-8803-4c21-8c39-3e5f8ad54bee","label":"Service Response","encoding":"UTF-8","mimeType":"application/zip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDcd9de26b-8803-4c21-8c39-3e5f8ad54bee"}},{"type":"Message","id":"EID841ca00f-d34e-4d8e-a888-d1150581fcb1","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID841ca00f-d34e-4d8e-a888-d1150581fcb1"}},{"type":"ServiceResponse","id":"EID434c9cec-2d94-4b87-b560-fd105f9ab0d6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID434c9cec-2d94-4b87-b560-fd105f9ab0d6"}},{"type":"ServiceResponse","id":"EID745945ee-1998-4b10-90b2-b38de1efa837","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID745945ee-1998-4b10-90b2-b38de1efa837"}},{"type":"Message","id":"EID356495ca-2bf8-45c9-b6b0-2cf85df57a8a","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID356495ca-2bf8-45c9-b6b0-2cf85df57a8a"}},{"type":"GetParameter","id":"EID13f476a7-0c56-4109-8401-dc113c55a751","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDa6c162b8-47a0-4db9-9736-995679b5e4f6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID452a14aa-89ef-44b4-b3c7-b0acac5ea8fb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID452a14aa-89ef-44b4-b3c7-b0acac5ea8fb"}},{"type":"GetParameter","id":"EID7553ad4b-d3db-4bca-b0d4-37e98f69aeca","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceEndpoint","id":"EID84346b5a-76e6-4ed4-b944-85984c5314c7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID83e6e001-036c-458c-b7c4-1b8902257712","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceResponse","id":"EIDfafec43d-9de3-47f2-b073-0bb17e646e2d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDfafec43d-9de3-47f2-b073-0bb17e646e2d"}},{"type":"ServiceResponse","id":"EID4fccd5e6-1eac-4543-ad35-9344dffdfb6d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID4fccd5e6-1eac-4543-ad35-9344dffdfb6d"}},{"type":"ServiceResponse","id":"EID37f53372-8ddc-4504-b0df-0dc0913271f8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID37f53372-8ddc-4504-b0df-0dc0913271f8"}},{"type":"ServiceEndpoint","id":"EIDd4f1f490-843d-48f9-9294-cebf8e2d4c43","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"Message","id":"EID7aa531b6-c545-437b-b3b4-95abba03ba88","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID7aa531b6-c545-437b-b3b4-95abba03ba88"}},{"type":"GetParameter","id":"EIDb7006a9a-a9d7-4985-9e04-06af20dcfbff","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID122ec6df-a3d3-46e0-aecf-7a119b3c9cac","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID122ec6df-a3d3-46e0-aecf-7a119b3c9cac"}},{"type":"ServiceResponse","id":"EID0c061e4a-1fd8-427a-99bf-36e358bb628e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID0c061e4a-1fd8-427a-99bf-36e358bb628e"}},{"type":"ServiceResponse","id":"EIDf53e342d-5e7b-4ecc-802d-b396d6ee9066","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDf53e342d-5e7b-4ecc-802d-b396d6ee9066"}},{"type":"ServiceResponse","id":"EID5983bf3b-d806-481f-b9e2-f4bf11fb005b","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID5983bf3b-d806-481f-b9e2-f4bf11fb005b"}},{"type":"ServiceResponse","id":"EID754a6583-3c7d-4fcf-aee9-d034ae91c835","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID754a6583-3c7d-4fcf-aee9-d034ae91c835"}},{"type":"ServiceEndpoint","id":"EIDeaf549ac-6507-490c-9590-bbcfdb26bbcb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EID033f1b08-67ff-42cd-8792-f2274b020bef","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EIDc6f12957-9533-4b9b-8e89-7cb311fb24a8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kb3dubG9hZA=="},{"type":"ServiceEndpoint","id":"EID547d8232-b2d4-4263-ac67-758870f1910f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"LogFile","id":"EID77655cd2-d6f8-4546-91b0-ada414cae711","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID77655cd2-d6f8-4546-91b0-ada414cae711"}},{"type":"Message","id":"EIDa0020c0c-b83a-466a-b3f1-2d38264474d5","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDa0020c0c-b83a-466a-b3f1-2d38264474d5"}},{"type":"ServiceResponse","id":"EID6e3a5f21-421b-497f-8848-9cd41dddf8da","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID6e3a5f21-421b-497f-8848-9cd41dddf8da"}},{"type":"GetParameter","id":"EID3181dc43-246a-4574-a8d3-bcb70f8c3b9b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID29c58666-f359-4106-8dae-56dc0ed32c5b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID46c89a27-ba1c-4e10-8a9c-3937007a0c7e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDcc58bc23-a056-4b98-b100-1efbc39f25e4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDcc58bc23-a056-4b98-b100-1efbc39f25e4"}},{"type":"ServiceResponse","id":"EID6a845bab-d4c2-4d3e-b32d-8dc7a58963f8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID6a845bab-d4c2-4d3e-b32d-8dc7a58963f8"}},{"type":"ServiceEndpoint","id":"EID9d2aea26-a06d-4cb4-8f48-5e5b16bc3f48","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EIDcebe36bf-0d42-4c98-8421-01fa0786e48b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EID79c8a820-2ba9-43c8-aa74-a688d18bbda8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID12b5b70c-0551-4ef9-a7be-34b2b99229bd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceEndpoint","id":"EID1510b927-1cf6-403a-bdf7-f49da842085d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDbb249d11-8c90-45e0-bb32-5d8da5990f7c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID6500960a-67b1-4ff0-900c-43b021177f83","label":"Message.20","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID6500960a-67b1-4ff0-900c-43b021177f83"}},{"type":"ServiceResponse","id":"EID70d7a6cb-cae4-4d76-b350-0d58849be63e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID70d7a6cb-cae4-4d76-b350-0d58849be63e"}},{"type":"Message","id":"EID695dca5e-0422-4f86-8ad8-3cf16be2800c","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID695dca5e-0422-4f86-8ad8-3cf16be2800c"}},{"type":"GetParameter","id":"EID2a2dbdab-058d-4137-af14-a84ae6f8c3a2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceResponse","id":"EIDea2700c2-c3a6-4f26-8a70-06aa9459a65b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDea2700c2-c3a6-4f26-8a70-06aa9459a65b"}},{"type":"ServiceEndpoint","id":"EID92991149-42ee-4019-bd93-505202f5fac9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceResponse","id":"EID2d1fecd5-ca87-454c-bcac-148c7a07b077","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID2d1fecd5-ca87-454c-bcac-148c7a07b077"}},{"type":"Message","id":"EIDa679af62-2475-402b-b061-08ae1c6b729b","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDa679af62-2475-402b-b061-08ae1c6b729b"}},{"type":"Message","id":"EID14b59c1b-5bce-40ad-ad86-b69aa02f62f4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID14b59c1b-5bce-40ad-ad86-b69aa02f62f4"}},{"type":"Message","id":"EID17d52b4b-470c-4ebf-ab85-c25930929647","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID17d52b4b-470c-4ebf-ab85-c25930929647"}},{"type":"GetParameter","id":"EIDaaf067c2-cb0d-4cdf-ba44-41c9a928779c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceResponse","id":"EID80b2b8f3-0cba-44ba-ab78-1fca027256e2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID80b2b8f3-0cba-44ba-ab78-1fca027256e2"}},{"type":"Message","id":"EIDa287746e-9b52-4423-b901-b1d6763c5e90","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDa287746e-9b52-4423-b901-b1d6763c5e90"}},{"type":"Message","id":"EIDba324ea0-b772-4ed2-af76-504d27b0141f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDba324ea0-b772-4ed2-af76-504d27b0141f"}},{"type":"Message","id":"EID56bba5d8-9a8e-43fd-990f-61ef8f70ba5f","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID56bba5d8-9a8e-43fd-990f-61ef8f70ba5f"}},{"type":"ServiceResponse","id":"EID80e90f67-0268-48ae-98c9-1ffb48f98866","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID80e90f67-0268-48ae-98c9-1ffb48f98866"}},{"type":"Message","id":"EID5bd1e1b1-da37-4f93-be7c-2d4f73992ddb","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID5bd1e1b1-da37-4f93-be7c-2d4f73992ddb"}},{"type":"Message","id":"EIDb8daea36-457f-47fc-a468-7a6a983e1373","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDb8daea36-457f-47fc-a468-7a6a983e1373"}},{"type":"GetParameter","id":"EID2159ba14-32d3-4cb9-a7a4-e4938afcc7bb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID9aba6465-dc69-40a9-b612-4f64c5e2bc66","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID0ac50762-498b-41e9-bdbe-051d23f71b5c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EIDcaa2e24a-14b9-47d3-95be-071a8cb89b41","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDcaa2e24a-14b9-47d3-95be-071a8cb89b41"}},{"type":"Message","id":"EID1b453c92-0760-4091-881e-a7e9dcc4f317","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID1b453c92-0760-4091-881e-a7e9dcc4f317"}},{"type":"GetParameter","id":"EIDac3b90a7-faff-4857-a48f-247e535fb930","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDdc347148-b9c0-4d48-b300-488054bc92f5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDdc347148-b9c0-4d48-b300-488054bc92f5"}},{"type":"Message","id":"EIDb47a8e60-8b2b-454f-91f0-29d4e59f0f7a","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDb47a8e60-8b2b-454f-91f0-29d4e59f0f7a"}},{"type":"ServiceEndpoint","id":"EIDb8254cc1-ea1f-4157-8a0e-7ab3d10aab46","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceResponse","id":"EID624c6013-5584-4038-863a-e897eb7477a1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID624c6013-5584-4038-863a-e897eb7477a1"}},{"type":"ServiceResponse","id":"EID1d4ec749-5e58-486c-935c-7709b7b9797a","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID1d4ec749-5e58-486c-935c-7709b7b9797a"}},{"type":"ServiceEndpoint","id":"EIDc11f6c53-6fa7-42b6-8f7f-1bfd7afa2a7a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDa9e8c563-9243-45ae-b739-ea1f41dc9f04","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDd00bd3fc-34d1-4df3-a629-c5b886fd0a34","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDd00bd3fc-34d1-4df3-a629-c5b886fd0a34"}},{"type":"GetParameter","id":"EIDbea21015-4e4b-4e23-b0f4-9c8783cece45","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EID97d7e32c-693f-4425-b03f-f79126400f8c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDaa4010d5-05b7-40a0-bb6c-0ff3929b06bf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID68ddf355-9c2f-410c-a091-2019b69b85bc","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID68ddf355-9c2f-410c-a091-2019b69b85bc"}},{"type":"Message","id":"EID27487dd1-3303-44cc-97c6-87cc8ac607ea","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID27487dd1-3303-44cc-97c6-87cc8ac607ea"}},{"type":"GetParameter","id":"EID4f657305-57e3-4de3-a27c-70711e673571","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID574a7fe7-f2f9-4949-806d-ebaa2b625976","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDf8a98978-58a2-4efa-b0f1-507f8e416913","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDf8a98978-58a2-4efa-b0f1-507f8e416913"}},{"type":"GetParameter","id":"EID8ab4c9cb-4661-4d5c-b1d5-1d66f1e20433","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EID7cdbe891-f560-4289-81e2-14721a7f8315","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDdd7d40ea-15eb-4437-83bb-cf179197d7c9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID02263cbc-0ba0-46ed-a825-342171013100","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID02263cbc-0ba0-46ed-a825-342171013100"}},{"type":"ServiceEndpoint","id":"EID7715752d-669a-4df9-b658-6409c33ce796","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EIDe20bed5b-b622-4ebd-b4ab-04cf5485a892","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID7028b56b-1491-477c-8473-6baf74d816f0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID6debb2fa-ccb8-43d4-9239-9d488f024065","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID6debb2fa-ccb8-43d4-9239-9d488f024065"}},{"type":"ServiceEndpoint","id":"EIDc8934a5a-61e6-4b2d-bd66-fe75a86edf7c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EID5f396b0e-8b2b-41ef-8e33-63e1961f4518","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID5f396b0e-8b2b-41ef-8e33-63e1961f4518"}},{"type":"ServiceEndpoint","id":"EID75e8e693-ac8f-4384-b849-e012656bfe53","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceResponse","id":"EIDc701773e-3768-4c0a-bfdc-4725acdbc3e2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDc701773e-3768-4c0a-bfdc-4725acdbc3e2"}},{"type":"Message","id":"EID0fae8415-a0c0-496f-8215-2c42709bab73","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID0fae8415-a0c0-496f-8215-2c42709bab73"}},{"type":"ServiceResponse","id":"EIDacca2c62-8109-4af2-a1cd-ad40fade9516","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDacca2c62-8109-4af2-a1cd-ad40fade9516"}},{"type":"GetParameter","id":"EID04fbe01b-323c-4fc7-b8e9-71f92bb626e5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDed5db14b-3813-4779-950d-7e327267dbbd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDed5db14b-3813-4779-950d-7e327267dbbd"}},{"type":"ServiceResponse","id":"EIDb737e9ae-d397-44d0-a14b-2e568abb5174","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDb737e9ae-d397-44d0-a14b-2e568abb5174"}},{"type":"Message","id":"EIDdfa2046c-6297-4058-98e6-99f03a20b73a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDdfa2046c-6297-4058-98e6-99f03a20b73a"}},{"type":"ServiceResponse","id":"EID9fecdb6d-8b60-4f13-a2ef-4c077f9d6763","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID9fecdb6d-8b60-4f13-a2ef-4c077f9d6763"}},{"type":"GetParameter","id":"EIDe0dd65d6-6e13-48c3-b714-f2e569a72696","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID49803ff5-7243-4f0f-9a09-09d1d56f43f0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceResponse","id":"EID96f6360f-72e9-4561-b22b-134d4f4d7b75","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID96f6360f-72e9-4561-b22b-134d4f4d7b75"}},{"type":"ServiceEndpoint","id":"EID9f2030c1-a8cc-4c1d-84e8-f07aa752e65a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID12d4798e-5ea2-45e5-8efd-fd6de09b05c1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID911a0c5c-c171-4b1d-855b-c79ca63fa561","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID2a0bc509-49b0-4098-817e-a8bddd6b4c95","label":"Message.19","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID2a0bc509-49b0-4098-817e-a8bddd6b4c95"}},{"type":"ServiceResponse","id":"EID2fe07f1d-b7ec-4ffd-98d2-f0b9cb5774d4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID2fe07f1d-b7ec-4ffd-98d2-f0b9cb5774d4"}},{"type":"GetParameter","id":"EIDcbb43810-e7b7-4a88-b4ab-a0bc30519736","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID64c2406f-46d7-4524-a6dc-619f6207aee1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"Message","id":"EID39178d78-cb11-4b5e-a8a0-e97d301364f6","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID39178d78-cb11-4b5e-a8a0-e97d301364f6"}},{"type":"GetParameter","id":"EID03d2e12d-b8aa-429a-844c-bc81867b2a35","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19vcHBlcnZsYWt0ZXdhdGVybGljaGFtZW5fbmxkX2V1MjAxNV92X2dwa2cuemlw"},{"type":"ServiceEndpoint","id":"EID714e787e-1876-4370-9a0b-f8b62a8d8f5e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"Message","id":"EIDdcd2e992-b2b1-4d46-85eb-160d31322c86","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDdcd2e992-b2b1-4d46-85eb-160d31322c86"}},{"type":"ServiceResponse","id":"EID0244f1f1-3125-4dcd-ac94-2f318d386f5e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID0244f1f1-3125-4dcd-ac94-2f318d386f5e"}},{"type":"ServiceResponse","id":"EID72308920-9c17-4867-b4e3-64cfde3f3eab","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID72308920-9c17-4867-b4e3-64cfde3f3eab"}},{"type":"Message","id":"EIDc971c8ff-4a8a-429d-bdb0-e5b2a1a2c5b4","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDc971c8ff-4a8a-429d-bdb0-e5b2a1a2c5b4"}},{"type":"Message","id":"EIDa3bbc8fa-80e5-46d3-b011-5c7f9f3f2899","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDa3bbc8fa-80e5-46d3-b011-5c7f9f3f2899"}},{"type":"ServiceResponse","id":"EIDe04223e4-2be7-4fb6-9ac9-6d52f03a8809","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDe04223e4-2be7-4fb6-9ac9-6d52f03a8809"}},{"type":"Message","id":"EID16bc670b-292c-483a-bc58-39612ef1bef1","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID16bc670b-292c-483a-bc58-39612ef1bef1"}},{"type":"ServiceEndpoint","id":"EID05594c6f-7b20-4b9e-b57c-4c549f3bbc89","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID1a6b2f3b-4641-4229-a898-be26c139ec35","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EID3ca3311b-b20a-4dc9-9012-7afb0be4350e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDfb47e6c0-9842-4707-8338-f27a66cfdda0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID117b5f70-339f-4382-b572-f40c244cbcc9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"Message","id":"EIDdbcdb387-d962-4d1c-9650-a6dd452ce2ae","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDdbcdb387-d962-4d1c-9650-a6dd452ce2ae"}},{"type":"Message","id":"EID2c6c2a4c-f477-4baf-b2ba-e99202efb4ea","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID2c6c2a4c-f477-4baf-b2ba-e99202efb4ea"}},{"type":"Message","id":"EIDa7c66b43-72ef-4b44-895a-75d909264d04","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDa7c66b43-72ef-4b44-895a-75d909264d04"}},{"type":"ServiceResponse","id":"EIDe2c4c4da-fdfb-4797-9dc9-9478c811fbd8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDe2c4c4da-fdfb-4797-9dc9-9478c811fbd8"}},{"type":"Message","id":"EID51d03a83-fd1e-456e-ba3e-ed693aaae31c","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID51d03a83-fd1e-456e-ba3e-ed693aaae31c"}},{"type":"Message","id":"EIDc6318fe4-c887-4ddf-941e-1478ca7ac3f6","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDc6318fe4-c887-4ddf-941e-1478ca7ac3f6"}},{"type":"Message","id":"EID4150dad7-5773-44de-b98f-c875897dc77a","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID4150dad7-5773-44de-b98f-c875897dc77a"}},{"type":"GetParameter","id":"EID384e5e96-1782-4da2-9e4d-fa5aa1cefa25","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID44a3f73c-0bf9-4243-90c1-a4861b4ffbaf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID70221b3b-7a70-4372-99eb-bd14a5d4b00b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID02d6a208-1fcf-4cbf-9799-aef90a1ab150","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDcfc586eb-c3d7-41ac-ba3d-7912b272f6bf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EID497c0107-42fd-4778-944b-a54daafea540","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceEndpoint","id":"EID3c5e66d4-88a5-4f77-bcda-458617b5f904","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID7c2c9183-e42f-4d63-95e1-e8dc1c3f4147","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"ServiceEndpoint","id":"EID5f25ccf2-6da0-4369-896c-f6c86169d01c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID8bb46a76-6138-4432-92b3-4a08874d4880","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID32535962-dec2-46cd-8828-0d9c807d228c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EID3e8d0e6b-6e5b-458d-b955-b3016c4c3380","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDf7d031d6-3dd9-46c9-8b45-b97467795b09","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19vcHBlcnZsYWt0ZXdhdGVybGljaGFtZW5fbmxkX2V1MjAxNV9sX2dwa2cuemlw"},{"type":"ServiceEndpoint","id":"EID8692e7c0-eb45-4802-b72e-1f31766836fe","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19vcHBlcnZsYWt0ZXdhdGVybGljaGFtZW5fbmxkX2V1MjAxNV92X2dwa2cuemlw"},{"type":"Message","id":"EID475ff6bb-3e6c-43f6-add5-1c38174696f8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID475ff6bb-3e6c-43f6-add5-1c38174696f8"}},{"type":"Message","id":"EID7421d753-78f1-40af-bd73-e8ebce98c01e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID7421d753-78f1-40af-bd73-e8ebce98c01e"}},{"type":"GetParameter","id":"EID1fa74f25-d007-499a-a640-45f43c01f62e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID7a8b2bce-e39b-4a2a-a4fd-bce741353fca","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID7a8b2bce-e39b-4a2a-a4fd-bce741353fca"}},{"type":"GetParameter","id":"EID111993cb-6980-455e-bd82-24da5f3af7dd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kZGYzM2JmZi04ZGUzLTRjY2EtYjZmNS0yNGQxOGRhYTUwMmYvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID61032ea8-1ac8-4476-85fc-5b0cede9d579","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID33aa5834-6451-4ebf-b776-ccf9357a99b2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID33aa5834-6451-4ebf-b776-ccf9357a99b2"}},{"type":"ServiceEndpoint","id":"EID7422318d-72ce-43a1-bcd7-d2c7c5e9aad4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"Message","id":"EIDb7acecd2-dbca-468d-b719-6cd6acec669f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDb7acecd2-dbca-468d-b719-6cd6acec669f"}},{"type":"Message","id":"EIDa0b84b60-1e0e-435c-bc0e-b7e0afe5f25e","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDa0b84b60-1e0e-435c-bc0e-b7e0afe5f25e"}},{"type":"GetParameter","id":"EID7ca94742-bcfa-414f-a76c-2796d782c196","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDE1X3YueG1s"},{"type":"GetParameter","id":"EID4f03c99e-6898-4470-9ab8-2ae49cdcb82c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID2b35c3ee-e504-41cb-a09f-dbaf72da3720","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID5ddd8fe2-cced-4aff-8131-2d0169761fce","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAxNS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDdd3cf1f3-fa10-4402-bdfb-0a5b0164b258","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EIDdd3cf1f3-fa10-4402-bdfb-0a5b0164b258"}},{"type":"ServiceResponse","id":"EID8b012f9d-59f5-4165-88f4-5f53b9288531","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID8b012f9d-59f5-4165-88f4-5f53b9288531"}},{"type":"Message","id":"EID598f49d8-8f8e-4219-81d0-f13554363410","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDc680b975-0bf4-489c-a18e-f9d3015170f2/Attachments/EID598f49d8-8f8e-4219-81d0-f13554363410"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:10:42Z","duration":26291,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.013
13:12:23.008 [print] EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:12:23.008 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.003
13:12:23.012 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:12:23.012 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:12:23.012 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/d8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:12:23.013 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/d8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:12:23.013 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDd8a80d0a-0389-4ea9-b3cc-89a67dd1c8b6/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.002
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.009
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.009
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.014
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.006
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.005
* print jsonFailedStepmessages 0.003
13:12:23.066 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
13:12:23.068 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* print sortedrefs 0.010
13:12:23.079 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.001
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.005
16.856
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.001
13:11:32.073 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rdinfo/wfs?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 16.853
13:11:32.074 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 285
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rdinfo/wfs?request=GetCapabilities&service=WFS"}}}

13:11:48.926 response time in milliseconds: 16746.99
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:11:48 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804308733","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:11:48.927 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1:57.578
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:22:00.866 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 10.242
13:22:00.866 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}

13:22:11.106 response time in milliseconds: 9491.76
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:22:10 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:22:08 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/d28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a.json","testRuns":{"TestRun":{"id":"EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:22:07.454Z","testTasks":{"TestTask":{"id":"EIDaf22caaa-7178-4c6e-95b8-0a9a0cfb85c9","parent":{"ref":"EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID55f488ff-b2ea-44cf-8f21-a10ab8e6d813"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID55f488ff-b2ea-44cf-8f21-a10ab8e6d813","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:22:01.298Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:22:06.782Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:22:11.109 [print] EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:22:11.109 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:22:11.109 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:22:11.109 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/d28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:22:11.109 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:22:11.109 [print] statuspath TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a
* print 'progresspath ', progresspath 0.000
13:22:11.109 [print] progresspath  TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
Given path progresspath 0.000
When method GET 0.516
13:22:11.110 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:11.626 response time in milliseconds: 515.60
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:22:11 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)","27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:07 - Preparing 1 Test Task:","27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)","27.10.2020 13:22:07 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:07 -  with parameters: ","27.10.2020 13:22:07 - etf.testcases = *","27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:07 - Setting state to CREATED","27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:22:11.626 [print] {
  "val": "0",
  "max": "240",
  "log": [
    "27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)",
    "27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:22:07 - Preparing 1 Test Task:",
    "27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)",
    "27.10.2020 13:22:07 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:22:07 -  with parameters: ",
    "27.10.2020 13:22:07 - etf.testcases = *",
    "27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:22:07 - Setting state to CREATED",
    "27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING"
  ]
}
Given path progresspath 0.000
When method GET 1:46.818
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:62 - too many retry attempts: 20
13:22:11.627 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:12.141 response time in milliseconds: 513.76
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:22:12 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)","27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:07 - Preparing 1 Test Task:","27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)","27.10.2020 13:22:07 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:07 -  with parameters: ","27.10.2020 13:22:07 - etf.testcases = *","27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:07 - Setting state to CREATED","27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING"]}

13:22:12.141 retry condition not satisfied: response.val == response.max
13:22:12.141 sleeping before retry #1
13:22:17.142 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:17.643 response time in milliseconds: 500.60
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:22:17 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)","27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:07 - Preparing 1 Test Task:","27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)","27.10.2020 13:22:07 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:07 -  with parameters: ","27.10.2020 13:22:07 - etf.testcases = *","27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:07 - Setting state to CREATED","27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING"]}

13:22:17.643 retry condition not satisfied: response.val == response.max
13:22:17.643 sleeping before retry #2
13:22:22.644 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:23.152 response time in milliseconds: 507.28
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:22:23 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)","27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:07 - Preparing 1 Test Task:","27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)","27.10.2020 13:22:07 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:07 -  with parameters: ","27.10.2020 13:22:07 - etf.testcases = *","27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:07 - Setting state to CREATED","27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING"]}

13:22:23.155 retry condition not satisfied: response.val == response.max
13:22:23.155 sleeping before retry #3
13:22:28.156 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:28.669 response time in milliseconds: 512.76
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:22:28 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)","27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:07 - Preparing 1 Test Task:","27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)","27.10.2020 13:22:07 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:07 -  with parameters: ","27.10.2020 13:22:07 - etf.testcases = *","27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:07 - Setting state to CREATED","27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING"]}

13:22:28.672 retry condition not satisfied: response.val == response.max
13:22:28.672 sleeping before retry #4
13:22:33.673 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:34.201 response time in milliseconds: 525.51
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:22:34 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)","27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:07 - Preparing 1 Test Task:","27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)","27.10.2020 13:22:07 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:07 -  with parameters: ","27.10.2020 13:22:07 - etf.testcases = *","27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:07 - Setting state to CREATED","27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:30 - Starting TestRun.d28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a at 2020-10-27T13:22:32Z","27.10.2020 13:22:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:32 - Project Properties: ","27.10.2020 13:22:32 - etf.testcases - * ","27.10.2020 13:22:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:22:32 - username -  ","27.10.2020 13:22:32 - authUser -  ","27.10.2020 13:22:32 - authMethod - basic ","27.10.2020 13:22:32 - TestRunTask initialized"]}

13:22:34.201 retry condition not satisfied: response.val == response.max
13:22:34.201 sleeping before retry #5
13:22:39.202 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:39.723 response time in milliseconds: 520.68
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:22:39 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"62","max":"63","log":["27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)","27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:07 - Preparing 1 Test Task:","27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)","27.10.2020 13:22:07 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:07 -  with parameters: ","27.10.2020 13:22:07 - etf.testcases = *","27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:07 - Setting state to CREATED","27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:30 - Starting TestRun.d28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a at 2020-10-27T13:22:32Z","27.10.2020 13:22:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:32 - Project Properties: ","27.10.2020 13:22:32 - etf.testcases - * ","27.10.2020 13:22:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:22:32 - username -  ","27.10.2020 13:22:32 - authUser -  ","27.10.2020 13:22:32 - authMethod - basic ","27.10.2020 13:22:32 - TestRunTask initialized","27.10.2020 13:22:39 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}

13:22:39.723 retry condition not satisfied: response.val == response.max
13:22:39.723 sleeping before retry #6
13:22:44.724 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:45.252 response time in milliseconds: 527.14
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:22:45 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"156","max":"157","log":["27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)","27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:07 - Preparing 1 Test Task:","27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)","27.10.2020 13:22:07 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:07 -  with parameters: ","27.10.2020 13:22:07 - etf.testcases = *","27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:07 - Setting state to CREATED","27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:30 - Starting TestRun.d28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a at 2020-10-27T13:22:32Z","27.10.2020 13:22:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:32 - Project Properties: ","27.10.2020 13:22:32 - etf.testcases - * ","27.10.2020 13:22:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:22:32 - username -  ","27.10.2020 13:22:32 - authUser -  ","27.10.2020 13:22:32 - authMethod - basic ","27.10.2020 13:22:32 - TestRunTask initialized","27.10.2020 13:22:39 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:22:42 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:22:45.252 retry condition not satisfied: response.val == response.max
13:22:45.252 sleeping before retry #7
13:22:50.253 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:50.766 response time in milliseconds: 512.35
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Tue, 27 Oct 2020 13:22:50 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)","27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:07 - Preparing 1 Test Task:","27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)","27.10.2020 13:22:07 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:07 -  with parameters: ","27.10.2020 13:22:07 - etf.testcases = *","27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:07 - Setting state to CREATED","27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:30 - Starting TestRun.d28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a at 2020-10-27T13:22:32Z","27.10.2020 13:22:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:32 - Project Properties: ","27.10.2020 13:22:32 - etf.testcases - * ","27.10.2020 13:22:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:22:32 - username -  ","27.10.2020 13:22:32 - authUser -  ","27.10.2020 13:22:32 - authMethod - basic ","27.10.2020 13:22:32 - TestRunTask initialized","27.10.2020 13:22:39 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:22:42 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:22:50.766 retry condition not satisfied: response.val == response.max
13:22:50.766 sleeping before retry #8
13:22:55.767 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:56.287 response time in milliseconds: 519.26
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Tue, 27 Oct 2020 13:22:56 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)","27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:07 - Preparing 1 Test Task:","27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)","27.10.2020 13:22:07 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:07 -  with parameters: ","27.10.2020 13:22:07 - etf.testcases = *","27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:07 - Setting state to CREATED","27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:30 - Starting TestRun.d28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a at 2020-10-27T13:22:32Z","27.10.2020 13:22:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:32 - Project Properties: ","27.10.2020 13:22:32 - etf.testcases - * ","27.10.2020 13:22:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:22:32 - username -  ","27.10.2020 13:22:32 - authUser -  ","27.10.2020 13:22:32 - authMethod - basic ","27.10.2020 13:22:32 - TestRunTask initialized","27.10.2020 13:22:39 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:22:42 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:22:56.287 retry condition not satisfied: response.val == response.max
13:22:56.287 sleeping before retry #9
13:23:01.288 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:23:01.865 response time in milliseconds: 576.91
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Tue, 27 Oct 2020 13:23:01 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)","27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:07 - Preparing 1 Test Task:","27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)","27.10.2020 13:22:07 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:07 -  with parameters: ","27.10.2020 13:22:07 - etf.testcases = *","27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:07 - Setting state to CREATED","27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:30 - Starting TestRun.d28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a at 2020-10-27T13:22:32Z","27.10.2020 13:22:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:32 - Project Properties: ","27.10.2020 13:22:32 - etf.testcases - * ","27.10.2020 13:22:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:22:32 - username -  ","27.10.2020 13:22:32 - authUser -  ","27.10.2020 13:22:32 - authMethod - basic ","27.10.2020 13:22:32 - TestRunTask initialized","27.10.2020 13:22:39 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:22:42 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:23:01.866 retry condition not satisfied: response.val == response.max
13:23:01.866 sleeping before retry #10
13:23:06.867 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:23:07.374 response time in milliseconds: 507.10
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Tue, 27 Oct 2020 13:23:07 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)","27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:07 - Preparing 1 Test Task:","27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)","27.10.2020 13:22:07 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:07 -  with parameters: ","27.10.2020 13:22:07 - etf.testcases = *","27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:07 - Setting state to CREATED","27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:30 - Starting TestRun.d28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a at 2020-10-27T13:22:32Z","27.10.2020 13:22:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:32 - Project Properties: ","27.10.2020 13:22:32 - etf.testcases - * ","27.10.2020 13:22:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:22:32 - username -  ","27.10.2020 13:22:32 - authUser -  ","27.10.2020 13:22:32 - authMethod - basic ","27.10.2020 13:22:32 - TestRunTask initialized","27.10.2020 13:22:39 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:22:42 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:23:07.374 retry condition not satisfied: response.val == response.max
13:23:07.374 sleeping before retry #11
13:23:12.375 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:23:12.923 response time in milliseconds: 547.23
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Tue, 27 Oct 2020 13:23:12 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)","27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:07 - Preparing 1 Test Task:","27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)","27.10.2020 13:22:07 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:07 -  with parameters: ","27.10.2020 13:22:07 - etf.testcases = *","27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:07 - Setting state to CREATED","27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:30 - Starting TestRun.d28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a at 2020-10-27T13:22:32Z","27.10.2020 13:22:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:32 - Project Properties: ","27.10.2020 13:22:32 - etf.testcases - * ","27.10.2020 13:22:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:22:32 - username -  ","27.10.2020 13:22:32 - authUser -  ","27.10.2020 13:22:32 - authMethod - basic ","27.10.2020 13:22:32 - TestRunTask initialized","27.10.2020 13:22:39 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:22:42 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:23:12.923 retry condition not satisfied: response.val == response.max
13:23:12.923 sleeping before retry #12
13:23:17.924 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:23:19.712 response time in milliseconds: 1787.33
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Tue, 27 Oct 2020 13:23:19 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)","27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:07 - Preparing 1 Test Task:","27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)","27.10.2020 13:22:07 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:07 -  with parameters: ","27.10.2020 13:22:07 - etf.testcases = *","27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:07 - Setting state to CREATED","27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:30 - Starting TestRun.d28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a at 2020-10-27T13:22:32Z","27.10.2020 13:22:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:32 - Project Properties: ","27.10.2020 13:22:32 - etf.testcases - * ","27.10.2020 13:22:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:22:32 - username -  ","27.10.2020 13:22:32 - authUser -  ","27.10.2020 13:22:32 - authMethod - basic ","27.10.2020 13:22:32 - TestRunTask initialized","27.10.2020 13:22:39 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:22:42 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:23:19.712 retry condition not satisfied: response.val == response.max
13:23:19.712 sleeping before retry #13
13:23:24.713 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:23:25.260 response time in milliseconds: 544.18
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Tue, 27 Oct 2020 13:23:25 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)","27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:07 - Preparing 1 Test Task:","27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)","27.10.2020 13:22:07 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:07 -  with parameters: ","27.10.2020 13:22:07 - etf.testcases = *","27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:07 - Setting state to CREATED","27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:30 - Starting TestRun.d28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a at 2020-10-27T13:22:32Z","27.10.2020 13:22:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:32 - Project Properties: ","27.10.2020 13:22:32 - etf.testcases - * ","27.10.2020 13:22:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:22:32 - username -  ","27.10.2020 13:22:32 - authUser -  ","27.10.2020 13:22:32 - authMethod - basic ","27.10.2020 13:22:32 - TestRunTask initialized","27.10.2020 13:22:39 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:22:42 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:23:23 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:23:25.260 retry condition not satisfied: response.val == response.max
13:23:25.260 sleeping before retry #14
13:23:30.260 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:23:30.801 response time in milliseconds: 536.90
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Tue, 27 Oct 2020 13:23:30 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)","27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:07 - Preparing 1 Test Task:","27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)","27.10.2020 13:22:07 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:07 -  with parameters: ","27.10.2020 13:22:07 - etf.testcases = *","27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:07 - Setting state to CREATED","27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:30 - Starting TestRun.d28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a at 2020-10-27T13:22:32Z","27.10.2020 13:22:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:32 - Project Properties: ","27.10.2020 13:22:32 - etf.testcases - * ","27.10.2020 13:22:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:22:32 - username -  ","27.10.2020 13:22:32 - authUser -  ","27.10.2020 13:22:32 - authMethod - basic ","27.10.2020 13:22:32 - TestRunTask initialized","27.10.2020 13:22:39 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:22:42 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:23:23 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:23:26 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:23:30.801 retry condition not satisfied: response.val == response.max
13:23:30.801 sleeping before retry #15
13:23:35.802 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:23:36.314 response time in milliseconds: 511.43
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Tue, 27 Oct 2020 13:23:36 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)","27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:07 - Preparing 1 Test Task:","27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)","27.10.2020 13:22:07 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:07 -  with parameters: ","27.10.2020 13:22:07 - etf.testcases = *","27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:07 - Setting state to CREATED","27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:30 - Starting TestRun.d28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a at 2020-10-27T13:22:32Z","27.10.2020 13:22:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:32 - Project Properties: ","27.10.2020 13:22:32 - etf.testcases - * ","27.10.2020 13:22:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:22:32 - username -  ","27.10.2020 13:22:32 - authUser -  ","27.10.2020 13:22:32 - authMethod - basic ","27.10.2020 13:22:32 - TestRunTask initialized","27.10.2020 13:22:39 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:22:42 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:23:23 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:23:26 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:23:36.314 retry condition not satisfied: response.val == response.max
13:23:36.314 sleeping before retry #16
13:23:41.315 request:
19 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
19 > Accept-Encoding: gzip,deflate
19 > Connection: Keep-Alive
19 > Host: inspire.ec.europa.eu
19 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:23:41.832 response time in milliseconds: 513.33
19 < 200
19 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
19 < Connection: Keep-Alive
19 < Content-Type: application/json;charset=UTF-8
19 < Date: Tue, 27 Oct 2020 13:23:41 GMT
19 < Keep-Alive: timeout=3, max=100
19 < Server: nginx/1.16.1
19 < Vary: Origin
19 < X-Frame-Options: SAMEORIGIN
19 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)","27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:07 - Preparing 1 Test Task:","27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)","27.10.2020 13:22:07 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:07 -  with parameters: ","27.10.2020 13:22:07 - etf.testcases = *","27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:07 - Setting state to CREATED","27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:30 - Starting TestRun.d28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a at 2020-10-27T13:22:32Z","27.10.2020 13:22:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:32 - Project Properties: ","27.10.2020 13:22:32 - etf.testcases - * ","27.10.2020 13:22:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:22:32 - username -  ","27.10.2020 13:22:32 - authUser -  ","27.10.2020 13:22:32 - authMethod - basic ","27.10.2020 13:22:32 - TestRunTask initialized","27.10.2020 13:22:39 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:22:42 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:23:23 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:23:26 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:23:41.837 retry condition not satisfied: response.val == response.max
13:23:41.837 sleeping before retry #17
13:23:46.838 request:
20 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
20 > Accept-Encoding: gzip,deflate
20 > Connection: Keep-Alive
20 > Host: inspire.ec.europa.eu
20 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:23:47.347 response time in milliseconds: 508.79
20 < 200
20 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
20 < Connection: Keep-Alive
20 < Content-Type: application/json;charset=UTF-8
20 < Date: Tue, 27 Oct 2020 13:23:47 GMT
20 < Keep-Alive: timeout=3, max=100
20 < Server: nginx/1.16.1
20 < Vary: Origin
20 < X-Frame-Options: SAMEORIGIN
20 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)","27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:07 - Preparing 1 Test Task:","27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)","27.10.2020 13:22:07 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:07 -  with parameters: ","27.10.2020 13:22:07 - etf.testcases = *","27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:07 - Setting state to CREATED","27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:30 - Starting TestRun.d28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a at 2020-10-27T13:22:32Z","27.10.2020 13:22:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:32 - Project Properties: ","27.10.2020 13:22:32 - etf.testcases - * ","27.10.2020 13:22:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:22:32 - username -  ","27.10.2020 13:22:32 - authUser -  ","27.10.2020 13:22:32 - authMethod - basic ","27.10.2020 13:22:32 - TestRunTask initialized","27.10.2020 13:22:39 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:22:42 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:23:23 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:23:26 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:23:47.348 retry condition not satisfied: response.val == response.max
13:23:47.348 sleeping before retry #18
13:23:52.349 request:
21 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
21 > Accept-Encoding: gzip,deflate
21 > Connection: Keep-Alive
21 > Host: inspire.ec.europa.eu
21 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:23:52.932 response time in milliseconds: 582.38
21 < 200
21 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
21 < Connection: Keep-Alive
21 < Content-Type: application/json;charset=UTF-8
21 < Date: Tue, 27 Oct 2020 13:23:52 GMT
21 < Keep-Alive: timeout=3, max=100
21 < Server: nginx/1.16.1
21 < Vary: Origin
21 < X-Frame-Options: SAMEORIGIN
21 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)","27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:07 - Preparing 1 Test Task:","27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)","27.10.2020 13:22:07 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:07 -  with parameters: ","27.10.2020 13:22:07 - etf.testcases = *","27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:07 - Setting state to CREATED","27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:30 - Starting TestRun.d28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a at 2020-10-27T13:22:32Z","27.10.2020 13:22:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:32 - Project Properties: ","27.10.2020 13:22:32 - etf.testcases - * ","27.10.2020 13:22:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:22:32 - username -  ","27.10.2020 13:22:32 - authUser -  ","27.10.2020 13:22:32 - authMethod - basic ","27.10.2020 13:22:32 - TestRunTask initialized","27.10.2020 13:22:39 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:22:42 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:23:23 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:23:26 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:23:52.932 retry condition not satisfied: response.val == response.max
13:23:52.932 sleeping before retry #19
13:23:57.933 request:
22 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a/progress
22 > Accept-Encoding: gzip,deflate
22 > Connection: Keep-Alive
22 > Host: inspire.ec.europa.eu
22 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:23:58.442 response time in milliseconds: 508.47
22 < 200
22 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
22 < Connection: Keep-Alive
22 < Content-Type: application/json;charset=UTF-8
22 < Date: Tue, 27 Oct 2020 13:23:58 GMT
22 < Keep-Alive: timeout=3, max=100
22 < Server: nginx/1.16.1
22 < Vary: Origin
22 < X-Frame-Options: SAMEORIGIN
22 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:22:07 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:22:07 UTC 2020)","27.10.2020 13:22:07 - Resolving Executable Test Suite dependencies","27.10.2020 13:22:07 - Preparing 1 Test Task:","27.10.2020 13:22:07 -  TestTask 1 (af22caaa-7178-4c6e-95b8-0a9a0cfb85c9)","27.10.2020 13:22:07 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:22:07 -  with parameters: ","27.10.2020 13:22:07 - etf.testcases = *","27.10.2020 13:22:07 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:22:07 - Setting state to CREATED","27.10.2020 13:22:07 - Changed state from CREATED to INITIALIZING","27.10.2020 13:22:30 - Starting TestRun.d28e3050-e1e2-4aa8-b5bd-1cbbe2adc88a at 2020-10-27T13:22:32Z","27.10.2020 13:22:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:22:32 - Project Properties: ","27.10.2020 13:22:32 - etf.testcases - * ","27.10.2020 13:22:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:22:32 - username -  ","27.10.2020 13:22:32 - authUser -  ","27.10.2020 13:22:32 - authMethod - basic ","27.10.2020 13:22:32 - TestRunTask initialized","27.10.2020 13:22:39 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:22:42 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:23:23 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:23:26 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:23:55 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:23:58.445 retry condition not satisfied: response.val == response.max
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1:21.257
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:15:30.747 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 9.500
13:15:30.748 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 297
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml"}}}

13:15:40.231 response time in milliseconds: 8737.16
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:15:39 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:15:36 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/856b9450-1b2e-4dd0-87c3-c7bd93102203.json","testRuns":{"TestRun":{"id":"EID856b9450-1b2e-4dd0-87c3-c7bd93102203","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:15:35.669Z","testTasks":{"TestTask":{"id":"EID0af493df-d901-4cf6-93e6-893b05c20449","parent":{"ref":"EID856b9450-1b2e-4dd0-87c3-c7bd93102203"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID7ed138d6-c615-4f7d-8251-bae36d5c42bc"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID856b9450-1b2e-4dd0-87c3-c7bd93102203/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID7ed138d6-c615-4f7d-8251-bae36d5c42bc","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:15:31.18Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:15:34.99Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.006
13:15:40.254 [print] EID856b9450-1b2e-4dd0-87c3-c7bd93102203
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:15:40.254 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:15:40.255 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:15:40.255 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/856b9450-1b2e-4dd0-87c3-c7bd93102203.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:15:40.255 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID856b9450-1b2e-4dd0-87c3-c7bd93102203/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:15:40.255 [print] statuspath TestRuns/EID856b9450-1b2e-4dd0-87c3-c7bd93102203
* print 'progresspath ', progresspath 0.000
13:15:40.256 [print] progresspath  TestRuns/EID856b9450-1b2e-4dd0-87c3-c7bd93102203/progress
Given path progresspath 0.000
When method GET 0.516
13:15:40.256 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID856b9450-1b2e-4dd0-87c3-c7bd93102203/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:40.772 response time in milliseconds: 515.33
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:15:40 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:15:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:15:35 UTC 2020)","27.10.2020 13:15:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:15:35 - Preparing 1 Test Task:","27.10.2020 13:15:35 -  TestTask 1 (0af493df-d901-4cf6-93e6-893b05c20449)","27.10.2020 13:15:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:15:35 -  with parameters: ","27.10.2020 13:15:35 - etf.testcases = *","27.10.2020 13:15:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:15:35 - Setting state to CREATED","27.10.2020 13:15:35 - Changed state from CREATED to INITIALIZING"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:15:40.772 [print] {
  "val": "0",
  "max": "240",
  "log": [
    "27.10.2020 13:15:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:15:35 UTC 2020)",
    "27.10.2020 13:15:35 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:15:35 - Preparing 1 Test Task:",
    "27.10.2020 13:15:35 -  TestTask 1 (0af493df-d901-4cf6-93e6-893b05c20449)",
    "27.10.2020 13:15:35 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:15:35 -  with parameters: ",
    "27.10.2020 13:15:35 - etf.testcases = *",
    "27.10.2020 13:15:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:15:35 - Setting state to CREATED",
    "27.10.2020 13:15:35 - Changed state from CREATED to INITIALIZING"
  ]
}
Given path progresspath 0.000
When method GET 1:8.942
13:15:40.773 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID856b9450-1b2e-4dd0-87c3-c7bd93102203/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:41.435 response time in milliseconds: 661.90
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:15:41 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:15:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:15:35 UTC 2020)","27.10.2020 13:15:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:15:35 - Preparing 1 Test Task:","27.10.2020 13:15:35 -  TestTask 1 (0af493df-d901-4cf6-93e6-893b05c20449)","27.10.2020 13:15:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:15:35 -  with parameters: ","27.10.2020 13:15:35 - etf.testcases = *","27.10.2020 13:15:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:15:35 - Setting state to CREATED","27.10.2020 13:15:35 - Changed state from CREATED to INITIALIZING"]}

13:15:41.441 retry condition not satisfied: response.val == response.max
13:15:41.441 sleeping before retry #1
13:15:46.442 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID856b9450-1b2e-4dd0-87c3-c7bd93102203/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:46.957 response time in milliseconds: 514.11
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:15:46 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:15:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:15:35 UTC 2020)","27.10.2020 13:15:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:15:35 - Preparing 1 Test Task:","27.10.2020 13:15:35 -  TestTask 1 (0af493df-d901-4cf6-93e6-893b05c20449)","27.10.2020 13:15:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:15:35 -  with parameters: ","27.10.2020 13:15:35 - etf.testcases = *","27.10.2020 13:15:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:15:35 - Setting state to CREATED","27.10.2020 13:15:35 - Changed state from CREATED to INITIALIZING"]}

13:15:46.957 retry condition not satisfied: response.val == response.max
13:15:46.957 sleeping before retry #2
13:15:51.958 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID856b9450-1b2e-4dd0-87c3-c7bd93102203/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:52.502 response time in milliseconds: 543.57
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:15:52 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:15:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:15:35 UTC 2020)","27.10.2020 13:15:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:15:35 - Preparing 1 Test Task:","27.10.2020 13:15:35 -  TestTask 1 (0af493df-d901-4cf6-93e6-893b05c20449)","27.10.2020 13:15:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:15:35 -  with parameters: ","27.10.2020 13:15:35 - etf.testcases = *","27.10.2020 13:15:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:15:35 - Setting state to CREATED","27.10.2020 13:15:35 - Changed state from CREATED to INITIALIZING"]}

13:15:52.503 retry condition not satisfied: response.val == response.max
13:15:52.503 sleeping before retry #3
13:15:57.504 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID856b9450-1b2e-4dd0-87c3-c7bd93102203/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:58.022 response time in milliseconds: 517.32
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:15:57 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["27.10.2020 13:15:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:15:35 UTC 2020)","27.10.2020 13:15:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:15:35 - Preparing 1 Test Task:","27.10.2020 13:15:35 -  TestTask 1 (0af493df-d901-4cf6-93e6-893b05c20449)","27.10.2020 13:15:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:15:35 -  with parameters: ","27.10.2020 13:15:35 - etf.testcases = *","27.10.2020 13:15:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:15:35 - Setting state to CREATED","27.10.2020 13:15:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:15:52 - Starting TestRun.856b9450-1b2e-4dd0-87c3-c7bd93102203 at 2020-10-27T13:15:54Z","27.10.2020 13:15:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:15:54 - Project Properties: ","27.10.2020 13:15:54 - etf.testcases - * ","27.10.2020 13:15:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","27.10.2020 13:15:54 - username -  ","27.10.2020 13:15:54 - authUser -  ","27.10.2020 13:15:54 - authMethod - basic ","27.10.2020 13:15:54 - TestRunTask initialized"]}

13:15:58.022 retry condition not satisfied: response.val == response.max
13:15:58.022 sleeping before retry #4
13:16:03.023 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID856b9450-1b2e-4dd0-87c3-c7bd93102203/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:03.533 response time in milliseconds: 509.68
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:16:03 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"30","max":"31","log":["27.10.2020 13:15:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:15:35 UTC 2020)","27.10.2020 13:15:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:15:35 - Preparing 1 Test Task:","27.10.2020 13:15:35 -  TestTask 1 (0af493df-d901-4cf6-93e6-893b05c20449)","27.10.2020 13:15:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:15:35 -  with parameters: ","27.10.2020 13:15:35 - etf.testcases = *","27.10.2020 13:15:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:15:35 - Setting state to CREATED","27.10.2020 13:15:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:15:52 - Starting TestRun.856b9450-1b2e-4dd0-87c3-c7bd93102203 at 2020-10-27T13:15:54Z","27.10.2020 13:15:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:15:54 - Project Properties: ","27.10.2020 13:15:54 - etf.testcases - * ","27.10.2020 13:15:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","27.10.2020 13:15:54 - username -  ","27.10.2020 13:15:54 - authUser -  ","27.10.2020 13:15:54 - authMethod - basic ","27.10.2020 13:15:54 - TestRunTask initialized"]}

13:16:03.534 retry condition not satisfied: response.val == response.max
13:16:03.534 sleeping before retry #5
13:16:08.535 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID856b9450-1b2e-4dd0-87c3-c7bd93102203/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:09.035 response time in milliseconds: 499.57
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:16:08 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"45","max":"46","log":["27.10.2020 13:15:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:15:35 UTC 2020)","27.10.2020 13:15:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:15:35 - Preparing 1 Test Task:","27.10.2020 13:15:35 -  TestTask 1 (0af493df-d901-4cf6-93e6-893b05c20449)","27.10.2020 13:15:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:15:35 -  with parameters: ","27.10.2020 13:15:35 - etf.testcases = *","27.10.2020 13:15:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:15:35 - Setting state to CREATED","27.10.2020 13:15:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:15:52 - Starting TestRun.856b9450-1b2e-4dd0-87c3-c7bd93102203 at 2020-10-27T13:15:54Z","27.10.2020 13:15:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:15:54 - Project Properties: ","27.10.2020 13:15:54 - etf.testcases - * ","27.10.2020 13:15:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","27.10.2020 13:15:54 - username -  ","27.10.2020 13:15:54 - authUser -  ","27.10.2020 13:15:54 - authMethod - basic ","27.10.2020 13:15:54 - TestRunTask initialized"]}

13:16:09.035 retry condition not satisfied: response.val == response.max
13:16:09.035 sleeping before retry #6
13:16:14.036 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID856b9450-1b2e-4dd0-87c3-c7bd93102203/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:14.577 response time in milliseconds: 539.97
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:16:14 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"58","max":"59","log":["27.10.2020 13:15:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:15:35 UTC 2020)","27.10.2020 13:15:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:15:35 - Preparing 1 Test Task:","27.10.2020 13:15:35 -  TestTask 1 (0af493df-d901-4cf6-93e6-893b05c20449)","27.10.2020 13:15:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:15:35 -  with parameters: ","27.10.2020 13:15:35 - etf.testcases = *","27.10.2020 13:15:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:15:35 - Setting state to CREATED","27.10.2020 13:15:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:15:52 - Starting TestRun.856b9450-1b2e-4dd0-87c3-c7bd93102203 at 2020-10-27T13:15:54Z","27.10.2020 13:15:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:15:54 - Project Properties: ","27.10.2020 13:15:54 - etf.testcases - * ","27.10.2020 13:15:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","27.10.2020 13:15:54 - username -  ","27.10.2020 13:15:54 - authUser -  ","27.10.2020 13:15:54 - authMethod - basic ","27.10.2020 13:15:54 - TestRunTask initialized"]}

13:16:14.577 retry condition not satisfied: response.val == response.max
13:16:14.577 sleeping before retry #7
13:16:19.578 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID856b9450-1b2e-4dd0-87c3-c7bd93102203/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:20.096 response time in milliseconds: 518.22
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Tue, 27 Oct 2020 13:16:20 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"78","max":"79","log":["27.10.2020 13:15:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:15:35 UTC 2020)","27.10.2020 13:15:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:15:35 - Preparing 1 Test Task:","27.10.2020 13:15:35 -  TestTask 1 (0af493df-d901-4cf6-93e6-893b05c20449)","27.10.2020 13:15:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:15:35 -  with parameters: ","27.10.2020 13:15:35 - etf.testcases = *","27.10.2020 13:15:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:15:35 - Setting state to CREATED","27.10.2020 13:15:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:15:52 - Starting TestRun.856b9450-1b2e-4dd0-87c3-c7bd93102203 at 2020-10-27T13:15:54Z","27.10.2020 13:15:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:15:54 - Project Properties: ","27.10.2020 13:15:54 - etf.testcases - * ","27.10.2020 13:15:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","27.10.2020 13:15:54 - username -  ","27.10.2020 13:15:54 - authUser -  ","27.10.2020 13:15:54 - authMethod - basic ","27.10.2020 13:15:54 - TestRunTask initialized"]}

13:16:20.099 retry condition not satisfied: response.val == response.max
13:16:20.099 sleeping before retry #8
13:16:25.099 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID856b9450-1b2e-4dd0-87c3-c7bd93102203/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:25.658 response time in milliseconds: 557.93
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Tue, 27 Oct 2020 13:16:25 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"101","max":"102","log":["27.10.2020 13:15:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:15:35 UTC 2020)","27.10.2020 13:15:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:15:35 - Preparing 1 Test Task:","27.10.2020 13:15:35 -  TestTask 1 (0af493df-d901-4cf6-93e6-893b05c20449)","27.10.2020 13:15:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:15:35 -  with parameters: ","27.10.2020 13:15:35 - etf.testcases = *","27.10.2020 13:15:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:15:35 - Setting state to CREATED","27.10.2020 13:15:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:15:52 - Starting TestRun.856b9450-1b2e-4dd0-87c3-c7bd93102203 at 2020-10-27T13:15:54Z","27.10.2020 13:15:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:15:54 - Project Properties: ","27.10.2020 13:15:54 - etf.testcases - * ","27.10.2020 13:15:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","27.10.2020 13:15:54 - username -  ","27.10.2020 13:15:54 - authUser -  ","27.10.2020 13:15:54 - authMethod - basic ","27.10.2020 13:15:54 - TestRunTask initialized","27.10.2020 13:16:22 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:16:25.658 retry condition not satisfied: response.val == response.max
13:16:25.658 sleeping before retry #9
13:16:30.659 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID856b9450-1b2e-4dd0-87c3-c7bd93102203/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:31.161 response time in milliseconds: 501.35
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Tue, 27 Oct 2020 13:16:31 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"122","max":"123","log":["27.10.2020 13:15:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:15:35 UTC 2020)","27.10.2020 13:15:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:15:35 - Preparing 1 Test Task:","27.10.2020 13:15:35 -  TestTask 1 (0af493df-d901-4cf6-93e6-893b05c20449)","27.10.2020 13:15:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:15:35 -  with parameters: ","27.10.2020 13:15:35 - etf.testcases = *","27.10.2020 13:15:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:15:35 - Setting state to CREATED","27.10.2020 13:15:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:15:52 - Starting TestRun.856b9450-1b2e-4dd0-87c3-c7bd93102203 at 2020-10-27T13:15:54Z","27.10.2020 13:15:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:15:54 - Project Properties: ","27.10.2020 13:15:54 - etf.testcases - * ","27.10.2020 13:15:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","27.10.2020 13:15:54 - username -  ","27.10.2020 13:15:54 - authUser -  ","27.10.2020 13:15:54 - authMethod - basic ","27.10.2020 13:15:54 - TestRunTask initialized","27.10.2020 13:16:22 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:16:31.162 retry condition not satisfied: response.val == response.max
13:16:31.162 sleeping before retry #10
13:16:36.163 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID856b9450-1b2e-4dd0-87c3-c7bd93102203/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:37.152 response time in milliseconds: 988.87
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Tue, 27 Oct 2020 13:16:37 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:15:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:15:35 UTC 2020)","27.10.2020 13:15:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:15:35 - Preparing 1 Test Task:","27.10.2020 13:15:35 -  TestTask 1 (0af493df-d901-4cf6-93e6-893b05c20449)","27.10.2020 13:15:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:15:35 -  with parameters: ","27.10.2020 13:15:35 - etf.testcases = *","27.10.2020 13:15:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:15:35 - Setting state to CREATED","27.10.2020 13:15:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:15:52 - Starting TestRun.856b9450-1b2e-4dd0-87c3-c7bd93102203 at 2020-10-27T13:15:54Z","27.10.2020 13:15:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:15:54 - Project Properties: ","27.10.2020 13:15:54 - etf.testcases - * ","27.10.2020 13:15:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","27.10.2020 13:15:54 - username -  ","27.10.2020 13:15:54 - authUser -  ","27.10.2020 13:15:54 - authMethod - basic ","27.10.2020 13:15:54 - TestRunTask initialized","27.10.2020 13:16:22 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:16:36 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:36 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

13:16:37.152 retry condition not satisfied: response.val == response.max
13:16:37.152 sleeping before retry #11
13:16:42.153 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID856b9450-1b2e-4dd0-87c3-c7bd93102203/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:42.694 response time in milliseconds: 535.98
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Tue, 27 Oct 2020 13:16:42 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:15:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:15:35 UTC 2020)","27.10.2020 13:15:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:15:35 - Preparing 1 Test Task:","27.10.2020 13:15:35 -  TestTask 1 (0af493df-d901-4cf6-93e6-893b05c20449)","27.10.2020 13:15:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:15:35 -  with parameters: ","27.10.2020 13:15:35 - etf.testcases = *","27.10.2020 13:15:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:15:35 - Setting state to CREATED","27.10.2020 13:15:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:15:52 - Starting TestRun.856b9450-1b2e-4dd0-87c3-c7bd93102203 at 2020-10-27T13:15:54Z","27.10.2020 13:15:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:15:54 - Project Properties: ","27.10.2020 13:15:54 - etf.testcases - * ","27.10.2020 13:15:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","27.10.2020 13:15:54 - username -  ","27.10.2020 13:15:54 - authUser -  ","27.10.2020 13:15:54 - authMethod - basic ","27.10.2020 13:15:54 - TestRunTask initialized","27.10.2020 13:16:22 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:16:36 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:36 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:37 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:38 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:38 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

13:16:42.694 retry condition not satisfied: response.val == response.max
13:16:42.694 sleeping before retry #12
13:16:47.695 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID856b9450-1b2e-4dd0-87c3-c7bd93102203/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:49.714 response time in milliseconds: 2018.40
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Tue, 27 Oct 2020 13:16:49 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:16:49.715 retry condition satisfied
* print response 0.000
13:16:49.715 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 2.287
13:16:49.716 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID856b9450-1b2e-4dd0-87c3-c7bd93102203
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:52.001 response time in milliseconds: 2284.58
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Cache-Control: public, max-age=120
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Tue, 27 Oct 2020 13:16:51 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Last-Modified: Tue, 27 Oct 2020 13:16:47 GMT
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":0,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/.json"}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:16:52.003 [print]
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:16:52.004 [print]
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:71 - javascript evaluation failed: response.EtfItemCollection.testRuns.TestRun.status, TypeError: Cannot read property "TestRun" from undefined in <eval> at line number 1
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1:1.265
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:16:48.357 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 10.077
13:16:48.358 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

13:16:58.433 response time in milliseconds: 9305.46
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:16:57 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:16:55 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/8c93f164-a867-40e9-a429-61e712b294d8.json","testRuns":{"TestRun":{"id":"EID8c93f164-a867-40e9-a429-61e712b294d8","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:16:54.252Z","testTasks":{"TestTask":{"id":"EIDd0583673-7a0d-4abe-ae82-bccc72c79b61","parent":{"ref":"EID8c93f164-a867-40e9-a429-61e712b294d8"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDb9781158-e2dc-4f45-9969-2e16ebea7f00"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID8c93f164-a867-40e9-a429-61e712b294d8/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDb9781158-e2dc-4f45-9969-2e16ebea7f00","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:16:48.802Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:16:51.55Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:16:58.436 [print] EID8c93f164-a867-40e9-a429-61e712b294d8
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:16:58.436 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:16:58.436 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:16:58.436 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/8c93f164-a867-40e9-a429-61e712b294d8.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:16:58.436 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID8c93f164-a867-40e9-a429-61e712b294d8/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:16:58.436 [print] statuspath TestRuns/EID8c93f164-a867-40e9-a429-61e712b294d8
* print 'progresspath ', progresspath 0.000
13:16:58.436 [print] progresspath  TestRuns/EID8c93f164-a867-40e9-a429-61e712b294d8/progress
Given path progresspath 0.000
When method GET 0.521
13:16:58.437 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8c93f164-a867-40e9-a429-61e712b294d8/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:58.958 response time in milliseconds: 519.79
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:16:58 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["27.10.2020 13:16:54 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:54 UTC 2020)","27.10.2020 13:16:54 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:54 - Preparing 1 Test Task:","27.10.2020 13:16:54 -  TestTask 1 (d0583673-7a0d-4abe-ae82-bccc72c79b61)","27.10.2020 13:16:54 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:54 -  with parameters: ","27.10.2020 13:16:54 - etf.testcases = *","27.10.2020 13:16:54 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:54 - Setting state to CREATED","27.10.2020 13:16:54 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:55 - Starting TestRun.8c93f164-a867-40e9-a429-61e712b294d8 at 2020-10-27T13:16:56Z","27.10.2020 13:16:56 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:16:57 - Project Properties: ","27.10.2020 13:16:57 - etf.testcases - * ","27.10.2020 13:16:57 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:16:57 - username -  ","27.10.2020 13:16:57 - authUser -  ","27.10.2020 13:16:57 - authMethod - basic ","27.10.2020 13:16:57 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:16:58.958 [print] {
  "val": "12",
  "max": "13",
  "log": [
    "27.10.2020 13:16:54 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:54 UTC 2020)",
    "27.10.2020 13:16:54 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:16:54 - Preparing 1 Test Task:",
    "27.10.2020 13:16:54 -  TestTask 1 (d0583673-7a0d-4abe-ae82-bccc72c79b61)",
    "27.10.2020 13:16:54 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:16:54 -  with parameters: ",
    "27.10.2020 13:16:54 - etf.testcases = *",
    "27.10.2020 13:16:54 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:16:54 - Setting state to CREATED",
    "27.10.2020 13:16:54 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:16:55 - Starting TestRun.8c93f164-a867-40e9-a429-61e712b294d8 at 2020-10-27T13:16:56Z",
    "27.10.2020 13:16:56 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:16:57 - Project Properties: ",
    "27.10.2020 13:16:57 - etf.testcases - * ",
    "27.10.2020 13:16:57 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "27.10.2020 13:16:57 - username -  ",
    "27.10.2020 13:16:57 - authUser -  ",
    "27.10.2020 13:16:57 - authMethod - basic ",
    "27.10.2020 13:16:57 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 20.303
13:16:58.959 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8c93f164-a867-40e9-a429-61e712b294d8/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:01.186 response time in milliseconds: 2226.67
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:17:01 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["27.10.2020 13:16:54 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:54 UTC 2020)","27.10.2020 13:16:54 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:54 - Preparing 1 Test Task:","27.10.2020 13:16:54 -  TestTask 1 (d0583673-7a0d-4abe-ae82-bccc72c79b61)","27.10.2020 13:16:54 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:54 -  with parameters: ","27.10.2020 13:16:54 - etf.testcases = *","27.10.2020 13:16:54 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:54 - Setting state to CREATED","27.10.2020 13:16:54 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:55 - Starting TestRun.8c93f164-a867-40e9-a429-61e712b294d8 at 2020-10-27T13:16:56Z","27.10.2020 13:16:56 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:16:57 - Project Properties: ","27.10.2020 13:16:57 - etf.testcases - * ","27.10.2020 13:16:57 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:16:57 - username -  ","27.10.2020 13:16:57 - authUser -  ","27.10.2020 13:16:57 - authMethod - basic ","27.10.2020 13:16:57 - TestRunTask initialized"]}

13:17:01.186 retry condition not satisfied: response.val == response.max
13:17:01.186 sleeping before retry #1
13:17:06.187 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8c93f164-a867-40e9-a429-61e712b294d8/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:06.715 response time in milliseconds: 526.96
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:17:06 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"63","max":"64","log":["27.10.2020 13:16:54 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:54 UTC 2020)","27.10.2020 13:16:54 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:54 - Preparing 1 Test Task:","27.10.2020 13:16:54 -  TestTask 1 (d0583673-7a0d-4abe-ae82-bccc72c79b61)","27.10.2020 13:16:54 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:54 -  with parameters: ","27.10.2020 13:16:54 - etf.testcases = *","27.10.2020 13:16:54 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:54 - Setting state to CREATED","27.10.2020 13:16:54 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:55 - Starting TestRun.8c93f164-a867-40e9-a429-61e712b294d8 at 2020-10-27T13:16:56Z","27.10.2020 13:16:56 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:16:57 - Project Properties: ","27.10.2020 13:16:57 - etf.testcases - * ","27.10.2020 13:16:57 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:16:57 - username -  ","27.10.2020 13:16:57 - authUser -  ","27.10.2020 13:16:57 - authMethod - basic ","27.10.2020 13:16:57 - TestRunTask initialized","27.10.2020 13:17:04 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:17:04 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:17:06 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027"]}

13:17:06.715 retry condition not satisfied: response.val == response.max
13:17:06.715 sleeping before retry #2
13:17:11.716 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8c93f164-a867-40e9-a429-61e712b294d8/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:12.238 response time in milliseconds: 521.46
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:17:12 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["27.10.2020 13:16:54 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:54 UTC 2020)","27.10.2020 13:16:54 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:54 - Preparing 1 Test Task:","27.10.2020 13:16:54 -  TestTask 1 (d0583673-7a0d-4abe-ae82-bccc72c79b61)","27.10.2020 13:16:54 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:54 -  with parameters: ","27.10.2020 13:16:54 - etf.testcases = *","27.10.2020 13:16:54 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:54 - Setting state to CREATED","27.10.2020 13:16:54 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:55 - Starting TestRun.8c93f164-a867-40e9-a429-61e712b294d8 at 2020-10-27T13:16:56Z","27.10.2020 13:16:56 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:16:57 - Project Properties: ","27.10.2020 13:16:57 - etf.testcases - * ","27.10.2020 13:16:57 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:16:57 - username -  ","27.10.2020 13:16:57 - authUser -  ","27.10.2020 13:16:57 - authMethod - basic ","27.10.2020 13:16:57 - TestRunTask initialized","27.10.2020 13:17:04 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:17:04 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:17:06 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:17:07 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:17:08 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:17:08 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:08 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:08 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:08 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:08 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:08 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:08 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:17:09 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:09 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:09 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:09 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:17:09 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:09 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:17:09 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:09 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:09 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:09 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:17:09 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:17:09 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:10 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:17:10 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:11 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:17:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:17:11 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:17:12.239 retry condition not satisfied: response.val == response.max
13:17:12.239 sleeping before retry #3
13:17:17.240 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8c93f164-a867-40e9-a429-61e712b294d8/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:19.261 response time in milliseconds: 2020.71
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:17:19 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:17:19.261 retry condition satisfied
* print response 0.000
13:17:19.261 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 30.361
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:67 - 
java.net.SocketTimeoutException: Read timed out
13:17:19.262 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8c93f164-a867-40e9-a429-61e712b294d8
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:49.622 java.net.SocketTimeoutException: Read timed out, http call failed after 30360 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8c93f164-a867-40e9-a429-61e712b294d8
13:17:49.622 http request failed: 
java.net.SocketTimeoutException: Read timed out
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
28.881
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:10:30.312 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 7.259
13:10:30.314 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

13:10:37.569 response time in milliseconds: 6513.61
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:10:36 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:10:34 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/a7d72319-9376-4bab-b3ee-7243a71d6853.json","testRuns":{"TestRun":{"id":"EIDa7d72319-9376-4bab-b3ee-7243a71d6853","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:10:33.769Z","testTasks":{"TestTask":{"id":"EID2cf7efca-c7f7-4fe1-bc6d-0fd4a7a02185","parent":{"ref":"EIDa7d72319-9376-4bab-b3ee-7243a71d6853"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID52131c82-76ed-4080-a7f8-92481ea0cafd"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa7d72319-9376-4bab-b3ee-7243a71d6853/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID52131c82-76ed-4080-a7f8-92481ea0cafd","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:10:30.755Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:10:33.231Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.002
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:10:37.576 [print] EIDa7d72319-9376-4bab-b3ee-7243a71d6853
* print response.EtfItemCollection.testRuns.TestRun.status 0.002
13:10:37.578 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:10:37.578 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.003
13:10:37.582 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/a7d72319-9376-4bab-b3ee-7243a71d6853.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:10:37.583 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa7d72319-9376-4bab-b3ee-7243a71d6853/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:10:37.584 [print] statuspath TestRuns/EIDa7d72319-9376-4bab-b3ee-7243a71d6853
* print 'progresspath ', progresspath 0.002
13:10:37.586 [print] progresspath  TestRuns/EIDa7d72319-9376-4bab-b3ee-7243a71d6853/progress
Given path progresspath 0.000
When method GET 0.556
13:10:37.588 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa7d72319-9376-4bab-b3ee-7243a71d6853/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:38.143 response time in milliseconds: 554.30
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:10:38 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["27.10.2020 13:10:33 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:33 UTC 2020)","27.10.2020 13:10:33 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:33 - Preparing 1 Test Task:","27.10.2020 13:10:33 -  TestTask 1 (2cf7efca-c7f7-4fe1-bc6d-0fd4a7a02185)","27.10.2020 13:10:33 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:33 -  with parameters: ","27.10.2020 13:10:33 - etf.testcases = *","27.10.2020 13:10:33 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:33 - Setting state to CREATED","27.10.2020 13:10:33 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:34 - Starting TestRun.a7d72319-9376-4bab-b3ee-7243a71d6853 at 2020-10-27T13:10:35Z","27.10.2020 13:10:35 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:36 - Project Properties: ","27.10.2020 13:10:36 - etf.testcases - * ","27.10.2020 13:10:36 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:10:36 - username -  ","27.10.2020 13:10:36 - authUser -  ","27.10.2020 13:10:36 - authMethod - basic ","27.10.2020 13:10:36 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:10:38.143 [print] {
  "val": "21",
  "max": "22",
  "log": [
    "27.10.2020 13:10:33 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:33 UTC 2020)",
    "27.10.2020 13:10:33 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:10:33 - Preparing 1 Test Task:",
    "27.10.2020 13:10:33 -  TestTask 1 (2cf7efca-c7f7-4fe1-bc6d-0fd4a7a02185)",
    "27.10.2020 13:10:33 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:10:33 -  with parameters: ",
    "27.10.2020 13:10:33 - etf.testcases = *",
    "27.10.2020 13:10:33 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:10:33 - Setting state to CREATED",
    "27.10.2020 13:10:33 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:10:34 - Starting TestRun.a7d72319-9376-4bab-b3ee-7243a71d6853 at 2020-10-27T13:10:35Z",
    "27.10.2020 13:10:35 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:10:36 - Project Properties: ",
    "27.10.2020 13:10:36 - etf.testcases - * ",
    "27.10.2020 13:10:36 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "27.10.2020 13:10:36 - username -  ",
    "27.10.2020 13:10:36 - authUser -  ",
    "27.10.2020 13:10:36 - authMethod - basic ",
    "27.10.2020 13:10:36 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 17.145
13:10:38.144 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa7d72319-9376-4bab-b3ee-7243a71d6853/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:38.690 response time in milliseconds: 544.87
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:10:38 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"25","max":"26","log":["27.10.2020 13:10:33 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:33 UTC 2020)","27.10.2020 13:10:33 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:33 - Preparing 1 Test Task:","27.10.2020 13:10:33 -  TestTask 1 (2cf7efca-c7f7-4fe1-bc6d-0fd4a7a02185)","27.10.2020 13:10:33 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:33 -  with parameters: ","27.10.2020 13:10:33 - etf.testcases = *","27.10.2020 13:10:33 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:33 - Setting state to CREATED","27.10.2020 13:10:33 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:34 - Starting TestRun.a7d72319-9376-4bab-b3ee-7243a71d6853 at 2020-10-27T13:10:35Z","27.10.2020 13:10:35 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:36 - Project Properties: ","27.10.2020 13:10:36 - etf.testcases - * ","27.10.2020 13:10:36 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:10:36 - username -  ","27.10.2020 13:10:36 - authUser -  ","27.10.2020 13:10:36 - authMethod - basic ","27.10.2020 13:10:36 - TestRunTask initialized"]}

13:10:38.694 retry condition not satisfied: response.val == response.max
13:10:38.694 sleeping before retry #1
13:10:43.695 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa7d72319-9376-4bab-b3ee-7243a71d6853/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:44.244 response time in milliseconds: 548.16
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:10:44 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"73","max":"74","log":["27.10.2020 13:10:33 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:33 UTC 2020)","27.10.2020 13:10:33 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:33 - Preparing 1 Test Task:","27.10.2020 13:10:33 -  TestTask 1 (2cf7efca-c7f7-4fe1-bc6d-0fd4a7a02185)","27.10.2020 13:10:33 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:33 -  with parameters: ","27.10.2020 13:10:33 - etf.testcases = *","27.10.2020 13:10:33 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:33 - Setting state to CREATED","27.10.2020 13:10:33 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:34 - Starting TestRun.a7d72319-9376-4bab-b3ee-7243a71d6853 at 2020-10-27T13:10:35Z","27.10.2020 13:10:35 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:36 - Project Properties: ","27.10.2020 13:10:36 - etf.testcases - * ","27.10.2020 13:10:36 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:10:36 - username -  ","27.10.2020 13:10:36 - authUser -  ","27.10.2020 13:10:36 - authMethod - basic ","27.10.2020 13:10:36 - TestRunTask initialized","27.10.2020 13:10:40 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:10:40 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:10:42 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027"]}

13:10:44.245 retry condition not satisfied: response.val == response.max
13:10:44.245 sleeping before retry #2
13:10:49.246 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa7d72319-9376-4bab-b3ee-7243a71d6853/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:49.770 response time in milliseconds: 522.28
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:10:49 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["27.10.2020 13:10:33 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:33 UTC 2020)","27.10.2020 13:10:33 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:33 - Preparing 1 Test Task:","27.10.2020 13:10:33 -  TestTask 1 (2cf7efca-c7f7-4fe1-bc6d-0fd4a7a02185)","27.10.2020 13:10:33 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:33 -  with parameters: ","27.10.2020 13:10:33 - etf.testcases = *","27.10.2020 13:10:33 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:33 - Setting state to CREATED","27.10.2020 13:10:33 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:34 - Starting TestRun.a7d72319-9376-4bab-b3ee-7243a71d6853 at 2020-10-27T13:10:35Z","27.10.2020 13:10:35 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:36 - Project Properties: ","27.10.2020 13:10:36 - etf.testcases - * ","27.10.2020 13:10:36 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:10:36 - username -  ","27.10.2020 13:10:36 - authUser -  ","27.10.2020 13:10:36 - authMethod - basic ","27.10.2020 13:10:36 - TestRunTask initialized","27.10.2020 13:10:40 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:10:40 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:10:42 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:10:44 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:10:45 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:10:45 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:10:45 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:10:45 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:10:45 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:10:45 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:10:45 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:10:45 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:10:45 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:10:45 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:10:46 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:10:46 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:10:46 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:10:46 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:10:46 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:10:46 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:10:46 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:10:46 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:10:46 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:10:46 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:10:46 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:10:47 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:10:48 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:10:48 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:10:48 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:10:48 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:10:49.771 retry condition not satisfied: response.val == response.max
13:10:49.771 sleeping before retry #3
13:10:54.772 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa7d72319-9376-4bab-b3ee-7243a71d6853/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:55.286 response time in milliseconds: 513.00
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:10:55 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"100","max":"100","log":["Already completed"]}

13:10:55.289 retry condition satisfied
* print response 0.000
13:10:55.290 [print] {
  "val": "100",
  "max": "100",
  "log": [
    "Already completed"
  ]
}
Given path statuspath 0.000
When method GET 3.827
13:10:55.293 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDa7d72319-9376-4bab-b3ee-7243a71d6853
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:59.113 response time in milliseconds: 2834.61
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Cache-Control: public, max-age=120
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:10:58 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Last-Modified: Tue, 27 Oct 2020 13:10:51 GMT
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/a7d72319-9376-4bab-b3ee-7243a71d6853.json","testRuns":{"TestRun":{"id":"EIDa7d72319-9376-4bab-b3ee-7243a71d6853","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:10:33.769Z","testTasks":{"TestTask":{"id":"EID2cf7efca-c7f7-4fe1-bc6d-0fd4a7a02185","parent":{"ref":"EIDa7d72319-9376-4bab-b3ee-7243a71d6853"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID52131c82-76ed-4080-a7f8-92481ea0cafd"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EIDd6892932-13d3-4636-85ac-8d838c1e6260"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa7d72319-9376-4bab-b3ee-7243a71d6853/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID52131c82-76ed-4080-a7f8-92481ea0cafd","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:10:30.755Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:10:33.231Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EIDd6892932-13d3-4636-85ac-8d838c1e6260","testObject":{"ref":"EID52131c82-76ed-4080-a7f8-92481ea0cafd"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a2e88f8-0175-1000-be06-1f4d875a8743","testCaseResults":{"TestCaseResult":[{"id":"EID6a2e88f8-0175-1000-2bb4-f7569a00c442","testStepResults":{"TestStepResult":[{"id":"EID6a2e88f8-0175-1000-7940-2c08bf211fd5","parent":{"ref":"EID6a2e88f8-0175-1000-2bb4-f7569a00c442"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:10:36Z","duration":24,"status":"PASSED"},{"id":"EID6a2e8911-0175-1000-0f2d-0702593d5550","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e8ac2-0175-1000-2aad-5849655a3449","parent":{"ref":"EID6a2e8911-0175-1000-0f2d-0702593d5550"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:10:36Z","duration":0,"status":"PASSED"},{"id":"EID6a2e8ac2-0175-1000-6cf3-97981af9f2d3","parent":{"ref":"EID6a2e8911-0175-1000-0f2d-0702593d5550"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:10:36Z","duration":0,"status":"PASSED"},{"id":"EID6a2e8ac2-0175-1000-b3fd-9fe0054a2c94","parent":{"ref":"EID6a2e8911-0175-1000-0f2d-0702593d5550"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:10:36Z","duration":0,"status":"PASSED"},{"id":"EID6a2e8ac2-0175-1000-fd6a-92de0e246a84","parent":{"ref":"EID6a2e8911-0175-1000-0f2d-0702593d5550"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:10:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa90aa8e9-2f16-4368-9250-e5512ad77e87"},{"ref":"EIDf0d37e24-8959-41b2-8ef7-a216715e5eae"},{"ref":"EID287ce000-7fa6-4229-b126-5ec96457898a"}]},"parent":{"ref":"EID6a2e88f8-0175-1000-2bb4-f7569a00c442"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:10:36Z","duration":211,"status":"PASSED"}]},"parent":{"ref":"EID6a2e88f8-0175-1000-be06-1f4d875a8743"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:10:36Z","duration":467,"status":"PASSED"},{"id":"EID6a2e8acc-0175-1000-74d5-28fb339f2850","testStepResults":{"TestStepResult":{"id":"EID6a2e8acc-0175-1000-d418-f1c49cab27bf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e8bee-0175-1000-9dba-e3caa4a84f8a","parent":{"ref":"EID6a2e8acc-0175-1000-d418-f1c49cab27bf"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:10:36Z","duration":0,"status":"PASSED"},{"id":"EID6a2e8bee-0175-1000-e346-9ea610d5a27a","parent":{"ref":"EID6a2e8acc-0175-1000-d418-f1c49cab27bf"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:10:36Z","duration":0,"status":"PASSED"},{"id":"EID6a2e8bee-0175-1000-eb5f-00669d70dcd9","parent":{"ref":"EID6a2e8acc-0175-1000-d418-f1c49cab27bf"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:10:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0b485cd1-7239-4a04-9a3a-a8bac78d8f93"},{"ref":"EID1cddda9e-02be-4730-9993-6c31c993d13e"},{"ref":"EID806484ec-e38b-4aef-bb24-660b20606def"}]},"parent":{"ref":"EID6a2e8acc-0175-1000-74d5-28fb339f2850"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:10:36Z","duration":123,"status":"PASSED"}},"parent":{"ref":"EID6a2e88f8-0175-1000-be06-1f4d875a8743"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:10:36Z","duration":299,"status":"PASSED"}]},"parent":{"ref":"EIDd6892932-13d3-4636-85ac-8d838c1e6260"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:10:36Z","duration":767,"status":"PASSED"},{"id":"EID6a2e8bf7-0175-1000-11fd-b7ccdf404973","testCaseResults":{"TestCaseResult":[{"id":"EID6a2e8bf8-0175-1000-7b38-5eef86b934b3","testStepResults":{"TestStepResult":[{"id":"EID6a2e8bf8-0175-1000-f47e-f63b79705ba8","parent":{"ref":"EID6a2e8bf8-0175-1000-7b38-5eef86b934b3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:10:36Z","duration":123,"status":"PASSED"},{"id":"EID6a2e8bf8-0175-1000-58c6-5df52d999dfb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e8cff-0175-1000-03cf-3ca77347650c","parent":{"ref":"EID6a2e8bf8-0175-1000-58c6-5df52d999dfb"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:10:37Z","duration":0,"status":"PASSED"},{"id":"EID6a2e8cff-0175-1000-3fb6-ab18f63f6fdd","parent":{"ref":"EID6a2e8bf8-0175-1000-58c6-5df52d999dfb"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:10:37Z","duration":0,"status":"PASSED"},{"id":"EID6a2e8cff-0175-1000-46e0-92c5f5e55277","parent":{"ref":"EID6a2e8bf8-0175-1000-58c6-5df52d999dfb"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:10:37Z","duration":0,"status":"PASSED"},{"id":"EID6a2e8cff-0175-1000-a104-f9f2daeec8de","parent":{"ref":"EID6a2e8bf8-0175-1000-58c6-5df52d999dfb"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:10:37Z","duration":0,"status":"PASSED"},{"id":"EID6a2e8cff-0175-1000-8f39-10cc200350dd","parent":{"ref":"EID6a2e8bf8-0175-1000-58c6-5df52d999dfb"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:10:37Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbed61bf1-2b17-4337-a430-33f3953c683e"},{"ref":"EIDed6ee06a-9499-4be6-8361-e0bd14115124"},{"ref":"EID441dd302-e070-4f8f-9f07-03463c3223d9"}]},"parent":{"ref":"EID6a2e8bf8-0175-1000-7b38-5eef86b934b3"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:10:36Z","duration":68,"status":"PASSED"}]},"parent":{"ref":"EID6a2e8bf7-0175-1000-11fd-b7ccdf404973"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:10:36Z","duration":263,"status":"PASSED"},{"id":"EID6a2e8d17-0175-1000-2a24-c534c180232e","testStepResults":{"TestStepResult":[{"id":"EID6a2e8d17-0175-1000-481e-7f30adc0ebc2","attachments":{"attachment":[{"ref":"EID39959f06-1a77-456f-aaf8-116da0664677"},{"ref":"EIDcc693871-876e-45bd-9b5e-28a58fb3fb7e"}]},"parent":{"ref":"EID6a2e8d17-0175-1000-2a24-c534c180232e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:10:37Z","duration":105,"status":"PASSED"},{"id":"EID6a2e8dc4-0175-1000-2ba3-7e0f4d325a40","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e8e98-0175-1000-fa75-aeb863801eed","parent":{"ref":"EID6a2e8dc4-0175-1000-2ba3-7e0f4d325a40"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:10:37Z","duration":0,"status":"PASSED"},{"id":"EID6a2e8e98-0175-1000-3ab3-cdd57f1ef59c","parent":{"ref":"EID6a2e8dc4-0175-1000-2ba3-7e0f4d325a40"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:10:37Z","duration":0,"status":"PASSED"},{"id":"EID6a2e8e98-0175-1000-ecf0-ccab88044f5b","parent":{"ref":"EID6a2e8dc4-0175-1000-2ba3-7e0f4d325a40"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:10:37Z","duration":0,"status":"PASSED"},{"id":"EID6a2e8e98-0175-1000-1cf8-cdddee27ccf3","parent":{"ref":"EID6a2e8dc4-0175-1000-2ba3-7e0f4d325a40"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:10:37Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID26988d9a-909e-4720-8a88-95b79a91110a"},{"ref":"EID6880918b-758a-4651-a182-816c2b8fc40c"},{"ref":"EID5b81892d-24bc-449c-bdfa-e78b5a1ccd59"}]},"parent":{"ref":"EID6a2e8d17-0175-1000-2a24-c534c180232e"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:10:37Z","duration":97,"status":"PASSED"}]},"parent":{"ref":"EID6a2e8bf7-0175-1000-11fd-b7ccdf404973"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:10:37Z","duration":400,"status":"PASSED"},{"id":"EID6a2e8ea7-0175-1000-1018-376bb4d35f76","testStepResults":{"TestStepResult":[{"id":"EID6a2e8ea7-0175-1000-71f2-59af2d125973","attachments":{"attachment":[{"ref":"EID1b9d027e-6e1f-451f-8344-c3b874059a11"},{"ref":"EIDf926abf0-ffbd-4193-a3ac-65f0edbe3133"}]},"parent":{"ref":"EID6a2e8ea7-0175-1000-1018-376bb4d35f76"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:10:37Z","duration":206,"status":"PASSED"},{"id":"EID6a2e8f9b-0175-1000-d46d-972a58175287","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e905b-0175-1000-ffd9-df58bbf6485d","parent":{"ref":"EID6a2e8f9b-0175-1000-d46d-972a58175287"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:10:37Z","duration":0,"status":"PASSED"},{"id":"EID6a2e905b-0175-1000-c6a1-3eef14323368","parent":{"ref":"EID6a2e8f9b-0175-1000-d46d-972a58175287"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:10:37Z","duration":0,"status":"PASSED"},{"id":"EID6a2e905b-0175-1000-0cd1-521f166a22d3","parent":{"ref":"EID6a2e8f9b-0175-1000-d46d-972a58175287"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:10:37Z","duration":0,"status":"PASSED"},{"id":"EID6a2e905b-0175-1000-46ce-19e14e1d327d","parent":{"ref":"EID6a2e8f9b-0175-1000-d46d-972a58175287"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:10:37Z","duration":0,"status":"PASSED"},{"id":"EID6a2e905b-0175-1000-a73c-235a9b321ef6","parent":{"ref":"EID6a2e8f9b-0175-1000-d46d-972a58175287"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:10:37Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID260399ee-c92c-495c-b165-a01cb093d11e"},{"ref":"EIDcad704f6-149a-41d7-9303-6ce553986ce2"},{"ref":"EID30cb70e4-e4e9-4568-b3b6-647f7f91a292"}]},"parent":{"ref":"EID6a2e8ea7-0175-1000-1018-376bb4d35f76"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:10:37Z","duration":59,"status":"PASSED"}]},"parent":{"ref":"EID6a2e8bf7-0175-1000-11fd-b7ccdf404973"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:10:37Z","duration":436,"status":"PASSED"},{"id":"EID6a2e905c-0175-1000-5430-a8c87fc72ee3","testStepResults":{"TestStepResult":[{"id":"EID6a2e9066-0175-1000-3b34-65a109e26e30","attachments":{"attachment":[{"ref":"EID141932d2-92b4-4852-b721-b046e2cde8a3"},{"ref":"EID891d14f9-fbd9-4d9e-b039-bdccb471a647"}]},"parent":{"ref":"EID6a2e905c-0175-1000-5430-a8c87fc72ee3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:10:37Z","duration":294,"status":"PASSED"},{"id":"EID6a2e91b8-0175-1000-eb11-d3cd86361eea","parent":{"ref":"EID6a2e905c-0175-1000-5430-a8c87fc72ee3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:10:38Z","duration":0,"status":"PASSED"},{"id":"EID6a2e91b8-0175-1000-bd8c-7e2398279ccd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e9275-0175-1000-8ee6-948617720bc1","parent":{"ref":"EID6a2e91b8-0175-1000-bd8c-7e2398279ccd"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:10:38Z","duration":0,"status":"PASSED"},{"id":"EID6a2e9275-0175-1000-20f0-0858707cd6d0","parent":{"ref":"EID6a2e91b8-0175-1000-bd8c-7e2398279ccd"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:10:38Z","duration":0,"status":"PASSED"},{"id":"EID6a2e9275-0175-1000-4b31-bc2eb977946f","parent":{"ref":"EID6a2e91b8-0175-1000-bd8c-7e2398279ccd"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:10:38Z","duration":0,"status":"PASSED"},{"id":"EID6a2e9275-0175-1000-adbc-cfd920412604","parent":{"ref":"EID6a2e91b8-0175-1000-bd8c-7e2398279ccd"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:10:38Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDff3221cf-18d1-44ea-9621-5037f15f163e"},{"ref":"EID9ebe977a-3dbd-467b-8966-f20995f35337"},{"ref":"EIDcb62b208-3dbd-4745-b56c-0633b69a8399"}]},"parent":{"ref":"EID6a2e905c-0175-1000-5430-a8c87fc72ee3"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:10:38Z","duration":60,"status":"PASSED"},{"id":"EID6a2e927f-0175-1000-3ac5-5a3814db2c0a","attachments":{"attachment":{"ref":"EIDf67bbb35-6bdb-40c0-9a32-68e8ddd771fc"}},"parent":{"ref":"EID6a2e905c-0175-1000-5430-a8c87fc72ee3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:10:38Z","duration":2,"status":"PASSED"},{"id":"EID6a2e929a-0175-1000-4b57-0489c099fd50","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e93c5-0175-1000-c2d5-8706e2a58722","parent":{"ref":"EID6a2e929a-0175-1000-4b57-0489c099fd50"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:10:38Z","duration":0,"status":"PASSED"},{"id":"EID6a2e93c5-0175-1000-504a-0d00bda2a54f","parent":{"ref":"EID6a2e929a-0175-1000-4b57-0489c099fd50"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:10:38Z","duration":0,"status":"PASSED"},{"id":"EID6a2e93c5-0175-1000-6e26-96f54084ec7d","parent":{"ref":"EID6a2e929a-0175-1000-4b57-0489c099fd50"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:10:38Z","duration":0,"status":"PASSED"},{"id":"EID6a2e93c5-0175-1000-27b9-9b221f4d5e20","parent":{"ref":"EID6a2e929a-0175-1000-4b57-0489c099fd50"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:10:38Z","duration":0,"status":"PASSED"},{"id":"EID6a2e93c5-0175-1000-40bc-f99d1ff65d09","parent":{"ref":"EID6a2e929a-0175-1000-4b57-0489c099fd50"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:10:38Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5fab36d8-e6c8-4c5c-887c-52bc3ef49dbe"},{"ref":"EID8a5139e4-dee7-4738-b2cb-a331a8e39395"},{"ref":"EIDefe44298-d07f-4140-b94c-899d43db93ce"}]},"parent":{"ref":"EID6a2e905c-0175-1000-5430-a8c87fc72ee3"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:10:38Z","duration":126,"status":"PASSED"}]},"parent":{"ref":"EID6a2e8bf7-0175-1000-11fd-b7ccdf404973"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:10:37Z","duration":881,"status":"PASSED"},{"id":"EID6a2e93cd-0175-1000-0cbc-e70948544a7a","testStepResults":{"TestStepResult":[{"id":"EID6a2e93cd-0175-1000-8615-495637c4c70e","attachments":{"attachment":[{"ref":"EIDaf5fac0e-0b54-47a2-b00c-79e1c59ffe29"},{"ref":"EID1f97c4fc-7289-427f-9c74-4a59906169d6"}]},"parent":{"ref":"EID6a2e93cd-0175-1000-0cbc-e70948544a7a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:10:38Z","duration":108,"status":"PASSED"},{"id":"EID6a2e9465-0175-1000-7178-342cbee57802","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e95f2-0175-1000-574f-4efd3a6bb8a2","parent":{"ref":"EID6a2e9465-0175-1000-7178-342cbee57802"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:10:39Z","duration":0,"status":"PASSED"},{"id":"EID6a2e95f2-0175-1000-ee67-04c0d19698e0","parent":{"ref":"EID6a2e9465-0175-1000-7178-342cbee57802"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:10:39Z","duration":0,"status":"PASSED"},{"id":"EID6a2e95f2-0175-1000-3c1e-fdf6aace4562","parent":{"ref":"EID6a2e9465-0175-1000-7178-342cbee57802"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:10:39Z","duration":0,"status":"PASSED"},{"id":"EID6a2e95f2-0175-1000-008b-9f5caee2428f","parent":{"ref":"EID6a2e9465-0175-1000-7178-342cbee57802"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:10:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfe0fdd83-db26-4e83-9be1-68af40ef2787"},{"ref":"EID1676639b-2ed0-4657-b94e-3c824ef6f35f"},{"ref":"EID0bfbb6d6-2f62-4026-ac51-5030f88e1a4e"}]},"parent":{"ref":"EID6a2e93cd-0175-1000-0cbc-e70948544a7a"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:10:38Z","duration":170,"status":"PASSED"}]},"parent":{"ref":"EID6a2e8bf7-0175-1000-11fd-b7ccdf404973"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:10:38Z","duration":549,"status":"PASSED"},{"id":"EID6a2e95f2-0175-1000-7502-ac75028a135e","testStepResults":{"TestStepResult":[{"id":"EID6a2e95f2-0175-1000-815e-cadcc739c5f4","attachments":{"attachment":[{"ref":"EIDb3a06a14-4752-4eea-aa5a-cc6f19b81f1e"},{"ref":"EIDf0874f2c-0fe7-41db-a0b6-2d17d5badefc"}]},"parent":{"ref":"EID6a2e95f2-0175-1000-7502-ac75028a135e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:10:39Z","duration":161,"status":"PASSED"},{"id":"EID6a2e96c0-0175-1000-4f6e-0bf9b539c355","parent":{"ref":"EID6a2e95f2-0175-1000-7502-ac75028a135e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:10:39Z","duration":0,"status":"PASSED"},{"id":"EID6a2e96c0-0175-1000-dba4-e4895ed3f4b2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e987c-0175-1000-c18d-a61921792821","parent":{"ref":"EID6a2e96c0-0175-1000-dba4-e4895ed3f4b2"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:10:39Z","duration":0,"status":"PASSED"},{"id":"EID6a2e987c-0175-1000-2afb-b475ee1267bc","parent":{"ref":"EID6a2e96c0-0175-1000-dba4-e4895ed3f4b2"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:10:39Z","duration":0,"status":"PASSED"},{"id":"EID6a2e987c-0175-1000-db3e-e18296b10174","parent":{"ref":"EID6a2e96c0-0175-1000-dba4-e4895ed3f4b2"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:10:39Z","duration":0,"status":"PASSED"},{"id":"EID6a2e987c-0175-1000-f346-a42b0adc1b2b","parent":{"ref":"EID6a2e96c0-0175-1000-dba4-e4895ed3f4b2"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:10:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID95dd8087-0aec-4767-b4b4-9384337f0020"},{"ref":"EIDd3824e59-3998-4c0c-841b-d010564304bf"},{"ref":"EID384d13a6-2923-460d-ae42-c62c4c466deb"}]},"parent":{"ref":"EID6a2e95f2-0175-1000-7502-ac75028a135e"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:10:39Z","duration":186,"status":"PASSED"},{"id":"EID6a2e9889-0175-1000-0914-d34114d72dc4","attachments":{"attachment":{"ref":"EID668ed1f3-5f0e-4ca2-87b9-d133516c717f"}},"parent":{"ref":"EID6a2e95f2-0175-1000-7502-ac75028a135e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:10:40Z","duration":1,"status":"PASSED"},{"id":"EID6a2e9895-0175-1000-1755-3b85dbe57350","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e9aa6-0175-1000-e502-603d5cab8783","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a2e9895-0175-1000-1755-3b85dbe57350"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:10:40Z","duration":12,"status":"FAILED"},{"id":"EID6a2e9ab3-0175-1000-757a-07dfa5caff0d","parent":{"ref":"EID6a2e9895-0175-1000-1755-3b85dbe57350"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:10:40Z","duration":0,"status":"PASSED"},{"id":"EID6a2e9ab3-0175-1000-52c6-7305cac8e193","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6a2e9895-0175-1000-1755-3b85dbe57350"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:10:40Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID17fb69fd-a8e3-47d4-83c8-6647c58a22fb"},{"ref":"EIDc12e4ca9-b310-4fdf-bc98-597f39770e47"},{"ref":"EIDd7ed3448-2064-4641-bd5a-581fbee6bd1e"}]},"parent":{"ref":"EID6a2e95f2-0175-1000-7502-ac75028a135e"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:10:40Z","duration":384,"status":"FAILED"}]},"parent":{"ref":"EID6a2e8bf7-0175-1000-11fd-b7ccdf404973"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:10:39Z","duration":1217,"status":"FAILED"},{"id":"EID6a2e9ab3-0175-1000-c386-516e8a658b60","testStepResults":{"TestStepResult":[{"id":"EID6a2e9ab3-0175-1000-e4bf-49d28164d6f9","attachments":{"attachment":[{"ref":"EID0b3f9c3f-7a32-46db-9dd0-baa53ac1369b"},{"ref":"EID9def3d72-295f-4b41-98b8-66784a81d16d"}]},"parent":{"ref":"EID6a2e9ab3-0175-1000-c386-516e8a658b60"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:10:40Z","duration":327,"status":"PASSED"},{"id":"EID6a2e9c22-0175-1000-3c01-42eb9a135c40","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e9d1f-0175-1000-3c96-20c7bb1061d0","parent":{"ref":"EID6a2e9c22-0175-1000-3c01-42eb9a135c40"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:10:41Z","duration":0,"status":"PASSED"},{"id":"EID6a2e9d1f-0175-1000-a2b7-6775761b9eac","parent":{"ref":"EID6a2e9c22-0175-1000-3c01-42eb9a135c40"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:10:41Z","duration":0,"status":"PASSED"},{"id":"EID6a2e9d1f-0175-1000-0a84-bc781f766d7f","parent":{"ref":"EID6a2e9c22-0175-1000-3c01-42eb9a135c40"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:10:41Z","duration":0,"status":"PASSED"},{"id":"EID6a2e9d1f-0175-1000-7129-a2b3e80e6800","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a2e9c22-0175-1000-3c01-42eb9a135c40"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:10:41Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID531af7fa-7273-4579-b360-faaa053014bd"},{"ref":"EIDf5d01a99-5498-4a9c-9f81-4036aad264b1"},{"ref":"EID120944a6-fd8d-4d17-a458-e5f2bbe02571"}]},"parent":{"ref":"EID6a2e9ab3-0175-1000-c386-516e8a658b60"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:10:40Z","duration":79,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a2e8bf7-0175-1000-11fd-b7ccdf404973"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:10:40Z","duration":620,"status":"PASSED_MANUAL"},{"id":"EID6a2e9d1f-0175-1000-fa0a-98aa6934d82e","testStepResults":{"TestStepResult":{"id":"EID6a2e9d29-0175-1000-5a31-073f7d54d689","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e9e38-0175-1000-cbff-bf601cbf9775","parent":{"ref":"EID6a2e9d29-0175-1000-5a31-073f7d54d689"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:10:41Z","duration":0,"status":"PASSED"},{"id":"EID6a2e9e38-0175-1000-299f-2f40bd4a275c","parent":{"ref":"EID6a2e9d29-0175-1000-5a31-073f7d54d689"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:10:41Z","duration":0,"status":"PASSED"},{"id":"EID6a2e9e38-0175-1000-e04f-8c13f304f456","parent":{"ref":"EID6a2e9d29-0175-1000-5a31-073f7d54d689"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:10:41Z","duration":0,"status":"PASSED"},{"id":"EID6a2e9e38-0175-1000-96f8-fb5a5c6fd563","parent":{"ref":"EID6a2e9d29-0175-1000-5a31-073f7d54d689"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:10:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf8d0d268-3c3e-480f-bf55-427268a0a45a"},{"ref":"EID6d49f59c-e3d0-4719-8dc3-cc644d64864f"},{"ref":"EID13659eb3-1710-4350-a522-3b7b8b6aeae3"}]},"parent":{"ref":"EID6a2e9d1f-0175-1000-fa0a-98aa6934d82e"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:10:41Z","duration":38,"status":"PASSED"}},"parent":{"ref":"EID6a2e8bf7-0175-1000-11fd-b7ccdf404973"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:10:41Z","duration":281,"status":"PASSED"},{"id":"EID6a2e9e38-0175-1000-d585-df439a85126d","testStepResults":{"TestStepResult":{"id":"EID6a2e9e38-0175-1000-5be3-dbc39ddc15b8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e9eef-0175-1000-bdfd-8630adfe3665","parent":{"ref":"EID6a2e9e38-0175-1000-5be3-dbc39ddc15b8"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:10:41Z","duration":0,"status":"PASSED"},{"id":"EID6a2e9eef-0175-1000-8dbc-07b636234535","parent":{"ref":"EID6a2e9e38-0175-1000-5be3-dbc39ddc15b8"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:10:41Z","duration":0,"status":"PASSED"},{"id":"EID6a2e9eef-0175-1000-d226-dae20bf27fae","parent":{"ref":"EID6a2e9e38-0175-1000-5be3-dbc39ddc15b8"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:10:41Z","duration":0,"status":"PASSED"},{"id":"EID6a2e9eef-0175-1000-504c-470b9df21b4b","parent":{"ref":"EID6a2e9e38-0175-1000-5be3-dbc39ddc15b8"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:10:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID56345361-9d8f-46d4-9c8e-daed00c33c07"},{"ref":"EID87644417-bf15-475a-be7c-8f00dc3a3838"},{"ref":"EIDea7de182-0863-4c8e-9ff4-ed9ce1c6794e"}]},"parent":{"ref":"EID6a2e9e38-0175-1000-d585-df439a85126d"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:10:41Z","duration":80,"status":"PASSED"}},"parent":{"ref":"EID6a2e8bf7-0175-1000-11fd-b7ccdf404973"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:10:41Z","duration":192,"status":"PASSED"},{"id":"EID6a2e9ef9-0175-1000-d949-e06edd63096c","testStepResults":{"TestStepResult":{"id":"EID6a2e9ef9-0175-1000-cc06-32270f97b612","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EID74799d74-3c58-4424-a694-297acfeaace5"},{"ref":"EIDbf9cfd6d-bde6-40cd-96b1-841863f5328c"},{"ref":"EID88ae5592-3843-4813-8597-746228293c45"},{"ref":"EID7dc283b3-d8b4-42cc-abd3-17b3e58b3ce9"},{"ref":"EIDa015baa4-3eea-4d82-a0b5-ed43df12a1c2"},{"ref":"EIDe5e01f75-ecc5-47c2-bcdf-99e285679040"},{"ref":"EID0a0104b4-bdfa-4c50-9266-a6e35909715f"},{"ref":"EID0d60889d-45ba-4802-af4c-4abd692b71ff"},{"ref":"EID33697881-1343-41ad-8de7-eda05840ec5e"}]},"parent":{"ref":"EID6a2e9ef9-0175-1000-d949-e06edd63096c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:10:41Z","duration":638,"status":"SKIPPED"}},"parent":{"ref":"EID6a2e8bf7-0175-1000-11fd-b7ccdf404973"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:10:41Z","duration":752,"status":"SKIPPED"},{"id":"EID6a2ea1ea-0175-1000-9e97-5f7a8f67a6b2","testStepResults":{"TestStepResult":{"id":"EID6a2ea1f4-0175-1000-5ea4-0c10f71bd3a2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ea333-0175-1000-5390-c7013a09adef","parent":{"ref":"EID6a2ea1f4-0175-1000-5ea4-0c10f71bd3a2"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:10:42Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea333-0175-1000-200b-9ae4896ecca0","parent":{"ref":"EID6a2ea1f4-0175-1000-5ea4-0c10f71bd3a2"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:10:42Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea333-0175-1000-6306-d5538a3b87a8","parent":{"ref":"EID6a2ea1f4-0175-1000-5ea4-0c10f71bd3a2"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:10:42Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea333-0175-1000-90db-a26d7a06241b","parent":{"ref":"EID6a2ea1f4-0175-1000-5ea4-0c10f71bd3a2"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:10:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID557b0835-ea6f-46cb-abdf-c46c090f452e"},{"ref":"EID39725fb1-ddc5-40de-b4e2-aec5526fcbc1"},{"ref":"EIDfdd45ece-9a02-42be-a264-88b22d84e958"}]},"parent":{"ref":"EID6a2ea1ea-0175-1000-9e97-5f7a8f67a6b2"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:10:42Z","duration":71,"status":"PASSED"}},"parent":{"ref":"EID6a2e8bf7-0175-1000-11fd-b7ccdf404973"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:10:42Z","duration":329,"status":"PASSED"},{"id":"EID6a2ea334-0175-1000-dd6b-4d605c2df467","testStepResults":{"TestStepResult":{"id":"EID6a2ea334-0175-1000-0283-e50c6811c098","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ea47f-0175-1000-c032-3c3511df3df3","parent":{"ref":"EID6a2ea334-0175-1000-0283-e50c6811c098"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea47f-0175-1000-8c61-ceddfaa3226b","parent":{"ref":"EID6a2ea334-0175-1000-0283-e50c6811c098"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea47f-0175-1000-1ac3-92c616cfc7c0","parent":{"ref":"EID6a2ea334-0175-1000-0283-e50c6811c098"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea47f-0175-1000-1c5a-2f1caee12b48","parent":{"ref":"EID6a2ea334-0175-1000-0283-e50c6811c098"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea47f-0175-1000-b446-17ed608ab2a8","parent":{"ref":"EID6a2ea334-0175-1000-0283-e50c6811c098"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea47f-0175-1000-f60a-a3c5d9f84b19","parent":{"ref":"EID6a2ea334-0175-1000-0283-e50c6811c098"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDede20b83-f108-4351-befe-313fef6eeb49"},{"ref":"EID821076a0-5eb6-4c36-8443-001e93bf247d"},{"ref":"EIDa514bbd2-562b-46bc-8211-be3fe8baf48a"}]},"parent":{"ref":"EID6a2ea334-0175-1000-dd6b-4d605c2df467"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:10:42Z","duration":65,"status":"PASSED"}},"parent":{"ref":"EID6a2e8bf7-0175-1000-11fd-b7ccdf404973"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:10:42Z","duration":331,"status":"PASSED"},{"id":"EID6a2ea47f-0175-1000-d298-f6b17b6887db","testStepResults":{"TestStepResult":{"id":"EID6a2ea47f-0175-1000-3833-9b7c2b202611","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ea5e5-0175-1000-1c61-6ccb6edd1f14","parent":{"ref":"EID6a2ea47f-0175-1000-3833-9b7c2b202611"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea5e5-0175-1000-5ea6-11ab3e0d0800","parent":{"ref":"EID6a2ea47f-0175-1000-3833-9b7c2b202611"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea5e5-0175-1000-0a66-5d658c01340d","parent":{"ref":"EID6a2ea47f-0175-1000-3833-9b7c2b202611"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea5e5-0175-1000-2e0e-68ef4cb4b8e8","parent":{"ref":"EID6a2ea47f-0175-1000-3833-9b7c2b202611"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea5e5-0175-1000-bfcb-cc26cf1b5f35","parent":{"ref":"EID6a2ea47f-0175-1000-3833-9b7c2b202611"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea5e5-0175-1000-a8a8-07b75db386d1","parent":{"ref":"EID6a2ea47f-0175-1000-3833-9b7c2b202611"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4b40b75c-d7bb-4f48-aeab-aabe0b67aedb"},{"ref":"EID382b392c-99c6-402c-bfe2-0efc6a1fffe2"},{"ref":"EIDa9340c51-c501-4226-9557-e8da7c8a874e"}]},"parent":{"ref":"EID6a2ea47f-0175-1000-d298-f6b17b6887db"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:10:43Z","duration":163,"status":"PASSED"}},"parent":{"ref":"EID6a2e8bf7-0175-1000-11fd-b7ccdf404973"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:10:43Z","duration":359,"status":"PASSED"},{"id":"EID6a2ea5e6-0175-1000-795c-846b98f3659f","testStepResults":{"TestStepResult":{"id":"EID6a2ea5e6-0175-1000-1d7b-9b25141798d9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ea6e9-0175-1000-a230-70d711f6143c","parent":{"ref":"EID6a2ea5e6-0175-1000-1d7b-9b25141798d9"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea6e9-0175-1000-c184-24378325df8e","parent":{"ref":"EID6a2ea5e6-0175-1000-1d7b-9b25141798d9"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea6e9-0175-1000-53e2-670ce6df1a4c","parent":{"ref":"EID6a2ea5e6-0175-1000-1d7b-9b25141798d9"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea6e9-0175-1000-9935-332cae0d367f","parent":{"ref":"EID6a2ea5e6-0175-1000-1d7b-9b25141798d9"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:10:43Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID84f128c3-7764-47c6-a5c6-71e8fbbe1640"},{"ref":"EID7abac4a5-e6c7-4654-a651-e2abb0d443ac"},{"ref":"EID01269b77-6311-4bf4-b3de-210ec7bd2809"}]},"parent":{"ref":"EID6a2ea5e6-0175-1000-795c-846b98f3659f"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:10:43Z","duration":110,"status":"PASSED"}},"parent":{"ref":"EID6a2e8bf7-0175-1000-11fd-b7ccdf404973"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:10:43Z","duration":259,"status":"PASSED"},{"id":"EID6a2ea6e9-0175-1000-f270-6bba50019711","testStepResults":{"TestStepResult":[{"id":"EID6a2ea6e9-0175-1000-7b9e-f5210db18b10","attachments":{"attachment":[{"ref":"EIDc88dd988-4122-4a42-84bc-668e9bb3a98a"},{"ref":"EIDf705dcca-9333-4fc8-abbb-940edefc55f1"},{"ref":"EID45b0e5cf-a510-41fe-8e09-96008c927410"},{"ref":"EIDeaa52333-a74b-4eba-b98a-356553b0c878"}]},"parent":{"ref":"EID6a2ea6e9-0175-1000-f270-6bba50019711"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:10:43Z","duration":325,"status":"PASSED"},{"id":"EID6a2ea8ca-0175-1000-4c0d-b2d7809f4ec6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ea9ea-0175-1000-3d12-f7fb0f021c8e","parent":{"ref":"EID6a2ea8ca-0175-1000-4c0d-b2d7809f4ec6"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:10:44Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea9ea-0175-1000-4bdd-e030ee49bace","parent":{"ref":"EID6a2ea8ca-0175-1000-4c0d-b2d7809f4ec6"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:10:44Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea9ea-0175-1000-4ff6-c887c7eb2983","parent":{"ref":"EID6a2ea8ca-0175-1000-4c0d-b2d7809f4ec6"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:10:44Z","duration":0,"status":"PASSED"},{"id":"EID6a2ea9ea-0175-1000-c805-4c2208476930","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6a2ea8ca-0175-1000-4c0d-b2d7809f4ec6"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:10:44Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID7d8e1cc7-8d58-4013-beca-b91885f37333"},{"ref":"EID02be9563-3e5e-495b-abc3-1a6cfb25e066"},{"ref":"EID117afb10-a38b-4aed-aa5c-a85a51c5eccc"}]},"parent":{"ref":"EID6a2ea6e9-0175-1000-f270-6bba50019711"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:10:44Z","duration":121,"status":"FAILED"}]},"parent":{"ref":"EID6a2e8bf7-0175-1000-11fd-b7ccdf404973"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:10:43Z","duration":769,"status":"FAILED"},{"id":"EID6a2ea9ea-0175-1000-859f-cee581249e4a","testStepResults":{"TestStepResult":{"id":"EID6a2ea9ea-0175-1000-27f2-50a057ab5f43","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eaabf-0175-1000-d0e6-0d265d2498e5","parent":{"ref":"EID6a2ea9ea-0175-1000-27f2-50a057ab5f43"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:10:44Z","duration":0,"status":"PASSED"},{"id":"EID6a2eaabf-0175-1000-bb7f-e27ff17373a5","parent":{"ref":"EID6a2ea9ea-0175-1000-27f2-50a057ab5f43"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:10:44Z","duration":0,"status":"PASSED"},{"id":"EID6a2eaabf-0175-1000-a6d1-a42ca195d60d","parent":{"ref":"EID6a2ea9ea-0175-1000-27f2-50a057ab5f43"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:10:44Z","duration":0,"status":"PASSED"},{"id":"EID6a2eaabf-0175-1000-4ed1-faf22fddd371","parent":{"ref":"EID6a2ea9ea-0175-1000-27f2-50a057ab5f43"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:10:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2c4cecfe-0d1f-4eaa-be4e-df13251f7cec"},{"ref":"EID4724d9e3-3025-4bba-a206-20bc5fb590d7"},{"ref":"EID0da66912-64b1-4b81-a380-07786e04ef9b"}]},"parent":{"ref":"EID6a2ea9ea-0175-1000-859f-cee581249e4a"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:10:44Z","duration":100,"status":"PASSED"}},"parent":{"ref":"EID6a2e8bf7-0175-1000-11fd-b7ccdf404973"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:10:44Z","duration":213,"status":"PASSED"},{"id":"EID6a2eaac9-0175-1000-a1a1-42d9961f5b8a","testStepResults":{"TestStepResult":[{"id":"EID6a2eaac9-0175-1000-45d0-954dce7526b0","parent":{"ref":"EID6a2eaac9-0175-1000-a1a1-42d9961f5b8a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:10:44Z","duration":0,"status":"PASSED"},{"id":"EID6a2eaac9-0175-1000-8da5-e36cba4bf3c5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eac21-0175-1000-cd2e-45137856080f","parent":{"ref":"EID6a2eaac9-0175-1000-8da5-e36cba4bf3c5"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"PASSED"},{"id":"EID6a2eac21-0175-1000-d852-7b264a354e9a","parent":{"ref":"EID6a2eaac9-0175-1000-8da5-e36cba4bf3c5"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"PASSED"},{"id":"EID6a2eac21-0175-1000-3233-a82b4127c3d2","parent":{"ref":"EID6a2eaac9-0175-1000-8da5-e36cba4bf3c5"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"PASSED"},{"id":"EID6a2eac21-0175-1000-2ea4-802bbf7fdb73","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6a2eaac9-0175-1000-8da5-e36cba4bf3c5"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDf03dbffa-24f1-4a05-a896-6fb2acef4ff5"},{"ref":"EIDcab4293d-6a39-41c6-904e-4c3f40938582"},{"ref":"EID7d0df6d1-0cf3-4530-a707-73ace8aac5b2"}]},"parent":{"ref":"EID6a2eaac9-0175-1000-a1a1-42d9961f5b8a"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:10:44Z","duration":143,"status":"FAILED"}]},"parent":{"ref":"EID6a2e8bf7-0175-1000-11fd-b7ccdf404973"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:10:44Z","duration":344,"status":"FAILED"}]},"parent":{"ref":"EIDd6892932-13d3-4636-85ac-8d838c1e6260"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:10:36Z","duration":8234,"status":"FAILED"},{"id":"EID6a2eac22-0175-1000-7659-39733a6d9209","testCaseResults":{"TestCaseResult":[{"id":"EID6a2eac2b-0175-1000-caf4-69af9f71b092","testStepResults":{"TestStepResult":[{"id":"EID6a2eac2b-0175-1000-bc4d-477aaf74c000","parent":{"ref":"EID6a2eac2b-0175-1000-caf4-69af9f71b092"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"PASSED"},{"id":"EID6a2eac2b-0175-1000-c18b-8e5278c013ad","parent":{"ref":"EID6a2eac2b-0175-1000-caf4-69af9f71b092"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:10:45Z","duration":100,"status":"PASSED"},{"id":"EID6a2eac2b-0175-1000-419c-13888d777cfb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ead5b-0175-1000-694f-04c3495477bf","parent":{"ref":"EID6a2eac2b-0175-1000-419c-13888d777cfb"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"PASSED"},{"id":"EID6a2ead5b-0175-1000-870c-5ce412d33e22","parent":{"ref":"EID6a2eac2b-0175-1000-419c-13888d777cfb"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"PASSED"},{"id":"EID6a2ead5b-0175-1000-90a5-6aaa8703041c","parent":{"ref":"EID6a2eac2b-0175-1000-419c-13888d777cfb"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd7f07c96-69c0-45f0-9554-84d8c45bfc40"},{"ref":"EIDc50b38e1-3765-492e-aab4-847022cf30ee"},{"ref":"EIDf1f76389-766a-42c7-ae01-02193c19ccf4"}]},"parent":{"ref":"EID6a2eac2b-0175-1000-caf4-69af9f71b092"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:10:45Z","duration":78,"status":"PASSED"},{"id":"EID6a2ead64-0175-1000-e222-dc4e3aacedba","attachments":{"attachment":{"ref":"EIDd936c9bb-ca0b-4f1f-96bf-1f7a77cfde54"}},"parent":{"ref":"EID6a2eac2b-0175-1000-caf4-69af9f71b092"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:10:45Z","duration":1,"status":"PASSED"},{"id":"EID6a2ead70-0175-1000-70b7-b5cbf339f8c6","parent":{"ref":"EID6a2eac2b-0175-1000-caf4-69af9f71b092"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:10:45Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6a2eac22-0175-1000-7659-39733a6d9209"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:10:45Z","duration":348,"status":"PASSED"},{"id":"EID6a2ead87-0175-1000-8863-73d1194c5995","testStepResults":{"TestStepResult":[{"id":"EID6a2ead87-0175-1000-908b-73660a5283ff","parent":{"ref":"EID6a2ead87-0175-1000-8863-73d1194c5995"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:10:45Z","duration":123,"status":"PASSED"},{"id":"EID6a2ead87-0175-1000-d10f-16bdd41b94cb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eae23-0175-1000-f877-19dce8a0dd1f","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a2ead87-0175-1000-d10f-16bdd41b94cb"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:10:45Z","duration":31,"status":"FAILED"},{"id":"EID6a2eae42-0175-1000-c889-adf255ce40aa","parent":{"ref":"EID6a2ead87-0175-1000-d10f-16bdd41b94cb"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"PASSED"},{"id":"EID6a2eae42-0175-1000-0b57-5098a2eab8a7","parent":{"ref":"EID6a2ead87-0175-1000-d10f-16bdd41b94cb"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"PASSED"},{"id":"EID6a2eae42-0175-1000-a183-7c5acefff0ea","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6a2ead87-0175-1000-d10f-16bdd41b94cb"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"FAILED"},{"id":"EID6a2eae42-0175-1000-0ff6-522d5ac86995","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6a2ead87-0175-1000-d10f-16bdd41b94cb"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID405fd4e8-37c1-45fd-ad9a-727db17b99b6"},{"ref":"EIDda1a49f0-99da-4b55-8d64-8c01271542d9"},{"ref":"EID186bdfb4-e900-4350-8902-3ef16ad1c4fb"}]},"parent":{"ref":"EID6a2ead87-0175-1000-8863-73d1194c5995"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:10:45Z","duration":36,"status":"FAILED"}]},"parent":{"ref":"EID6a2eac22-0175-1000-7659-39733a6d9209"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:10:45Z","duration":187,"status":"FAILED"},{"id":"EID6a2eae42-0175-1000-37b5-c7ba6cd81f25","testStepResults":{"TestStepResult":{"id":"EID6a2eae42-0175-1000-4884-ccba6ae643f9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eaec5-0175-1000-deba-c9aa15356185","parent":{"ref":"EID6a2eae42-0175-1000-4884-ccba6ae643f9"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"PASSED"},{"id":"EID6a2eaec5-0175-1000-6a15-e495586114c8","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a2eae42-0175-1000-4884-ccba6ae643f9"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:10:45Z","duration":14,"status":"FAILED"},{"id":"EID6a2eaed3-0175-1000-8985-2ce001c8d8be","parent":{"ref":"EID6a2eae42-0175-1000-4884-ccba6ae643f9"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8555636e-9d42-4546-8f69-a81c0b6dbe69"},{"ref":"EID6e41153a-365a-4e58-af80-64c33b3a218c"},{"ref":"EIDac2c2d4e-936c-478c-a638-8a2e50edbfd7"}]},"parent":{"ref":"EID6a2eae42-0175-1000-37b5-c7ba6cd81f25"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:10:45Z","duration":35,"status":"FAILED"}},"parent":{"ref":"EID6a2eac22-0175-1000-7659-39733a6d9209"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:10:45Z","duration":145,"status":"FAILED"},{"id":"EID6a2eaed3-0175-1000-4106-3d274ed1c2ef","testStepResults":{"TestStepResult":{"id":"EID6a2eaed3-0175-1000-e47b-9ab28ca6093f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eaf4e-0175-1000-5b50-2c13a9496dab","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a2eaed3-0175-1000-e47b-9ab28ca6093f"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"FAILED"},{"id":"EID6a2eaf4e-0175-1000-f981-1cdda85a93a3","parent":{"ref":"EID6a2eaed3-0175-1000-e47b-9ab28ca6093f"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"PASSED"},{"id":"EID6a2eaf4e-0175-1000-1d4d-7a9edcc09c17","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a2eaed3-0175-1000-e47b-9ab28ca6093f"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:10:45Z","duration":15,"status":"FAILED"},{"id":"EID6a2eaf5d-0175-1000-1a7b-578546e4806d","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6a2eaed3-0175-1000-e47b-9ab28ca6093f"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID1b52bf1e-623e-4f18-b0fd-98bb3ed6d7e2"},{"ref":"EIDf7c2be52-db4a-4505-bf24-1f2f289c9b77"},{"ref":"EIDcdda7433-e255-4103-acbb-2151c4c48b8a"}]},"parent":{"ref":"EID6a2eaed3-0175-1000-4106-3d274ed1c2ef"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:10:45Z","duration":34,"status":"FAILED"}},"parent":{"ref":"EID6a2eac22-0175-1000-7659-39733a6d9209"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:10:45Z","duration":147,"status":"FAILED"},{"id":"EID6a2eaf67-0175-1000-c289-594d45915206","testStepResults":{"TestStepResult":{"id":"EID6a2eaf67-0175-1000-1873-df75451512f5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eafc5-0175-1000-714b-69c73abd1e12","parent":{"ref":"EID6a2eaf67-0175-1000-1873-df75451512f5"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"PASSED"},{"id":"EID6a2eafc5-0175-1000-bb82-30b06659579c","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a2eaf67-0175-1000-1873-df75451512f5"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:10:45Z","duration":18,"status":"FAILED"},{"id":"EID6a2eafd7-0175-1000-ceaf-03040c3d74f4","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6a2eaf67-0175-1000-1873-df75451512f5"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:10:45Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDd4d78d9c-472e-4530-88c3-f779eea371d7"},{"ref":"EID001a72da-ce33-41e9-ac9f-4677c13d81b0"},{"ref":"EID67a56eb3-c92a-48cc-97fa-2ed0c55fac2d"}]},"parent":{"ref":"EID6a2eaf67-0175-1000-c289-594d45915206"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:10:45Z","duration":35,"status":"FAILED"}},"parent":{"ref":"EID6a2eac22-0175-1000-7659-39733a6d9209"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:10:45Z","duration":112,"status":"FAILED"},{"id":"EID6a2eafd7-0175-1000-4680-092716c0e146","testStepResults":{"TestStepResult":{"id":"EID6a2eafd7-0175-1000-e8a8-13a776adee16","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eb088-0175-1000-d962-2bc949ae6a09","parent":{"ref":"EID6a2eafd7-0175-1000-e8a8-13a776adee16"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb088-0175-1000-f589-46a4b3853566","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a2eafd7-0175-1000-e8a8-13a776adee16"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:10:46Z","duration":13,"status":"FAILED"},{"id":"EID6a2eb095-0175-1000-4a2b-cfbc1a254b21","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a2eafd7-0175-1000-e8a8-13a776adee16"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID40414c5c-1249-4669-9a7f-f39f35910277"},{"ref":"EIDa9577e11-cfc0-438f-8e9f-1b8d7a99f59d"},{"ref":"EIDbdb1bf35-b966-45cb-bca9-d488b51d357a"}]},"parent":{"ref":"EID6a2eafd7-0175-1000-4680-092716c0e146"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:10:45Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6a2eac22-0175-1000-7659-39733a6d9209"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:10:45Z","duration":191,"status":"FAILED"},{"id":"EID6a2eb096-0175-1000-5bb5-4e29cb0ac66d","testStepResults":{"TestStepResult":{"id":"EID6a2eb096-0175-1000-9f13-3fe939620027","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eb107-0175-1000-da5f-78bca984c49f","parent":{"ref":"EID6a2eb096-0175-1000-9f13-3fe939620027"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb107-0175-1000-88d2-6ebd989b2982","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a2eb096-0175-1000-9f13-3fe939620027"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:10:46Z","duration":11,"status":"FAILED"},{"id":"EID6a2eb112-0175-1000-13dd-f4a0c4fa84f4","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6a2eb096-0175-1000-9f13-3fe939620027"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"FAILED"},{"id":"EID6a2eb112-0175-1000-ea86-822da6abc21d","parent":{"ref":"EID6a2eb096-0175-1000-9f13-3fe939620027"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb112-0175-1000-5552-657dc19d9cb7","parent":{"ref":"EID6a2eb096-0175-1000-9f13-3fe939620027"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID40333354-39fe-42c2-ae7c-3112dba382eb"},{"ref":"EID88c59ff4-d2cc-4d09-b09d-de174ae2196f"},{"ref":"EIDcbf0cf25-5ab4-4df2-86d8-2c387f9f095d"}]},"parent":{"ref":"EID6a2eb096-0175-1000-5bb5-4e29cb0ac66d"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:10:46Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6a2eac22-0175-1000-7659-39733a6d9209"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:10:46Z","duration":124,"status":"FAILED"},{"id":"EID6a2eb112-0175-1000-c12d-9bfc793e7c5a","testStepResults":{"TestStepResult":{"id":"EID6a2eb112-0175-1000-5c93-b04171b4899d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eb171-0175-1000-3802-6239061d7a45","parent":{"ref":"EID6a2eb112-0175-1000-5c93-b04171b4899d"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb171-0175-1000-468e-214017ff4718","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a2eb112-0175-1000-5c93-b04171b4899d"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:10:46Z","duration":20,"status":"FAILED"},{"id":"EID6a2eb185-0175-1000-cce9-0c0b5bc8d50d","parent":{"ref":"EID6a2eb112-0175-1000-5c93-b04171b4899d"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID02712325-c935-4ff5-9870-f5f9a936d462"},{"ref":"EID17c1111b-14ce-4168-a9db-bff47728dcdb"},{"ref":"EID8cbf6ba4-3d05-4f0f-af12-20930f4535c6"}]},"parent":{"ref":"EID6a2eb112-0175-1000-c12d-9bfc793e7c5a"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:10:46Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6a2eac22-0175-1000-7659-39733a6d9209"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:10:46Z","duration":116,"status":"FAILED"},{"id":"EID6a2eb1a1-0175-1000-5bfd-509fda3f64ed","testStepResults":{"TestStepResult":{"id":"EID6a2eb1a1-0175-1000-8119-f6af73a9a7af","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eb233-0175-1000-62b5-68f98a127304","parent":{"ref":"EID6a2eb1a1-0175-1000-8119-f6af73a9a7af"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb233-0175-1000-da72-06bf9b5e90f3","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a2eb1a1-0175-1000-8119-f6af73a9a7af"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:10:46Z","duration":10,"status":"FAILED"},{"id":"EID6a2eb23d-0175-1000-94e7-b43c1de6d67e","parent":{"ref":"EID6a2eb1a1-0175-1000-8119-f6af73a9a7af"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0a3b0cf7-7b54-4efe-a15e-a8c13bda1f05"},{"ref":"EID0d62bc1a-a75d-4fea-b50e-c17ce9ae8acd"},{"ref":"EIDc625d313-9086-4be8-8c47-5394dc6d02f6"}]},"parent":{"ref":"EID6a2eb1a1-0175-1000-5bfd-509fda3f64ed"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:10:46Z","duration":35,"status":"FAILED"}},"parent":{"ref":"EID6a2eac22-0175-1000-7659-39733a6d9209"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:10:46Z","duration":157,"status":"FAILED"},{"id":"EID6a2eb23e-0175-1000-2191-59b798f9e09c","testStepResults":{"TestStepResult":{"id":"EID6a2eb23e-0175-1000-b028-92cd7fc05c0c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eb2b2-0175-1000-c475-0bb716d8e3da","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a2eb23e-0175-1000-b028-92cd7fc05c0c"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:10:46Z","duration":9,"status":"FAILED"},{"id":"EID6a2eb2bc-0175-1000-61bb-40f46d031b7e","parent":{"ref":"EID6a2eb23e-0175-1000-b028-92cd7fc05c0c"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb2bc-0175-1000-0cc1-1582c23f0503","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a2eb23e-0175-1000-b028-92cd7fc05c0c"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"FAILED"},{"id":"EID6a2eb2bc-0175-1000-ff0a-0e7986d0809a","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6a2eb23e-0175-1000-b028-92cd7fc05c0c"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDb323aa5e-83b6-4b6a-bb09-f093ec0a77fb"},{"ref":"EIDb9781c24-025f-48a4-8d66-57ad517844e0"},{"ref":"EID6fb7486e-34a5-4047-9aff-2b4efe784049"}]},"parent":{"ref":"EID6a2eb23e-0175-1000-2191-59b798f9e09c"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:10:46Z","duration":35,"status":"FAILED"}},"parent":{"ref":"EID6a2eac22-0175-1000-7659-39733a6d9209"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:10:46Z","duration":126,"status":"FAILED"},{"id":"EID6a2eb2bc-0175-1000-a8bb-86d00356b282","testStepResults":{"TestStepResult":{"id":"EID6a2eb2bc-0175-1000-2e77-ec8cfeeb8d2f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eb338-0175-1000-9e4a-a0bfa8e5410f","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a2eb2bc-0175-1000-2e77-ec8cfeeb8d2f"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:10:46Z","duration":44,"status":"FAILED"},{"id":"EID6a2eb364-0175-1000-4022-75e66ed6a869","parent":{"ref":"EID6a2eb2bc-0175-1000-2e77-ec8cfeeb8d2f"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb364-0175-1000-a45b-94ac1d1e3d20","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a2eb2bc-0175-1000-2e77-ec8cfeeb8d2f"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"FAILED"},{"id":"EID6a2eb364-0175-1000-35f9-d52ddf2e8f65","parent":{"ref":"EID6a2eb2bc-0175-1000-2e77-ec8cfeeb8d2f"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc1499b6e-c0dc-41a0-a9d2-f9eefeaf10f6"},{"ref":"EID83bb8910-77dd-40fc-b545-1c54cca40db1"},{"ref":"EIDdd9d8584-29d2-497e-8a9a-cb98a31aad88"}]},"parent":{"ref":"EID6a2eb2bc-0175-1000-a8bb-86d00356b282"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:10:46Z","duration":52,"status":"FAILED"}},"parent":{"ref":"EID6a2eac22-0175-1000-7659-39733a6d9209"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:10:46Z","duration":168,"status":"FAILED"},{"id":"EID6a2eb364-0175-1000-192f-eb243ed5df9e","testStepResults":{"TestStepResult":[{"id":"EID6a2eb364-0175-1000-4106-2d9d296b3b07","parent":{"ref":"EID6a2eb364-0175-1000-192f-eb243ed5df9e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:10:46Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb364-0175-1000-a76b-d734421999dc","parent":{"ref":"EID6a2eb364-0175-1000-192f-eb243ed5df9e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:10:46Z","duration":191,"status":"PASSED"},{"id":"EID6a2eb364-0175-1000-0d08-69e41768cf0b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eb488-0175-1000-789f-f9e8b030ecc4","parent":{"ref":"EID6a2eb364-0175-1000-0d08-69e41768cf0b"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb488-0175-1000-fe1e-954cafa7e65a","parent":{"ref":"EID6a2eb364-0175-1000-0d08-69e41768cf0b"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb488-0175-1000-a6ad-5a12e077ff52","parent":{"ref":"EID6a2eb364-0175-1000-0d08-69e41768cf0b"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb488-0175-1000-53f2-231f4c55d09e","parent":{"ref":"EID6a2eb364-0175-1000-0d08-69e41768cf0b"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID363be909-12ae-48b4-b818-c687121c42f8"},{"ref":"EIDe2e7956d-f3ca-48a6-a163-5fd1bb92242e"},{"ref":"EIDf9699028-55f8-4016-bd92-124362db18f1"}]},"parent":{"ref":"EID6a2eb364-0175-1000-192f-eb243ed5df9e"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:10:46Z","duration":129,"status":"PASSED"},{"id":"EID6a2eb488-0175-1000-8e0a-944ae4a8a846","attachments":{"attachment":{"ref":"EID47ef04bb-9c19-4dea-8186-4b4bf6f328cd"}},"parent":{"ref":"EID6a2eb364-0175-1000-192f-eb243ed5df9e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:10:47Z","duration":4,"status":"PASSED"},{"id":"EID6a2eb49f-0175-1000-6d78-c84593229518","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eb54b-0175-1000-0ddd-8736ab3ddf15","parent":{"ref":"EID6a2eb49f-0175-1000-6d78-c84593229518"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb54b-0175-1000-7db6-cb335df3ceb0","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a2eb49f-0175-1000-6d78-c84593229518"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:10:47Z","duration":34,"status":"FAILED"},{"id":"EID6a2eb56d-0175-1000-884d-000c04e8c820","parent":{"ref":"EID6a2eb49f-0175-1000-6d78-c84593229518"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb56d-0175-1000-5f7b-ee00ade0b54d","parent":{"ref":"EID6a2eb49f-0175-1000-6d78-c84593229518"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb56d-0175-1000-39a2-2b53b5cdd027","parent":{"ref":"EID6a2eb49f-0175-1000-6d78-c84593229518"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb56d-0175-1000-ba02-56d7fbd4e866","parent":{"ref":"EID6a2eb49f-0175-1000-6d78-c84593229518"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb56d-0175-1000-e809-cdefebb38b00","parent":{"ref":"EID6a2eb49f-0175-1000-6d78-c84593229518"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf67e2349-deaa-444b-9952-6531ec7625d4"},{"ref":"EID6c933518-4083-40ae-b915-57f95da41afa"},{"ref":"EID68c679d6-01b8-4bcc-8116-f252866c2399"}]},"parent":{"ref":"EID6a2eb364-0175-1000-192f-eb243ed5df9e"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:10:47Z","duration":36,"status":"FAILED"}]},"parent":{"ref":"EID6a2eac22-0175-1000-7659-39733a6d9209"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:10:46Z","duration":521,"status":"FAILED"},{"id":"EID6a2eb56d-0175-1000-d4e9-1a9599fcced9","testStepResults":{"TestStepResult":[{"id":"EID6a2eb56d-0175-1000-ec41-8a606eb44983","parent":{"ref":"EID6a2eb56d-0175-1000-d4e9-1a9599fcced9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb56d-0175-1000-b57a-4dab67f79ffb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eb6d3-0175-1000-957d-b641f59e9ac8","parent":{"ref":"EID6a2eb56d-0175-1000-b57a-4dab67f79ffb"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb6d3-0175-1000-f3c6-bf4436f869ef","parent":{"ref":"EID6a2eb56d-0175-1000-b57a-4dab67f79ffb"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb6d3-0175-1000-2498-8417f1402c94","parent":{"ref":"EID6a2eb56d-0175-1000-b57a-4dab67f79ffb"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb6d3-0175-1000-121f-c2aad3c0a93b","parent":{"ref":"EID6a2eb56d-0175-1000-b57a-4dab67f79ffb"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:10:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID95b9c7f9-f163-465e-af69-abab88fa4ea1"},{"ref":"EID752712ea-c9f8-408e-8b91-363c18dbcc5d"},{"ref":"EID4a444c12-c76b-407d-b479-e3f55c3cd12e"}]},"parent":{"ref":"EID6a2eb56d-0175-1000-d4e9-1a9599fcced9"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:10:47Z","duration":142,"status":"PASSED"},{"id":"EID6a2eb6d3-0175-1000-4463-854e5599bf0f","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a2eb6e4-0175-1000-a933-c9a86a989396","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eb817-0175-1000-9b54-816f6372ccc8","parent":{"ref":"EID6a2eb6e4-0175-1000-a933-c9a86a989396"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:10:48Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb817-0175-1000-d6dd-52c60a71007f","parent":{"ref":"EID6a2eb6e4-0175-1000-a933-c9a86a989396"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:10:48Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb817-0175-1000-a4cd-d458a8426c70","parent":{"ref":"EID6a2eb6e4-0175-1000-a933-c9a86a989396"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:10:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfff0dc9a-0146-4796-a43e-12f0c2736f7c"},{"ref":"EID5e33b3c7-84c1-4b59-b28f-8179ef34931c"},{"ref":"EIDa4555804-acfe-4aa7-bdef-920e48af38b6"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:10:47Z","duration":155,"status":"PASSED"},{"id":"EID6a2eb819-0175-1000-8bcd-f3e06e6ba18f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eb8e5-0175-1000-4592-9a231bd8b236","parent":{"ref":"EID6a2eb819-0175-1000-8bcd-f3e06e6ba18f"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:10:48Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb8e5-0175-1000-2617-97152bbbc3c9","parent":{"ref":"EID6a2eb819-0175-1000-8bcd-f3e06e6ba18f"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:10:48Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb8e5-0175-1000-4acf-cbe4555ceaf7","parent":{"ref":"EID6a2eb819-0175-1000-8bcd-f3e06e6ba18f"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:10:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2538ab8f-a733-42c9-8234-2207c313f779"},{"ref":"EID6e339e2b-5b1b-4acb-a2f1-e66987bbb855"},{"ref":"EID8e1b90b2-2aeb-4cfc-8061-ec02eb1c6ebd"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:10:48Z","duration":154,"status":"PASSED"},{"id":"EID6a2eb8e6-0175-1000-81eb-46eb0f5ce15a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eb94b-0175-1000-148c-f37b01a9d68b","parent":{"ref":"EID6a2eb8e6-0175-1000-81eb-46eb0f5ce15a"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:10:48Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb94c-0175-1000-e800-c58223d26825","parent":{"ref":"EID6a2eb8e6-0175-1000-81eb-46eb0f5ce15a"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:10:48Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb94c-0175-1000-c917-8fa005a22743","parent":{"ref":"EID6a2eb8e6-0175-1000-81eb-46eb0f5ce15a"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:10:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7d46fb19-3e94-479d-9f0d-3a371a0a840c"},{"ref":"EIDdf30ee55-4159-471b-acca-c2acb92c2c6f"},{"ref":"EIDe199aa09-a9ed-470f-9de8-6d8ae460e3e3"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:10:48Z","duration":43,"status":"PASSED"}]},"parent":{"ref":"EID6a2eb56d-0175-1000-d4e9-1a9599fcced9"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:10:47Z","duration":633,"status":"PASSED"},{"id":"EID6a2eb94c-0175-1000-9719-aaec87f44598","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eb99f-0175-1000-7b00-c879ccb21fbb","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a2eb94c-0175-1000-9719-aaec87f44598"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:10:48Z","duration":18,"status":"FAILED"},{"id":"EID6a2eb9b1-0175-1000-2fc7-dcbbdbf00809","parent":{"ref":"EID6a2eb94c-0175-1000-9719-aaec87f44598"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:10:48Z","duration":0,"status":"PASSED"},{"id":"EID6a2eb9b1-0175-1000-92b9-17e4efa95fa1","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a2eb94c-0175-1000-9719-aaec87f44598"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:10:48Z","duration":0,"status":"FAILED"},{"id":"EID6a2eb9b1-0175-1000-4f8d-9a96a348de2e","parent":{"ref":"EID6a2eb94c-0175-1000-9719-aaec87f44598"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:10:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5b6e6a99-8fad-4808-a9eb-e1803cc87a84"},{"ref":"EIDc6f255fd-1ae0-4a23-a817-d7d4b9277797"},{"ref":"EID17d97c48-9802-4ec8-b138-31f481d04fc2"}]},"parent":{"ref":"EID6a2eb56d-0175-1000-d4e9-1a9599fcced9"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:10:48Z","duration":29,"status":"FAILED"}]},"parent":{"ref":"EID6a2eac22-0175-1000-7659-39733a6d9209"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:10:47Z","duration":1092,"status":"FAILED"},{"id":"EID6a2eb9b1-0175-1000-2c19-1c48af0cb8cc","testStepResults":{"TestStepResult":{"id":"EID6a2eb9b1-0175-1000-1aec-ef26a9ab7ed9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2eba34-0175-1000-5777-67dbbe7ed6fb","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a2eb9b1-0175-1000-1aec-ef26a9ab7ed9"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:10:48Z","duration":13,"status":"FAILED"},{"id":"EID6a2eba41-0175-1000-8d6f-59ec413943e1","parent":{"ref":"EID6a2eb9b1-0175-1000-1aec-ef26a9ab7ed9"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:10:48Z","duration":0,"status":"PASSED"},{"id":"EID6a2eba41-0175-1000-45a1-ad8d58cf7791","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a2eb9b1-0175-1000-1aec-ef26a9ab7ed9"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:10:48Z","duration":1,"status":"FAILED"},{"id":"EID6a2eba42-0175-1000-3e5a-221827f84d36","parent":{"ref":"EID6a2eb9b1-0175-1000-1aec-ef26a9ab7ed9"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:10:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe174547b-92cc-4139-9394-8539ecee1b1a"},{"ref":"EIDd42c295b-3e56-48ac-8e63-fa2b6bf69c5e"},{"ref":"EIDf4ee2d62-fb4c-418f-9bfc-5e34e64bc0c8"}]},"parent":{"ref":"EID6a2eb9b1-0175-1000-2c19-1c48af0cb8cc"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:10:48Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6a2eac22-0175-1000-7659-39733a6d9209"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:10:48Z","duration":152,"status":"FAILED"}]},"parent":{"ref":"EIDd6892932-13d3-4636-85ac-8d838c1e6260"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:10:45Z","duration":3624,"status":"FAILED"},{"id":"EID6a2eba4a-0175-1000-668f-a88bf3d894d0","testCaseResults":{"TestCaseResult":[{"id":"EID6a2eba4a-0175-1000-969a-73b9b4ba4135","testStepResults":{"TestStepResult":{"id":"EID6a2eba4a-0175-1000-fdde-780fde269046","parent":{"ref":"EID6a2eba4a-0175-1000-969a-73b9b4ba4135"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:10:48Z","duration":731,"status":"SKIPPED"}},"parent":{"ref":"EID6a2eba4a-0175-1000-668f-a88bf3d894d0"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:10:48Z","duration":0,"status":"SKIPPED"},{"id":"EID6a2eba4a-0175-1000-c273-ab1e8e3e3e3e","testStepResults":{"TestStepResult":{"id":"EID6a2eba4a-0175-1000-a7bf-735456d41086","parent":{"ref":"EID6a2eba4a-0175-1000-c273-ab1e8e3e3e3e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:10:48Z","duration":731,"status":"SKIPPED"}},"parent":{"ref":"EID6a2eba4a-0175-1000-668f-a88bf3d894d0"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:10:48Z","duration":0,"status":"SKIPPED"},{"id":"EID6a2eba4a-0175-1000-dd3c-7274be87d182","testStepResults":{"TestStepResult":{"id":"EID6a2eba4a-0175-1000-1a31-b9e08159861b","parent":{"ref":"EID6a2eba4a-0175-1000-dd3c-7274be87d182"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:10:48Z","duration":731,"status":"SKIPPED"}},"parent":{"ref":"EID6a2eba4a-0175-1000-668f-a88bf3d894d0"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:10:48Z","duration":0,"status":"SKIPPED"},{"id":"EID6a2eba4a-0175-1000-5b1d-95b039ae0721","testStepResults":{"TestStepResult":{"id":"EID6a2eba4a-0175-1000-be0e-0412de9b8bb9","parent":{"ref":"EID6a2eba4a-0175-1000-5b1d-95b039ae0721"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:10:48Z","duration":731,"status":"SKIPPED"}},"parent":{"ref":"EID6a2eba4a-0175-1000-668f-a88bf3d894d0"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:10:48Z","duration":0,"status":"SKIPPED"},{"id":"EID6a2eba91-0175-1000-468f-b0afb802e773","testStepResults":{"TestStepResult":{"id":"EID6a2eba91-0175-1000-6de0-77d5618295b6","parent":{"ref":"EID6a2eba91-0175-1000-468f-b0afb802e773"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:10:48Z","duration":731,"status":"SKIPPED"}},"parent":{"ref":"EID6a2eba4a-0175-1000-668f-a88bf3d894d0"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:10:48Z","duration":1,"status":"SKIPPED"},{"id":"EID6a2eba92-0175-1000-a383-1ba370a4f5a5","testStepResults":{"TestStepResult":{"id":"EID6a2eba92-0175-1000-a604-85ae2b19a4b8","parent":{"ref":"EID6a2eba92-0175-1000-a383-1ba370a4f5a5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:10:48Z","duration":731,"status":"SKIPPED"}},"parent":{"ref":"EID6a2eba4a-0175-1000-668f-a88bf3d894d0"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:10:48Z","duration":0,"status":"SKIPPED"},{"id":"EID6a2eba92-0175-1000-f2ef-b9a808918388","testStepResults":{"TestStepResult":{"id":"EID6a2eba92-0175-1000-e633-1200cfd8efae","parent":{"ref":"EID6a2eba92-0175-1000-f2ef-b9a808918388"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:10:48Z","duration":731,"status":"SKIPPED"}},"parent":{"ref":"EID6a2eba4a-0175-1000-668f-a88bf3d894d0"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:10:48Z","duration":0,"status":"SKIPPED"}]},"parent":{"ref":"EIDd6892932-13d3-4636-85ac-8d838c1e6260"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:10:48Z","duration":72,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"GetParameter","id":"EIDf1f76389-766a-42c7-ae01-02193c19ccf4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDdf30ee55-4159-471b-acca-c2acb92c2c6f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDdf30ee55-4159-471b-acca-c2acb92c2c6f"}},{"type":"ServiceResponse","id":"EID6c933518-4083-40ae-b915-57f95da41afa","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID6c933518-4083-40ae-b915-57f95da41afa"}},{"type":"GetParameter","id":"EIDd7ed3448-2064-4641-bd5a-581fbee6bd1e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDc88dd988-4122-4a42-84bc-668e9bb3a98a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDc88dd988-4122-4a42-84bc-668e9bb3a98a"}},{"type":"ServiceResponse","id":"EIDe2e7956d-f3ca-48a6-a163-5fd1bb92242e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDe2e7956d-f3ca-48a6-a163-5fd1bb92242e"}},{"type":"ServiceEndpoint","id":"EIDf67e2349-deaa-444b-9952-6531ec7625d4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID87644417-bf15-475a-be7c-8f00dc3a3838","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID87644417-bf15-475a-be7c-8f00dc3a3838"}},{"type":"GetParameter","id":"EID5b81892d-24bc-449c-bdfa-e78b5a1ccd59","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID120944a6-fd8d-4d17-a458-e5f2bbe02571","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDd4d78d9c-472e-4530-88c3-f779eea371d7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID531af7fa-7273-4579-b360-faaa053014bd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID6e339e2b-5b1b-4acb-a2f1-e66987bbb855","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID6e339e2b-5b1b-4acb-a2f1-e66987bbb855"}},{"type":"GetParameter","id":"EIDfdd45ece-9a02-42be-a264-88b22d84e958","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDdd76fa71-de3a-497f-bda7-e758bfa00f66","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDdd76fa71-de3a-497f-bda7-e758bfa00f66"}},{"type":"Message","id":"EIDa015baa4-3eea-4d82-a0b5-ed43df12a1c2","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDa015baa4-3eea-4d82-a0b5-ed43df12a1c2"}},{"type":"ServiceResponse","id":"EID6d49f59c-e3d0-4719-8dc3-cc644d64864f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID6d49f59c-e3d0-4719-8dc3-cc644d64864f"}},{"type":"ServiceResponse","id":"EIDf5d01a99-5498-4a9c-9f81-4036aad264b1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDf5d01a99-5498-4a9c-9f81-4036aad264b1"}},{"type":"Message","id":"EID9def3d72-295f-4b41-98b8-66784a81d16d","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID9def3d72-295f-4b41-98b8-66784a81d16d"}},{"type":"ServiceEndpoint","id":"EID363be909-12ae-48b4-b818-c687121c42f8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID56345361-9d8f-46d4-9c8e-daed00c33c07","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDc7461691-9c28-4e78-8683-f2c6ba679e6a","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDc7461691-9c28-4e78-8683-f2c6ba679e6a"}},{"type":"ServiceResponse","id":"EID001a72da-ce33-41e9-ac9f-4677c13d81b0","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID001a72da-ce33-41e9-ac9f-4677c13d81b0"}},{"type":"GetParameter","id":"EID4a444c12-c76b-407d-b479-e3f55c3cd12e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EID17fb69fd-a8e3-47d4-83c8-6647c58a22fb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDf705dcca-9333-4fc8-abbb-940edefc55f1","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDf705dcca-9333-4fc8-abbb-940edefc55f1"}},{"type":"Error","id":"EID2ca4ca07-f387-4634-99fd-9e3da2d455b3","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID2ca4ca07-f387-4634-99fd-9e3da2d455b3"}},{"type":"ServiceEndpoint","id":"EIDb323aa5e-83b6-4b6a-bb09-f093ec0a77fb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID9ebe977a-3dbd-467b-8966-f20995f35337","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID9ebe977a-3dbd-467b-8966-f20995f35337"}},{"type":"Error","id":"EID7ca0871c-7d26-400d-9d23-203e9d77b673","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID7ca0871c-7d26-400d-9d23-203e9d77b673"}},{"type":"Error","id":"EID55856700-d0b2-48d6-8731-d333f586aa77","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID55856700-d0b2-48d6-8731-d333f586aa77"}},{"type":"ServiceEndpoint","id":"EIDd7f07c96-69c0-45f0-9554-84d8c45bfc40","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID7d0df6d1-0cf3-4530-a707-73ace8aac5b2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDf4ee2d62-fb4c-418f-9bfc-5e34e64bc0c8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID17d97c48-9802-4ec8-b138-31f481d04fc2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID40333354-39fe-42c2-ae7c-3112dba382eb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EID1a4bf37c-80da-4d7a-bfed-55c66f968054","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID1a4bf37c-80da-4d7a-bfed-55c66f968054"}},{"type":"ServiceEndpoint","id":"EID40414c5c-1249-4669-9a7f-f39f35910277","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EIDabd762a7-0846-4161-8f44-30df5cbb1558","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDabd762a7-0846-4161-8f44-30df5cbb1558"}},{"type":"ServiceEndpoint","id":"EID95b9c7f9-f163-465e-af69-abab88fa4ea1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EIDa4555804-acfe-4aa7-bdef-920e48af38b6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EIDa9577e11-cfc0-438f-8e9f-1b8d7a99f59d","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDa9577e11-cfc0-438f-8e9f-1b8d7a99f59d"}},{"type":"Message","id":"EIDf67bbb35-6bdb-40c0-9a32-68e8ddd771fc","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDf67bbb35-6bdb-40c0-9a32-68e8ddd771fc"}},{"type":"ServiceEndpoint","id":"EID84f128c3-7764-47c6-a5c6-71e8fbbe1640","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDbed61bf1-2b17-4337-a430-33f3953c683e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID8cbf6ba4-3d05-4f0f-af12-20930f4535c6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID5e33b3c7-84c1-4b59-b28f-8179ef34931c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID5e33b3c7-84c1-4b59-b28f-8179ef34931c"}},{"type":"ServiceResponse","id":"EIDb9781c24-025f-48a4-8d66-57ad517844e0","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDb9781c24-025f-48a4-8d66-57ad517844e0"}},{"type":"GetParameter","id":"EID6fb7486e-34a5-4047-9aff-2b4efe784049","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDc1499b6e-c0dc-41a0-a9d2-f9eefeaf10f6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID5fab36d8-e6c8-4c5c-887c-52bc3ef49dbe","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID1b52bf1e-623e-4f18-b0fd-98bb3ed6d7e2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID441dd302-e070-4f8f-9f07-03463c3223d9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDcc693871-876e-45bd-9b5e-28a58fb3fb7e","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDcc693871-876e-45bd-9b5e-28a58fb3fb7e"}},{"type":"GetParameter","id":"EID0bfbb6d6-2f62-4026-ac51-5030f88e1a4e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDf0874f2c-0fe7-41db-a0b6-2d17d5badefc","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDf0874f2c-0fe7-41db-a0b6-2d17d5badefc"}},{"type":"Message","id":"EIDd936c9bb-ca0b-4f1f-96bf-1f7a77cfde54","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDd936c9bb-ca0b-4f1f-96bf-1f7a77cfde54"}},{"type":"Message","id":"EID668ed1f3-5f0e-4ca2-87b9-d133516c717f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID668ed1f3-5f0e-4ca2-87b9-d133516c717f"}},{"type":"GetParameter","id":"EIDcb62b208-3dbd-4745-b56c-0633b69a8399","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDd42c295b-3e56-48ac-8e63-fa2b6bf69c5e","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDd42c295b-3e56-48ac-8e63-fa2b6bf69c5e"}},{"type":"GetParameter","id":"EIDf9699028-55f8-4016-bd92-124362db18f1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID1676639b-2ed0-4657-b94e-3c824ef6f35f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID1676639b-2ed0-4657-b94e-3c824ef6f35f"}},{"type":"Message","id":"EID1f97c4fc-7289-427f-9c74-4a59906169d6","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID1f97c4fc-7289-427f-9c74-4a59906169d6"}},{"type":"ServiceResponse","id":"EIDc12e4ca9-b310-4fdf-bc98-597f39770e47","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDc12e4ca9-b310-4fdf-bc98-597f39770e47"}},{"type":"Error","id":"EID01d06264-3964-4229-abb8-58c7c4ce35d3","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID01d06264-3964-4229-abb8-58c7c4ce35d3"}},{"type":"GetParameter","id":"EID0da66912-64b1-4b81-a380-07786e04ef9b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDcab4293d-6a39-41c6-904e-4c3f40938582","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDcab4293d-6a39-41c6-904e-4c3f40938582"}},{"type":"ServiceEndpoint","id":"EIDa90aa8e9-2f16-4368-9250-e5512ad77e87","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID6880918b-758a-4651-a182-816c2b8fc40c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID6880918b-758a-4651-a182-816c2b8fc40c"}},{"type":"ServiceEndpoint","id":"EIDf8d0d268-3c3e-480f-bf55-427268a0a45a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDbf9cfd6d-bde6-40cd-96b1-841863f5328c","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDbf9cfd6d-bde6-40cd-96b1-841863f5328c"}},{"type":"ServiceEndpoint","id":"EID0a3b0cf7-7b54-4efe-a15e-a8c13bda1f05","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDed6ee06a-9499-4be6-8361-e0bd14115124","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDed6ee06a-9499-4be6-8361-e0bd14115124"}},{"type":"Message","id":"EIDb3a06a14-4752-4eea-aa5a-cc6f19b81f1e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDb3a06a14-4752-4eea-aa5a-cc6f19b81f1e"}},{"type":"ServiceEndpoint","id":"EID4b40b75c-d7bb-4f48-aeab-aabe0b67aedb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID891d14f9-fbd9-4d9e-b039-bdccb471a647","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID891d14f9-fbd9-4d9e-b039-bdccb471a647"}},{"type":"ServiceEndpoint","id":"EIDf03dbffa-24f1-4a05-a896-6fb2acef4ff5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDa9340c51-c501-4226-9557-e8da7c8a874e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID0d60889d-45ba-4802-af4c-4abd692b71ff","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID0d60889d-45ba-4802-af4c-4abd692b71ff"}},{"type":"ServiceResponse","id":"EID83bb8910-77dd-40fc-b545-1c54cca40db1","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID83bb8910-77dd-40fc-b545-1c54cca40db1"}},{"type":"Error","id":"EIDcfd61bb1-e0b2-4fd6-888b-20180c02d333","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDcfd61bb1-e0b2-4fd6-888b-20180c02d333"}},{"type":"GetParameter","id":"EID186bdfb4-e900-4350-8902-3ef16ad1c4fb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDede20b83-f108-4351-befe-313fef6eeb49","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID17c1111b-14ce-4168-a9db-bff47728dcdb","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID17c1111b-14ce-4168-a9db-bff47728dcdb"}},{"type":"GetParameter","id":"EIDcdda7433-e255-4103-acbb-2151c4c48b8a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID1cddda9e-02be-4730-9993-6c31c993d13e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID1cddda9e-02be-4730-9993-6c31c993d13e"}},{"type":"Message","id":"EID0b3f9c3f-7a32-46db-9dd0-baa53ac1369b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID0b3f9c3f-7a32-46db-9dd0-baa53ac1369b"}},{"type":"ServiceEndpoint","id":"EID0b485cd1-7239-4a04-9a3a-a8bac78d8f93","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDc50b38e1-3765-492e-aab4-847022cf30ee","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDc50b38e1-3765-492e-aab4-847022cf30ee"}},{"type":"ServiceResponse","id":"EID8a5139e4-dee7-4738-b2cb-a331a8e39395","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID8a5139e4-dee7-4738-b2cb-a331a8e39395"}},{"type":"GetParameter","id":"EIDea7de182-0863-4c8e-9ff4-ed9ce1c6794e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID39959f06-1a77-456f-aaf8-116da0664677","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID39959f06-1a77-456f-aaf8-116da0664677"}},{"type":"ServiceResponse","id":"EID39725fb1-ddc5-40de-b4e2-aec5526fcbc1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID39725fb1-ddc5-40de-b4e2-aec5526fcbc1"}},{"type":"ServiceResponse","id":"EIDda1a49f0-99da-4b55-8d64-8c01271542d9","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDda1a49f0-99da-4b55-8d64-8c01271542d9"}},{"type":"Message","id":"EID0a0104b4-bdfa-4c50-9266-a6e35909715f","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID0a0104b4-bdfa-4c50-9266-a6e35909715f"}},{"type":"Message","id":"EIDf926abf0-ffbd-4193-a3ac-65f0edbe3133","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDf926abf0-ffbd-4193-a3ac-65f0edbe3133"}},{"type":"ServiceEndpoint","id":"EID2c4cecfe-0d1f-4eaa-be4e-df13251f7cec","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"LogFile","id":"EIDd84416a0-fba5-432d-aa59-58504a8fde56","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDd84416a0-fba5-432d-aa59-58504a8fde56"}},{"type":"Message","id":"EID47ef04bb-9c19-4dea-8186-4b4bf6f328cd","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID47ef04bb-9c19-4dea-8186-4b4bf6f328cd"}},{"type":"ServiceEndpoint","id":"EID557b0835-ea6f-46cb-abdf-c46c090f452e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDff3221cf-18d1-44ea-9621-5037f15f163e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDeaa52333-a74b-4eba-b98a-356553b0c878","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDeaa52333-a74b-4eba-b98a-356553b0c878"}},{"type":"Message","id":"EID7dc283b3-d8b4-42cc-abd3-17b3e58b3ce9","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID7dc283b3-d8b4-42cc-abd3-17b3e58b3ce9"}},{"type":"GetParameter","id":"EID117afb10-a38b-4aed-aa5c-a85a51c5eccc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID6e41153a-365a-4e58-af80-64c33b3a218c","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID6e41153a-365a-4e58-af80-64c33b3a218c"}},{"type":"GetParameter","id":"EID68c679d6-01b8-4bcc-8116-f252866c2399","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID2538ab8f-a733-42c9-8234-2207c313f779","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EID384d13a6-2923-460d-ae42-c62c4c466deb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDcb87433b-749f-46fb-a2cf-4498e8ba8415","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDcb87433b-749f-46fb-a2cf-4498e8ba8415"}},{"type":"ServiceEndpoint","id":"EID02712325-c935-4ff5-9870-f5f9a936d462","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID4724d9e3-3025-4bba-a206-20bc5fb590d7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID4724d9e3-3025-4bba-a206-20bc5fb590d7"}},{"type":"Error","id":"EID2254e9d8-6bdc-4e48-9cd6-4ae08d586e4f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID2254e9d8-6bdc-4e48-9cd6-4ae08d586e4f"}},{"type":"Message","id":"EID88ae5592-3843-4813-8597-746228293c45","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID88ae5592-3843-4813-8597-746228293c45"}},{"type":"GetParameter","id":"EIDa514bbd2-562b-46bc-8211-be3fe8baf48a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDfff0dc9a-0146-4796-a43e-12f0c2736f7c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EID8555636e-9d42-4546-8f69-a81c0b6dbe69","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID0d62bc1a-a75d-4fea-b50e-c17ce9ae8acd","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID0d62bc1a-a75d-4fea-b50e-c17ce9ae8acd"}},{"type":"GetParameter","id":"EIDe199aa09-a9ed-470f-9de8-6d8ae460e3e3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EIDaf5fac0e-0b54-47a2-b00c-79e1c59ffe29","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDaf5fac0e-0b54-47a2-b00c-79e1c59ffe29"}},{"type":"Message","id":"EID74799d74-3c58-4424-a694-297acfeaace5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID74799d74-3c58-4424-a694-297acfeaace5"}},{"type":"GetParameter","id":"EID30cb70e4-e4e9-4568-b3b6-647f7f91a292","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID606bd9e0-240b-44ec-b460-80e112afcefb","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID606bd9e0-240b-44ec-b460-80e112afcefb"}},{"type":"GetParameter","id":"EIDcbf0cf25-5ab4-4df2-86d8-2c387f9f095d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID382b392c-99c6-402c-bfe2-0efc6a1fffe2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID382b392c-99c6-402c-bfe2-0efc6a1fffe2"}},{"type":"GetParameter","id":"EIDdd9d8584-29d2-497e-8a9a-cb98a31aad88","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDf0d37e24-8959-41b2-8ef7-a216715e5eae","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDf0d37e24-8959-41b2-8ef7-a216715e5eae"}},{"type":"ServiceEndpoint","id":"EID7d46fb19-3e94-479d-9f0d-3a371a0a840c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EID13659eb3-1710-4350-a522-3b7b8b6aeae3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID7d8e1cc7-8d58-4013-beca-b91885f37333","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID67a56eb3-c92a-48cc-97fa-2ed0c55fac2d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDc625d313-9086-4be8-8c47-5394dc6d02f6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDd3824e59-3998-4c0c-841b-d010564304bf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDd3824e59-3998-4c0c-841b-d010564304bf"}},{"type":"ServiceResponse","id":"EID88c59ff4-d2cc-4d09-b09d-de174ae2196f","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID88c59ff4-d2cc-4d09-b09d-de174ae2196f"}},{"type":"GetParameter","id":"EID287ce000-7fa6-4229-b126-5ec96457898a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDfe0fdd83-db26-4e83-9be1-68af40ef2787","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID01269b77-6311-4bf4-b3de-210ec7bd2809","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID33697881-1343-41ad-8de7-eda05840ec5e","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID33697881-1343-41ad-8de7-eda05840ec5e"}},{"type":"ServiceEndpoint","id":"EIDe174547b-92cc-4139-9394-8539ecee1b1a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID45b0e5cf-a510-41fe-8e09-96008c927410","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID45b0e5cf-a510-41fe-8e09-96008c927410"}},{"type":"ServiceResponse","id":"EIDcad704f6-149a-41d7-9303-6ce553986ce2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDcad704f6-149a-41d7-9303-6ce553986ce2"}},{"type":"Message","id":"EIDe5e01f75-ecc5-47c2-bcdf-99e285679040","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDe5e01f75-ecc5-47c2-bcdf-99e285679040"}},{"type":"ServiceResponse","id":"EID7abac4a5-e6c7-4654-a651-e2abb0d443ac","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID7abac4a5-e6c7-4654-a651-e2abb0d443ac"}},{"type":"Message","id":"EID1b9d027e-6e1f-451f-8344-c3b874059a11","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID1b9d027e-6e1f-451f-8344-c3b874059a11"}},{"type":"ServiceEndpoint","id":"EID26988d9a-909e-4720-8a88-95b79a91110a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID405fd4e8-37c1-45fd-ad9a-727db17b99b6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDac2c2d4e-936c-478c-a638-8a2e50edbfd7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID5b6e6a99-8fad-4808-a9eb-e1803cc87a84","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EID9e05b22f-5cc4-4bbe-92ce-c0f9874dd6d4","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID9e05b22f-5cc4-4bbe-92ce-c0f9874dd6d4"}},{"type":"ServiceResponse","id":"EIDc6f255fd-1ae0-4a23-a817-d7d4b9277797","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDc6f255fd-1ae0-4a23-a817-d7d4b9277797"}},{"type":"ServiceResponse","id":"EID02be9563-3e5e-495b-abc3-1a6cfb25e066","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID02be9563-3e5e-495b-abc3-1a6cfb25e066"}},{"type":"Message","id":"EID141932d2-92b4-4852-b721-b046e2cde8a3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID141932d2-92b4-4852-b721-b046e2cde8a3"}},{"type":"Error","id":"EIDa67a82e2-bef2-48d9-8ff9-2eb225a2d00a","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDa67a82e2-bef2-48d9-8ff9-2eb225a2d00a"}},{"type":"ServiceEndpoint","id":"EID260399ee-c92c-495c-b165-a01cb093d11e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDf7c2be52-db4a-4505-bf24-1f2f289c9b77","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EIDf7c2be52-db4a-4505-bf24-1f2f289c9b77"}},{"type":"GetParameter","id":"EIDbdb1bf35-b966-45cb-bca9-d488b51d357a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDefe44298-d07f-4140-b94c-899d43db93ce","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID95dd8087-0aec-4767-b4b4-9384337f0020","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID752712ea-c9f8-408e-8b91-363c18dbcc5d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID752712ea-c9f8-408e-8b91-363c18dbcc5d"}},{"type":"GetParameter","id":"EID806484ec-e38b-4aef-bb24-660b20606def","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID8e1b90b2-2aeb-4cfc-8061-ec02eb1c6ebd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EID821076a0-5eb6-4c36-8443-001e93bf247d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDd6892932-13d3-4636-85ac-8d838c1e6260/Attachments/EID821076a0-5eb6-4c36-8443-001e93bf247d"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:10:36Z","duration":12736,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.010
13:10:59.128 [print] EIDa7d72319-9376-4bab-b3ee-7243a71d6853
* print response.EtfItemCollection.testRuns.TestRun.status 0.001
13:10:59.129 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:10:59.130 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:10:59.131 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:10:59.132 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/a7d72319-9376-4bab-b3ee-7243a71d6853.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:10:59.133 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/a7d72319-9376-4bab-b3ee-7243a71d6853.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:10:59.133 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDa7d72319-9376-4bab-b3ee-7243a71d6853/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.012
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.019
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.001
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.006
13:10:59.177 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.006
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.007
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
13:10:59.192 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
13:10:59.192 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.003
1.916
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:18:41.787 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-natura2000/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.915
13:18:41.788 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 288
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-natura2000/wfs?request=GetCapabilities"}}}

13:18:43.703 response time in milliseconds: 1809.62
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:18:43 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804723525","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:18:43.703 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
3.314
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:10:26.950 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/tn-cte/wfs?"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.307
13:10:26.956 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 257
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/tn-cte/wfs?"}}}

13:10:30.257 response time in milliseconds: 3196.12
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:10:30 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804230064","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.006
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:10:30.264 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
3.280
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:13:35.273 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ahn2/wcs?request=GetCapabilities&service=WCS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.278
13:13:35.276 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 283
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ahn2/wcs?request=GetCapabilities&service=WCS"}}}

13:13:38.552 response time in milliseconds: 3171.18
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:13:38 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804418376","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:13:38.552 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
29.561
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:18:34.934 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 8.007
13:18:34.935 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

13:18:42.940 response time in milliseconds: 7237.11
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:18:42 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:18:40 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/12bb92b7-6dcf-44a5-bb37-1828e7842c89.json","testRuns":{"TestRun":{"id":"EID12bb92b7-6dcf-44a5-bb37-1828e7842c89","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:18:39.322Z","testTasks":{"TestTask":{"id":"EID7f3c4b63-3be0-4906-b1d0-5cf22098ef40","parent":{"ref":"EID12bb92b7-6dcf-44a5-bb37-1828e7842c89"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDc05f1b94-a456-4bcd-9975-4cbe4dc8a115"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID12bb92b7-6dcf-44a5-bb37-1828e7842c89/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDc05f1b94-a456-4bcd-9975-4cbe4dc8a115","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:18:35.374Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:18:37.814Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:18:42.942 [print] EID12bb92b7-6dcf-44a5-bb37-1828e7842c89
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:18:42.942 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:18:42.943 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:18:42.943 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/12bb92b7-6dcf-44a5-bb37-1828e7842c89.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:18:42.943 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID12bb92b7-6dcf-44a5-bb37-1828e7842c89/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:18:42.943 [print] statuspath TestRuns/EID12bb92b7-6dcf-44a5-bb37-1828e7842c89
* print 'progresspath ', progresspath 0.000
13:18:42.943 [print] progresspath  TestRuns/EID12bb92b7-6dcf-44a5-bb37-1828e7842c89/progress
Given path progresspath 0.000
When method GET 0.580
13:18:42.944 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID12bb92b7-6dcf-44a5-bb37-1828e7842c89/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:43.523 response time in milliseconds: 578.05
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:18:43 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["27.10.2020 13:18:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:39 UTC 2020)","27.10.2020 13:18:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:39 - Preparing 1 Test Task:","27.10.2020 13:18:39 -  TestTask 1 (7f3c4b63-3be0-4906-b1d0-5cf22098ef40)","27.10.2020 13:18:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:39 -  with parameters: ","27.10.2020 13:18:39 - etf.testcases = *","27.10.2020 13:18:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:39 - Setting state to CREATED","27.10.2020 13:18:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:40 - Starting TestRun.12bb92b7-6dcf-44a5-bb37-1828e7842c89 at 2020-10-27T13:18:41Z","27.10.2020 13:18:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:41 - Project Properties: ","27.10.2020 13:18:41 - etf.testcases - * ","27.10.2020 13:18:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:18:41 - username -  ","27.10.2020 13:18:41 - authUser -  ","27.10.2020 13:18:41 - authMethod - basic ","27.10.2020 13:18:41 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:18:43.524 [print] {
  "val": "16",
  "max": "17",
  "log": [
    "27.10.2020 13:18:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:39 UTC 2020)",
    "27.10.2020 13:18:39 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:18:39 - Preparing 1 Test Task:",
    "27.10.2020 13:18:39 -  TestTask 1 (7f3c4b63-3be0-4906-b1d0-5cf22098ef40)",
    "27.10.2020 13:18:39 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:18:39 -  with parameters: ",
    "27.10.2020 13:18:39 - etf.testcases = *",
    "27.10.2020 13:18:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:18:39 - Setting state to CREATED",
    "27.10.2020 13:18:39 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:18:40 - Starting TestRun.12bb92b7-6dcf-44a5-bb37-1828e7842c89 at 2020-10-27T13:18:41Z",
    "27.10.2020 13:18:41 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:18:41 - Project Properties: ",
    "27.10.2020 13:18:41 - etf.testcases - * ",
    "27.10.2020 13:18:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "27.10.2020 13:18:41 - username -  ",
    "27.10.2020 13:18:41 - authUser -  ",
    "27.10.2020 13:18:41 - authMethod - basic ",
    "27.10.2020 13:18:41 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 18.577
13:18:43.524 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID12bb92b7-6dcf-44a5-bb37-1828e7842c89/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:44.044 response time in milliseconds: 519.13
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:18:43 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["27.10.2020 13:18:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:39 UTC 2020)","27.10.2020 13:18:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:39 - Preparing 1 Test Task:","27.10.2020 13:18:39 -  TestTask 1 (7f3c4b63-3be0-4906-b1d0-5cf22098ef40)","27.10.2020 13:18:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:39 -  with parameters: ","27.10.2020 13:18:39 - etf.testcases = *","27.10.2020 13:18:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:39 - Setting state to CREATED","27.10.2020 13:18:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:40 - Starting TestRun.12bb92b7-6dcf-44a5-bb37-1828e7842c89 at 2020-10-27T13:18:41Z","27.10.2020 13:18:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:41 - Project Properties: ","27.10.2020 13:18:41 - etf.testcases - * ","27.10.2020 13:18:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:18:41 - username -  ","27.10.2020 13:18:41 - authUser -  ","27.10.2020 13:18:41 - authMethod - basic ","27.10.2020 13:18:41 - TestRunTask initialized"]}

13:18:44.044 retry condition not satisfied: response.val == response.max
13:18:44.044 sleeping before retry #1
13:18:49.045 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID12bb92b7-6dcf-44a5-bb37-1828e7842c89/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:49.565 response time in milliseconds: 518.97
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:18:49 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"69","max":"70","log":["27.10.2020 13:18:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:39 UTC 2020)","27.10.2020 13:18:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:39 - Preparing 1 Test Task:","27.10.2020 13:18:39 -  TestTask 1 (7f3c4b63-3be0-4906-b1d0-5cf22098ef40)","27.10.2020 13:18:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:39 -  with parameters: ","27.10.2020 13:18:39 - etf.testcases = *","27.10.2020 13:18:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:39 - Setting state to CREATED","27.10.2020 13:18:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:40 - Starting TestRun.12bb92b7-6dcf-44a5-bb37-1828e7842c89 at 2020-10-27T13:18:41Z","27.10.2020 13:18:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:41 - Project Properties: ","27.10.2020 13:18:41 - etf.testcases - * ","27.10.2020 13:18:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:18:41 - username -  ","27.10.2020 13:18:41 - authUser -  ","27.10.2020 13:18:41 - authMethod - basic ","27.10.2020 13:18:41 - TestRunTask initialized","27.10.2020 13:18:46 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:18:46 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:18:48 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027"]}

13:18:49.565 retry condition not satisfied: response.val == response.max
13:18:49.565 sleeping before retry #2
13:18:54.566 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID12bb92b7-6dcf-44a5-bb37-1828e7842c89/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:55.080 response time in milliseconds: 513.81
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:18:55 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["27.10.2020 13:18:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:39 UTC 2020)","27.10.2020 13:18:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:39 - Preparing 1 Test Task:","27.10.2020 13:18:39 -  TestTask 1 (7f3c4b63-3be0-4906-b1d0-5cf22098ef40)","27.10.2020 13:18:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:39 -  with parameters: ","27.10.2020 13:18:39 - etf.testcases = *","27.10.2020 13:18:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:39 - Setting state to CREATED","27.10.2020 13:18:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:40 - Starting TestRun.12bb92b7-6dcf-44a5-bb37-1828e7842c89 at 2020-10-27T13:18:41Z","27.10.2020 13:18:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:41 - Project Properties: ","27.10.2020 13:18:41 - etf.testcases - * ","27.10.2020 13:18:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:18:41 - username -  ","27.10.2020 13:18:41 - authUser -  ","27.10.2020 13:18:41 - authMethod - basic ","27.10.2020 13:18:41 - TestRunTask initialized","27.10.2020 13:18:46 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:18:46 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:18:48 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:18:50 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:18:50 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:18:51 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:51 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:51 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:51 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:51 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:51 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:51 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:18:51 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:51 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:51 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:51 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:51 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:51 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:18:52 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:52 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:52 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:52 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:18:52 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:18:52 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:52 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:18:52 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:53 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:53 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:18:53 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:53 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:18:55.080 retry condition not satisfied: response.val == response.max
13:18:55.080 sleeping before retry #3
13:19:00.081 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID12bb92b7-6dcf-44a5-bb37-1828e7842c89/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:02.101 response time in milliseconds: 2019.37
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:19:02 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:19:02.101 retry condition satisfied
* print response 0.000
13:19:02.102 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 2.393
13:19:02.102 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID12bb92b7-6dcf-44a5-bb37-1828e7842c89
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:04.495 response time in milliseconds: 2392.57
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Cache-Control: public, max-age=120
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:19:04 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Last-Modified: Tue, 27 Oct 2020 13:19:00 GMT
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":0,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/.json"}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:19:04.496 [print]
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:19:04.496 [print]
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:71 - javascript evaluation failed: response.EtfItemCollection.testRuns.TestRun.status, TypeError: Cannot read property "TestRun" from undefined in <eval> at line number 1
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
3.659
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.001
* print testRunRequest 0.002
13:13:39.478 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.653
13:13:39.483 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 286
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs?request=GetCapabilities"}}}

13:13:43.134 response time in milliseconds: 3543.39
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:13:42 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804422941","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:13:43.134 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
2:6.105
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:19:53.297 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 19.921
13:19:53.298 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}

13:20:13.214 response time in milliseconds: 19268.10
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:20:12 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:19:57 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/388f33a6-4cda-40d3-a6d1-694b0eefeff2.json","testRuns":{"TestRun":{"id":"EID388f33a6-4cda-40d3-a6d1-694b0eefeff2","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:19:56.607Z","testTasks":{"TestTask":{"id":"EID7448b73c-6706-4565-a8b9-32cb0dc9db09","parent":{"ref":"EID388f33a6-4cda-40d3-a6d1-694b0eefeff2"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID0ac6145b-81b0-4ebf-a642-6b759229ac3f"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID0ac6145b-81b0-4ebf-a642-6b759229ac3f","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:19:53.739Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:19:56.082Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.005
13:20:13.224 [print] EID388f33a6-4cda-40d3-a6d1-694b0eefeff2
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:20:13.224 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:20:13.225 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:20:13.225 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/388f33a6-4cda-40d3-a6d1-694b0eefeff2.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:20:13.225 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:20:13.226 [print] statuspath TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2
* print 'progresspath ', progresspath 0.000
13:20:13.227 [print] progresspath  TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
Given path progresspath 0.000
When method GET 0.521
13:20:13.230 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:13.748 response time in milliseconds: 516.93
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:20:13 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"58","max":"59","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:56 - Setting state to CREATED","27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z","27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:58 - Project Properties: ","27.10.2020 13:19:58 - etf.testcases - * ","27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:58 - username -  ","27.10.2020 13:19:58 - authUser -  ","27.10.2020 13:19:58 - authMethod - basic ","27.10.2020 13:19:58 - TestRunTask initialized","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:20:13.748 [print] {
  "val": "58",
  "max": "59",
  "log": [
    "27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)",
    "27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:19:56 - Preparing 1 Test Task:",
    "27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)",
    "27.10.2020 13:19:56 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:19:56 -  with parameters: ",
    "27.10.2020 13:19:56 - etf.testcases = *",
    "27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:19:56 - Setting state to CREATED",
    "27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z",
    "27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:19:58 - Project Properties: ",
    "27.10.2020 13:19:58 - etf.testcases - * ",
    "27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ",
    "27.10.2020 13:19:58 - username -  ",
    "27.10.2020 13:19:58 - authUser -  ",
    "27.10.2020 13:19:58 - authMethod - basic ",
    "27.10.2020 13:19:58 - TestRunTask initialized",
    "27.10.2020 13:20:12 ERROR Assertion failed with error 'TR.incorrectFeedSelfReference'"
  ]
}
Given path progresspath 0.000
When method GET 1:45.654
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:62 - too many retry attempts: 20
13:20:13.749 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:14.262 response time in milliseconds: 512.52
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:20:14 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"62","max":"63","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:56 - Setting state to CREATED","27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z","27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:58 - Project Properties: ","27.10.2020 13:19:58 - etf.testcases - * ","27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:58 - username -  ","27.10.2020 13:19:58 - authUser -  ","27.10.2020 13:19:58 - authMethod - basic ","27.10.2020 13:19:58 - TestRunTask initialized","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}

13:20:14.262 retry condition not satisfied: response.val == response.max
13:20:14.262 sleeping before retry #1
13:20:19.263 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:19.774 response time in milliseconds: 510.20
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:20:19 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"78","max":"79","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:56 - Setting state to CREATED","27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z","27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:58 - Project Properties: ","27.10.2020 13:19:58 - etf.testcases - * ","27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:58 - username -  ","27.10.2020 13:19:58 - authUser -  ","27.10.2020 13:19:58 - authMethod - basic ","27.10.2020 13:19:58 - TestRunTask initialized","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}

13:20:19.774 retry condition not satisfied: response.val == response.max
13:20:19.774 sleeping before retry #2
13:20:24.775 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:25.298 response time in milliseconds: 522.22
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:20:25 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"141","max":"142","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:56 - Setting state to CREATED","27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z","27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:58 - Project Properties: ","27.10.2020 13:19:58 - etf.testcases - * ","27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:58 - username -  ","27.10.2020 13:19:58 - authUser -  ","27.10.2020 13:19:58 - authMethod - basic ","27.10.2020 13:19:58 - TestRunTask initialized","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:21 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:20:25.298 retry condition not satisfied: response.val == response.max
13:20:25.298 sleeping before retry #3
13:20:30.299 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:30.811 response time in milliseconds: 511.54
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:20:30 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:56 - Setting state to CREATED","27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z","27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:58 - Project Properties: ","27.10.2020 13:19:58 - etf.testcases - * ","27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:58 - username -  ","27.10.2020 13:19:58 - authUser -  ","27.10.2020 13:19:58 - authMethod - basic ","27.10.2020 13:19:58 - TestRunTask initialized","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:21 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:20:30.811 retry condition not satisfied: response.val == response.max
13:20:30.811 sleeping before retry #4
13:20:35.812 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:36.343 response time in milliseconds: 530.87
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:20:36 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:56 - Setting state to CREATED","27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z","27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:58 - Project Properties: ","27.10.2020 13:19:58 - etf.testcases - * ","27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:58 - username -  ","27.10.2020 13:19:58 - authUser -  ","27.10.2020 13:19:58 - authMethod - basic ","27.10.2020 13:19:58 - TestRunTask initialized","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:21 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:20:36.343 retry condition not satisfied: response.val == response.max
13:20:36.343 sleeping before retry #5
13:20:41.344 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:41.860 response time in milliseconds: 514.69
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:20:41 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:56 - Setting state to CREATED","27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z","27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:58 - Project Properties: ","27.10.2020 13:19:58 - etf.testcases - * ","27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:58 - username -  ","27.10.2020 13:19:58 - authUser -  ","27.10.2020 13:19:58 - authMethod - basic ","27.10.2020 13:19:58 - TestRunTask initialized","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:21 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:20:41.861 retry condition not satisfied: response.val == response.max
13:20:41.861 sleeping before retry #6
13:20:46.861 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:47.400 response time in milliseconds: 538.58
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:20:47 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:56 - Setting state to CREATED","27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z","27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:58 - Project Properties: ","27.10.2020 13:19:58 - etf.testcases - * ","27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:58 - username -  ","27.10.2020 13:19:58 - authUser -  ","27.10.2020 13:19:58 - authMethod - basic ","27.10.2020 13:19:58 - TestRunTask initialized","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:21 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:20:47.401 retry condition not satisfied: response.val == response.max
13:20:47.401 sleeping before retry #7
13:20:52.402 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:52.915 response time in milliseconds: 512.79
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Tue, 27 Oct 2020 13:20:52 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:56 - Setting state to CREATED","27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z","27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:58 - Project Properties: ","27.10.2020 13:19:58 - etf.testcases - * ","27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:58 - username -  ","27.10.2020 13:19:58 - authUser -  ","27.10.2020 13:19:58 - authMethod - basic ","27.10.2020 13:19:58 - TestRunTask initialized","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:21 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:20:52.916 retry condition not satisfied: response.val == response.max
13:20:52.916 sleeping before retry #8
13:20:57.917 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:58.447 response time in milliseconds: 518.17
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Tue, 27 Oct 2020 13:20:58 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:56 - Setting state to CREATED","27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z","27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:58 - Project Properties: ","27.10.2020 13:19:58 - etf.testcases - * ","27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:58 - username -  ","27.10.2020 13:19:58 - authUser -  ","27.10.2020 13:19:58 - authMethod - basic ","27.10.2020 13:19:58 - TestRunTask initialized","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:21 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:20:58.447 retry condition not satisfied: response.val == response.max
13:20:58.447 sleeping before retry #9
13:21:03.448 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:04.203 response time in milliseconds: 754.43
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Tue, 27 Oct 2020 13:21:04 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:56 - Setting state to CREATED","27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z","27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:58 - Project Properties: ","27.10.2020 13:19:58 - etf.testcases - * ","27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:58 - username -  ","27.10.2020 13:19:58 - authUser -  ","27.10.2020 13:19:58 - authMethod - basic ","27.10.2020 13:19:58 - TestRunTask initialized","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:21 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:21:04.203 retry condition not satisfied: response.val == response.max
13:21:04.203 sleeping before retry #10
13:21:09.204 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:09.723 response time in milliseconds: 518.82
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Tue, 27 Oct 2020 13:21:09 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:56 - Setting state to CREATED","27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z","27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:58 - Project Properties: ","27.10.2020 13:19:58 - etf.testcases - * ","27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:58 - username -  ","27.10.2020 13:19:58 - authUser -  ","27.10.2020 13:19:58 - authMethod - basic ","27.10.2020 13:19:58 - TestRunTask initialized","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:21 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:21:09.723 retry condition not satisfied: response.val == response.max
13:21:09.723 sleeping before retry #11
13:21:14.724 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:15.234 response time in milliseconds: 509.07
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Tue, 27 Oct 2020 13:21:15 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:56 - Setting state to CREATED","27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z","27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:58 - Project Properties: ","27.10.2020 13:19:58 - etf.testcases - * ","27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:58 - username -  ","27.10.2020 13:19:58 - authUser -  ","27.10.2020 13:19:58 - authMethod - basic ","27.10.2020 13:19:58 - TestRunTask initialized","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:21 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:21:15.237 retry condition not satisfied: response.val == response.max
13:21:15.237 sleeping before retry #12
13:21:20.238 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:20.754 response time in milliseconds: 515.58
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Tue, 27 Oct 2020 13:21:20 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:56 - Setting state to CREATED","27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z","27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:58 - Project Properties: ","27.10.2020 13:19:58 - etf.testcases - * ","27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:58 - username -  ","27.10.2020 13:19:58 - authUser -  ","27.10.2020 13:19:58 - authMethod - basic ","27.10.2020 13:19:58 - TestRunTask initialized","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:21 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:21:20.755 retry condition not satisfied: response.val == response.max
13:21:20.755 sleeping before retry #13
13:21:25.756 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:26.330 response time in milliseconds: 574.25
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Tue, 27 Oct 2020 13:21:26 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:56 - Setting state to CREATED","27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z","27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:58 - Project Properties: ","27.10.2020 13:19:58 - etf.testcases - * ","27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:58 - username -  ","27.10.2020 13:19:58 - authUser -  ","27.10.2020 13:19:58 - authMethod - basic ","27.10.2020 13:19:58 - TestRunTask initialized","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:21 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:21:22 ERROR Response did not meet SLA 45891/30000","27.10.2020 13:21:22 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:21:25 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:21:26.331 retry condition not satisfied: response.val == response.max
13:21:26.331 sleeping before retry #14
13:21:31.331 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:31.842 response time in milliseconds: 509.56
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Tue, 27 Oct 2020 13:21:31 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:56 - Setting state to CREATED","27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z","27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:58 - Project Properties: ","27.10.2020 13:19:58 - etf.testcases - * ","27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:58 - username -  ","27.10.2020 13:19:58 - authUser -  ","27.10.2020 13:19:58 - authMethod - basic ","27.10.2020 13:19:58 - TestRunTask initialized","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:21 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:21:22 ERROR Response did not meet SLA 45891/30000","27.10.2020 13:21:22 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:21:25 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:21:31.842 retry condition not satisfied: response.val == response.max
13:21:31.842 sleeping before retry #15
13:21:36.843 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:37.361 response time in milliseconds: 517.54
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Tue, 27 Oct 2020 13:21:37 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:56 - Setting state to CREATED","27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z","27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:58 - Project Properties: ","27.10.2020 13:19:58 - etf.testcases - * ","27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:58 - username -  ","27.10.2020 13:19:58 - authUser -  ","27.10.2020 13:19:58 - authMethod - basic ","27.10.2020 13:19:58 - TestRunTask initialized","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:21 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:21:22 ERROR Response did not meet SLA 45891/30000","27.10.2020 13:21:22 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:21:25 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:21:37.361 retry condition not satisfied: response.val == response.max
13:21:37.361 sleeping before retry #16
13:21:42.362 request:
19 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
19 > Accept-Encoding: gzip,deflate
19 > Connection: Keep-Alive
19 > Host: inspire.ec.europa.eu
19 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:42.870 response time in milliseconds: 507.81
19 < 200
19 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
19 < Connection: Keep-Alive
19 < Content-Type: application/json;charset=UTF-8
19 < Date: Tue, 27 Oct 2020 13:21:42 GMT
19 < Keep-Alive: timeout=3, max=100
19 < Server: nginx/1.16.1
19 < Vary: Origin
19 < X-Frame-Options: SAMEORIGIN
19 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:56 - Setting state to CREATED","27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z","27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:58 - Project Properties: ","27.10.2020 13:19:58 - etf.testcases - * ","27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:58 - username -  ","27.10.2020 13:19:58 - authUser -  ","27.10.2020 13:19:58 - authMethod - basic ","27.10.2020 13:19:58 - TestRunTask initialized","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:21 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:21:22 ERROR Response did not meet SLA 45891/30000","27.10.2020 13:21:22 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:21:25 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:21:42.871 retry condition not satisfied: response.val == response.max
13:21:42.871 sleeping before retry #17
13:21:47.871 request:
20 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
20 > Accept-Encoding: gzip,deflate
20 > Connection: Keep-Alive
20 > Host: inspire.ec.europa.eu
20 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:48.384 response time in milliseconds: 512.22
20 < 200
20 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
20 < Connection: Keep-Alive
20 < Content-Type: application/json;charset=UTF-8
20 < Date: Tue, 27 Oct 2020 13:21:48 GMT
20 < Keep-Alive: timeout=3, max=100
20 < Server: nginx/1.16.1
20 < Vary: Origin
20 < X-Frame-Options: SAMEORIGIN
20 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:56 - Setting state to CREATED","27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z","27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:58 - Project Properties: ","27.10.2020 13:19:58 - etf.testcases - * ","27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:58 - username -  ","27.10.2020 13:19:58 - authUser -  ","27.10.2020 13:19:58 - authMethod - basic ","27.10.2020 13:19:58 - TestRunTask initialized","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:21 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:21:22 ERROR Response did not meet SLA 45891/30000","27.10.2020 13:21:22 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:21:25 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:21:48.384 retry condition not satisfied: response.val == response.max
13:21:48.384 sleeping before retry #18
13:21:53.385 request:
21 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
21 > Accept-Encoding: gzip,deflate
21 > Connection: Keep-Alive
21 > Host: inspire.ec.europa.eu
21 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:53.894 response time in milliseconds: 508.17
21 < 200
21 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
21 < Connection: Keep-Alive
21 < Content-Type: application/json;charset=UTF-8
21 < Date: Tue, 27 Oct 2020 13:21:53 GMT
21 < Keep-Alive: timeout=3, max=100
21 < Server: nginx/1.16.1
21 < Vary: Origin
21 < X-Frame-Options: SAMEORIGIN
21 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:56 - Setting state to CREATED","27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z","27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:58 - Project Properties: ","27.10.2020 13:19:58 - etf.testcases - * ","27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:58 - username -  ","27.10.2020 13:19:58 - authUser -  ","27.10.2020 13:19:58 - authMethod - basic ","27.10.2020 13:19:58 - TestRunTask initialized","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:21 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:21:22 ERROR Response did not meet SLA 45891/30000","27.10.2020 13:21:22 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:21:25 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:21:53.894 retry condition not satisfied: response.val == response.max
13:21:53.894 sleeping before retry #19
13:21:58.895 request:
22 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID388f33a6-4cda-40d3-a6d1-694b0eefeff2/progress
22 > Accept-Encoding: gzip,deflate
22 > Connection: Keep-Alive
22 > Host: inspire.ec.europa.eu
22 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:59.403 response time in milliseconds: 507.56
22 < 200
22 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
22 < Connection: Keep-Alive
22 < Content-Type: application/json;charset=UTF-8
22 < Date: Tue, 27 Oct 2020 13:21:59 GMT
22 < Keep-Alive: timeout=3, max=100
22 < Server: nginx/1.16.1
22 < Vary: Origin
22 < X-Frame-Options: SAMEORIGIN
22 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:19:56 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:56 UTC 2020)","27.10.2020 13:19:56 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:56 - Preparing 1 Test Task:","27.10.2020 13:19:56 -  TestTask 1 (7448b73c-6706-4565-a8b9-32cb0dc9db09)","27.10.2020 13:19:56 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:56 -  with parameters: ","27.10.2020 13:19:56 - etf.testcases = *","27.10.2020 13:19:56 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:56 - Setting state to CREATED","27.10.2020 13:19:56 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:57 - Starting TestRun.388f33a6-4cda-40d3-a6d1-694b0eefeff2 at 2020-10-27T13:19:58Z","27.10.2020 13:19:58 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:58 - Project Properties: ","27.10.2020 13:19:58 - etf.testcases - * ","27.10.2020 13:19:58 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:58 - username -  ","27.10.2020 13:19:58 - authUser -  ","27.10.2020 13:19:58 - authMethod - basic ","27.10.2020 13:19:58 - TestRunTask initialized","27.10.2020 13:20:12 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:21 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:21:22 ERROR Response did not meet SLA 45891/30000","27.10.2020 13:21:22 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:21:25 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:21:59.403 retry condition not satisfied: response.val == response.max
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
20.228
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:13:09.599 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegennacht/v1/wfs?service=WFS&request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.001
And request inspireload 0.000
When method post 20.226
13:13:09.601 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 314
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegennacht/v1/wfs?service=WFS&request=GetCapabilities"}}}

13:13:29.827 response time in milliseconds: 20119.22
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:13:29 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804409646","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:13:29.827 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
2:0.927
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:14:06.870 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 9.499
13:14:06.871 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}

13:14:16.367 response time in milliseconds: 8763.37
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:14:15 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:14:13 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091.json","testRuns":{"TestRun":{"id":"EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:14:12.785Z","testTasks":{"TestTask":{"id":"EID1ae31ba2-dcc1-413c-8bd7-24599586d396","parent":{"ref":"EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDdfd56ce1-28f8-4756-b5cd-2fe17faa6821"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDdfd56ce1-28f8-4756-b5cd-2fe17faa6821","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:14:07.322Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:14:12.083Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.004
13:14:16.375 [print] EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091
* print response.EtfItemCollection.testRuns.TestRun.status 0.001
13:14:16.376 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:14:16.377 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:14:16.377 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:14:16.378 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.001
13:14:16.380 [print] statuspath TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091
* print 'progresspath ', progresspath 0.000
13:14:16.381 [print] progresspath  TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
Given path progresspath 0.000
When method GET 0.585
13:14:16.384 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:16.967 response time in milliseconds: 582.38
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:14:16 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)","27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:12 - Preparing 1 Test Task:","27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)","27.10.2020 13:14:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:12 -  with parameters: ","27.10.2020 13:14:12 - etf.testcases = *","27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:12 - Setting state to CREATED","27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:14:16.967 [print] {
  "val": "0",
  "max": "240",
  "log": [
    "27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)",
    "27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:14:12 - Preparing 1 Test Task:",
    "27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)",
    "27.10.2020 13:14:12 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:14:12 -  with parameters: ",
    "27.10.2020 13:14:12 - etf.testcases = *",
    "27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:14:12 - Setting state to CREATED",
    "27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING"
  ]
}
Given path progresspath 0.000
When method GET 1:50.831
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:62 - too many retry attempts: 20
13:14:16.968 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:17.479 response time in milliseconds: 509.93
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:14:17 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)","27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:12 - Preparing 1 Test Task:","27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)","27.10.2020 13:14:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:12 -  with parameters: ","27.10.2020 13:14:12 - etf.testcases = *","27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:12 - Setting state to CREATED","27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING"]}

13:14:17.479 retry condition not satisfied: response.val == response.max
13:14:17.479 sleeping before retry #1
13:14:22.480 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:23.009 response time in milliseconds: 524.98
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:14:22 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"7","max":"8","log":["27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)","27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:12 - Preparing 1 Test Task:","27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)","27.10.2020 13:14:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:12 -  with parameters: ","27.10.2020 13:14:12 - etf.testcases = *","27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:12 - Setting state to CREATED","27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:18 - Starting TestRun.9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091 at 2020-10-27T13:14:19Z","27.10.2020 13:14:19 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:19 - Project Properties: ","27.10.2020 13:14:19 - etf.testcases - * ","27.10.2020 13:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:14:19 - username -  ","27.10.2020 13:14:19 - authUser -  ","27.10.2020 13:14:19 - authMethod - basic ","27.10.2020 13:14:19 - TestRunTask initialized"]}

13:14:23.009 retry condition not satisfied: response.val == response.max
13:14:23.009 sleeping before retry #2
13:14:28.010 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:28.522 response time in milliseconds: 511.20
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:14:28 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)","27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:12 - Preparing 1 Test Task:","27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)","27.10.2020 13:14:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:12 -  with parameters: ","27.10.2020 13:14:12 - etf.testcases = *","27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:12 - Setting state to CREATED","27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:18 - Starting TestRun.9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091 at 2020-10-27T13:14:19Z","27.10.2020 13:14:19 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:19 - Project Properties: ","27.10.2020 13:14:19 - etf.testcases - * ","27.10.2020 13:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:14:19 - username -  ","27.10.2020 13:14:19 - authUser -  ","27.10.2020 13:14:19 - authMethod - basic ","27.10.2020 13:14:19 - TestRunTask initialized"]}

13:14:28.523 retry condition not satisfied: response.val == response.max
13:14:28.523 sleeping before retry #3
13:14:33.524 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:34.040 response time in milliseconds: 515.08
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:14:33 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"41","max":"42","log":["27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)","27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:12 - Preparing 1 Test Task:","27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)","27.10.2020 13:14:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:12 -  with parameters: ","27.10.2020 13:14:12 - etf.testcases = *","27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:12 - Setting state to CREATED","27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:18 - Starting TestRun.9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091 at 2020-10-27T13:14:19Z","27.10.2020 13:14:19 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:19 - Project Properties: ","27.10.2020 13:14:19 - etf.testcases - * ","27.10.2020 13:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:14:19 - username -  ","27.10.2020 13:14:19 - authUser -  ","27.10.2020 13:14:19 - authMethod - basic ","27.10.2020 13:14:19 - TestRunTask initialized"]}

13:14:34.040 retry condition not satisfied: response.val == response.max
13:14:34.040 sleeping before retry #4
13:14:39.041 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:39.626 response time in milliseconds: 580.74
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:14:39 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"53","max":"54","log":["27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)","27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:12 - Preparing 1 Test Task:","27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)","27.10.2020 13:14:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:12 -  with parameters: ","27.10.2020 13:14:12 - etf.testcases = *","27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:12 - Setting state to CREATED","27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:18 - Starting TestRun.9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091 at 2020-10-27T13:14:19Z","27.10.2020 13:14:19 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:19 - Project Properties: ","27.10.2020 13:14:19 - etf.testcases - * ","27.10.2020 13:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:14:19 - username -  ","27.10.2020 13:14:19 - authUser -  ","27.10.2020 13:14:19 - authMethod - basic ","27.10.2020 13:14:19 - TestRunTask initialized"]}

13:14:39.627 retry condition not satisfied: response.val == response.max
13:14:39.627 sleeping before retry #5
13:14:44.628 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:45.146 response time in milliseconds: 517.78
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:14:45 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"78","max":"79","log":["27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)","27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:12 - Preparing 1 Test Task:","27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)","27.10.2020 13:14:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:12 -  with parameters: ","27.10.2020 13:14:12 - etf.testcases = *","27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:12 - Setting state to CREATED","27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:18 - Starting TestRun.9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091 at 2020-10-27T13:14:19Z","27.10.2020 13:14:19 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:19 - Project Properties: ","27.10.2020 13:14:19 - etf.testcases - * ","27.10.2020 13:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:14:19 - username -  ","27.10.2020 13:14:19 - authUser -  ","27.10.2020 13:14:19 - authMethod - basic ","27.10.2020 13:14:19 - TestRunTask initialized","27.10.2020 13:14:40 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}

13:14:45.147 retry condition not satisfied: response.val == response.max
13:14:45.147 sleeping before retry #6
13:14:50.148 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:50.687 response time in milliseconds: 536.55
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:14:50 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"90","max":"91","log":["27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)","27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:12 - Preparing 1 Test Task:","27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)","27.10.2020 13:14:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:12 -  with parameters: ","27.10.2020 13:14:12 - etf.testcases = *","27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:12 - Setting state to CREATED","27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:18 - Starting TestRun.9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091 at 2020-10-27T13:14:19Z","27.10.2020 13:14:19 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:19 - Project Properties: ","27.10.2020 13:14:19 - etf.testcases - * ","27.10.2020 13:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:14:19 - username -  ","27.10.2020 13:14:19 - authUser -  ","27.10.2020 13:14:19 - authMethod - basic ","27.10.2020 13:14:19 - TestRunTask initialized","27.10.2020 13:14:40 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:50 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:14:50.687 retry condition not satisfied: response.val == response.max
13:14:50.687 sleeping before retry #7
13:14:55.688 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:56.198 response time in milliseconds: 509.14
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Tue, 27 Oct 2020 13:14:56 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"171","max":"172","log":["27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)","27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:12 - Preparing 1 Test Task:","27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)","27.10.2020 13:14:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:12 -  with parameters: ","27.10.2020 13:14:12 - etf.testcases = *","27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:12 - Setting state to CREATED","27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:18 - Starting TestRun.9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091 at 2020-10-27T13:14:19Z","27.10.2020 13:14:19 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:19 - Project Properties: ","27.10.2020 13:14:19 - etf.testcases - * ","27.10.2020 13:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:14:19 - username -  ","27.10.2020 13:14:19 - authUser -  ","27.10.2020 13:14:19 - authMethod - basic ","27.10.2020 13:14:19 - TestRunTask initialized","27.10.2020 13:14:40 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:50 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:14:56.203 retry condition not satisfied: response.val == response.max
13:14:56.203 sleeping before retry #8
13:15:01.204 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:02.392 response time in milliseconds: 1187.34
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Tue, 27 Oct 2020 13:15:02 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)","27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:12 - Preparing 1 Test Task:","27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)","27.10.2020 13:14:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:12 -  with parameters: ","27.10.2020 13:14:12 - etf.testcases = *","27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:12 - Setting state to CREATED","27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:18 - Starting TestRun.9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091 at 2020-10-27T13:14:19Z","27.10.2020 13:14:19 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:19 - Project Properties: ","27.10.2020 13:14:19 - etf.testcases - * ","27.10.2020 13:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:14:19 - username -  ","27.10.2020 13:14:19 - authUser -  ","27.10.2020 13:14:19 - authMethod - basic ","27.10.2020 13:14:19 - TestRunTask initialized","27.10.2020 13:14:40 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:50 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:15:02.394 retry condition not satisfied: response.val == response.max
13:15:02.394 sleeping before retry #9
13:15:07.395 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:07.933 response time in milliseconds: 528.89
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Tue, 27 Oct 2020 13:15:07 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)","27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:12 - Preparing 1 Test Task:","27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)","27.10.2020 13:14:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:12 -  with parameters: ","27.10.2020 13:14:12 - etf.testcases = *","27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:12 - Setting state to CREATED","27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:18 - Starting TestRun.9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091 at 2020-10-27T13:14:19Z","27.10.2020 13:14:19 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:19 - Project Properties: ","27.10.2020 13:14:19 - etf.testcases - * ","27.10.2020 13:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:14:19 - username -  ","27.10.2020 13:14:19 - authUser -  ","27.10.2020 13:14:19 - authMethod - basic ","27.10.2020 13:14:19 - TestRunTask initialized","27.10.2020 13:14:40 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:50 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:15:07.933 retry condition not satisfied: response.val == response.max
13:15:07.933 sleeping before retry #10
13:15:12.934 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:13.444 response time in milliseconds: 509.11
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Tue, 27 Oct 2020 13:15:13 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)","27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:12 - Preparing 1 Test Task:","27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)","27.10.2020 13:14:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:12 -  with parameters: ","27.10.2020 13:14:12 - etf.testcases = *","27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:12 - Setting state to CREATED","27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:18 - Starting TestRun.9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091 at 2020-10-27T13:14:19Z","27.10.2020 13:14:19 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:19 - Project Properties: ","27.10.2020 13:14:19 - etf.testcases - * ","27.10.2020 13:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:14:19 - username -  ","27.10.2020 13:14:19 - authUser -  ","27.10.2020 13:14:19 - authMethod - basic ","27.10.2020 13:14:19 - TestRunTask initialized","27.10.2020 13:14:40 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:50 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:15:13.445 retry condition not satisfied: response.val == response.max
13:15:13.445 sleeping before retry #11
13:15:18.446 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:23.527 response time in milliseconds: 5080.82
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Tue, 27 Oct 2020 13:15:23 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)","27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:12 - Preparing 1 Test Task:","27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)","27.10.2020 13:14:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:12 -  with parameters: ","27.10.2020 13:14:12 - etf.testcases = *","27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:12 - Setting state to CREATED","27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:18 - Starting TestRun.9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091 at 2020-10-27T13:14:19Z","27.10.2020 13:14:19 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:19 - Project Properties: ","27.10.2020 13:14:19 - etf.testcases - * ","27.10.2020 13:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:14:19 - username -  ","27.10.2020 13:14:19 - authUser -  ","27.10.2020 13:14:19 - authMethod - basic ","27.10.2020 13:14:19 - TestRunTask initialized","27.10.2020 13:14:40 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:50 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:15:23.527 retry condition not satisfied: response.val == response.max
13:15:23.527 sleeping before retry #12
13:15:28.528 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:29.035 response time in milliseconds: 506.32
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Tue, 27 Oct 2020 13:15:28 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)","27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:12 - Preparing 1 Test Task:","27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)","27.10.2020 13:14:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:12 -  with parameters: ","27.10.2020 13:14:12 - etf.testcases = *","27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:12 - Setting state to CREATED","27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:18 - Starting TestRun.9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091 at 2020-10-27T13:14:19Z","27.10.2020 13:14:19 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:19 - Project Properties: ","27.10.2020 13:14:19 - etf.testcases - * ","27.10.2020 13:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:14:19 - username -  ","27.10.2020 13:14:19 - authUser -  ","27.10.2020 13:14:19 - authMethod - basic ","27.10.2020 13:14:19 - TestRunTask initialized","27.10.2020 13:14:40 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:50 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:15:29.041 retry condition not satisfied: response.val == response.max
13:15:29.041 sleeping before retry #13
13:15:34.042 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:34.574 response time in milliseconds: 531.81
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Tue, 27 Oct 2020 13:15:34 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)","27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:12 - Preparing 1 Test Task:","27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)","27.10.2020 13:14:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:12 -  with parameters: ","27.10.2020 13:14:12 - etf.testcases = *","27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:12 - Setting state to CREATED","27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:18 - Starting TestRun.9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091 at 2020-10-27T13:14:19Z","27.10.2020 13:14:19 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:19 - Project Properties: ","27.10.2020 13:14:19 - etf.testcases - * ","27.10.2020 13:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:14:19 - username -  ","27.10.2020 13:14:19 - authUser -  ","27.10.2020 13:14:19 - authMethod - basic ","27.10.2020 13:14:19 - TestRunTask initialized","27.10.2020 13:14:40 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:50 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:15:34.575 retry condition not satisfied: response.val == response.max
13:15:34.575 sleeping before retry #14
13:15:39.576 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:40.114 response time in milliseconds: 537.19
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Tue, 27 Oct 2020 13:15:40 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)","27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:12 - Preparing 1 Test Task:","27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)","27.10.2020 13:14:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:12 -  with parameters: ","27.10.2020 13:14:12 - etf.testcases = *","27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:12 - Setting state to CREATED","27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:18 - Starting TestRun.9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091 at 2020-10-27T13:14:19Z","27.10.2020 13:14:19 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:19 - Project Properties: ","27.10.2020 13:14:19 - etf.testcases - * ","27.10.2020 13:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:14:19 - username -  ","27.10.2020 13:14:19 - authUser -  ","27.10.2020 13:14:19 - authMethod - basic ","27.10.2020 13:14:19 - TestRunTask initialized","27.10.2020 13:14:40 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:50 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:15:40.120 retry condition not satisfied: response.val == response.max
13:15:40.120 sleeping before retry #15
13:15:45.121 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:45.635 response time in milliseconds: 513.18
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Tue, 27 Oct 2020 13:15:45 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)","27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:12 - Preparing 1 Test Task:","27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)","27.10.2020 13:14:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:12 -  with parameters: ","27.10.2020 13:14:12 - etf.testcases = *","27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:12 - Setting state to CREATED","27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:18 - Starting TestRun.9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091 at 2020-10-27T13:14:19Z","27.10.2020 13:14:19 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:19 - Project Properties: ","27.10.2020 13:14:19 - etf.testcases - * ","27.10.2020 13:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:14:19 - username -  ","27.10.2020 13:14:19 - authUser -  ","27.10.2020 13:14:19 - authMethod - basic ","27.10.2020 13:14:19 - TestRunTask initialized","27.10.2020 13:14:40 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:50 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:15:45.637 retry condition not satisfied: response.val == response.max
13:15:45.637 sleeping before retry #16
13:15:50.638 request:
19 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
19 > Accept-Encoding: gzip,deflate
19 > Connection: Keep-Alive
19 > Host: inspire.ec.europa.eu
19 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:51.219 response time in milliseconds: 580.29
19 < 200
19 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
19 < Connection: Keep-Alive
19 < Content-Type: application/json;charset=UTF-8
19 < Date: Tue, 27 Oct 2020 13:15:51 GMT
19 < Keep-Alive: timeout=3, max=100
19 < Server: nginx/1.16.1
19 < Vary: Origin
19 < X-Frame-Options: SAMEORIGIN
19 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)","27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:12 - Preparing 1 Test Task:","27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)","27.10.2020 13:14:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:12 -  with parameters: ","27.10.2020 13:14:12 - etf.testcases = *","27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:12 - Setting state to CREATED","27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:18 - Starting TestRun.9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091 at 2020-10-27T13:14:19Z","27.10.2020 13:14:19 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:19 - Project Properties: ","27.10.2020 13:14:19 - etf.testcases - * ","27.10.2020 13:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:14:19 - username -  ","27.10.2020 13:14:19 - authUser -  ","27.10.2020 13:14:19 - authMethod - basic ","27.10.2020 13:14:19 - TestRunTask initialized","27.10.2020 13:14:40 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:50 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:15:51.224 retry condition not satisfied: response.val == response.max
13:15:51.224 sleeping before retry #17
13:15:56.225 request:
20 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
20 > Accept-Encoding: gzip,deflate
20 > Connection: Keep-Alive
20 > Host: inspire.ec.europa.eu
20 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:56.768 response time in milliseconds: 541.84
20 < 200
20 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
20 < Connection: Keep-Alive
20 < Content-Type: application/json;charset=UTF-8
20 < Date: Tue, 27 Oct 2020 13:15:56 GMT
20 < Keep-Alive: timeout=3, max=100
20 < Server: nginx/1.16.1
20 < Vary: Origin
20 < X-Frame-Options: SAMEORIGIN
20 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)","27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:12 - Preparing 1 Test Task:","27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)","27.10.2020 13:14:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:12 -  with parameters: ","27.10.2020 13:14:12 - etf.testcases = *","27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:12 - Setting state to CREATED","27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:18 - Starting TestRun.9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091 at 2020-10-27T13:14:19Z","27.10.2020 13:14:19 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:19 - Project Properties: ","27.10.2020 13:14:19 - etf.testcases - * ","27.10.2020 13:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:14:19 - username -  ","27.10.2020 13:14:19 - authUser -  ","27.10.2020 13:14:19 - authMethod - basic ","27.10.2020 13:14:19 - TestRunTask initialized","27.10.2020 13:14:40 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:50 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:15:55 ERROR Response did not meet SLA 50633/30000","27.10.2020 13:15:55 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:15:56.768 retry condition not satisfied: response.val == response.max
13:15:56.768 sleeping before retry #18
13:16:01.769 request:
21 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
21 > Accept-Encoding: gzip,deflate
21 > Connection: Keep-Alive
21 > Host: inspire.ec.europa.eu
21 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:02.285 response time in milliseconds: 515.31
21 < 200
21 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
21 < Connection: Keep-Alive
21 < Content-Type: application/json;charset=UTF-8
21 < Date: Tue, 27 Oct 2020 13:16:02 GMT
21 < Keep-Alive: timeout=3, max=100
21 < Server: nginx/1.16.1
21 < Vary: Origin
21 < X-Frame-Options: SAMEORIGIN
21 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)","27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:12 - Preparing 1 Test Task:","27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)","27.10.2020 13:14:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:12 -  with parameters: ","27.10.2020 13:14:12 - etf.testcases = *","27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:12 - Setting state to CREATED","27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:18 - Starting TestRun.9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091 at 2020-10-27T13:14:19Z","27.10.2020 13:14:19 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:19 - Project Properties: ","27.10.2020 13:14:19 - etf.testcases - * ","27.10.2020 13:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:14:19 - username -  ","27.10.2020 13:14:19 - authUser -  ","27.10.2020 13:14:19 - authMethod - basic ","27.10.2020 13:14:19 - TestRunTask initialized","27.10.2020 13:14:40 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:50 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:15:55 ERROR Response did not meet SLA 50633/30000","27.10.2020 13:15:55 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:15:58 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:16:02.286 retry condition not satisfied: response.val == response.max
13:16:02.286 sleeping before retry #19
13:16:07.287 request:
22 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091/progress
22 > Accept-Encoding: gzip,deflate
22 > Connection: Keep-Alive
22 > Host: inspire.ec.europa.eu
22 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:07.798 response time in milliseconds: 510.58
22 < 200
22 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
22 < Connection: Keep-Alive
22 < Content-Type: application/json;charset=UTF-8
22 < Date: Tue, 27 Oct 2020 13:16:07 GMT
22 < Keep-Alive: timeout=3, max=100
22 < Server: nginx/1.16.1
22 < Vary: Origin
22 < X-Frame-Options: SAMEORIGIN
22 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:14:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:12 UTC 2020)","27.10.2020 13:14:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:12 - Preparing 1 Test Task:","27.10.2020 13:14:12 -  TestTask 1 (1ae31ba2-dcc1-413c-8bd7-24599586d396)","27.10.2020 13:14:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:12 -  with parameters: ","27.10.2020 13:14:12 - etf.testcases = *","27.10.2020 13:14:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:12 - Setting state to CREATED","27.10.2020 13:14:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:14:18 - Starting TestRun.9191d8b2-3ab8-43a1-a3e0-0d0c0d66d091 at 2020-10-27T13:14:19Z","27.10.2020 13:14:19 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:19 - Project Properties: ","27.10.2020 13:14:19 - etf.testcases - * ","27.10.2020 13:14:19 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:14:19 - username -  ","27.10.2020 13:14:19 - authUser -  ","27.10.2020 13:14:19 - authMethod - basic ","27.10.2020 13:14:19 - TestRunTask initialized","27.10.2020 13:14:40 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:50 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:15:55 ERROR Response did not meet SLA 50633/30000","27.10.2020 13:15:55 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:15:58 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:16:07.798 retry condition not satisfied: response.val == response.max
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
34.877
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:18:34.077 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 10.359
13:18:34.078 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

13:18:44.435 response time in milliseconds: 9596.99
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:18:43 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:18:42 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/900f6475-f984-49ec-87ed-f0f7e31b5c12.json","testRuns":{"TestRun":{"id":"EID900f6475-f984-49ec-87ed-f0f7e31b5c12","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:18:39.322Z","testTasks":{"TestTask":{"id":"EIDae2441f7-5d93-4349-89ee-0f74c6d5c8fa","parent":{"ref":"EID900f6475-f984-49ec-87ed-f0f7e31b5c12"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID1c4b1ae5-9ea5-44f7-a4ea-a25d89f25942"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID900f6475-f984-49ec-87ed-f0f7e31b5c12/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID1c4b1ae5-9ea5-44f7-a4ea-a25d89f25942","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:18:34.514Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:18:37.48Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.004
13:18:44.441 [print] EID900f6475-f984-49ec-87ed-f0f7e31b5c12
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:18:44.442 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:18:44.442 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:18:44.443 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/900f6475-f984-49ec-87ed-f0f7e31b5c12.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:18:44.446 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID900f6475-f984-49ec-87ed-f0f7e31b5c12/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.008
13:18:44.454 [print] statuspath TestRuns/EID900f6475-f984-49ec-87ed-f0f7e31b5c12
* print 'progresspath ', progresspath 0.000
13:18:44.454 [print] progresspath  TestRuns/EID900f6475-f984-49ec-87ed-f0f7e31b5c12/progress
Given path progresspath 0.000
When method GET 0.525
13:18:44.455 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID900f6475-f984-49ec-87ed-f0f7e31b5c12/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:44.980 response time in milliseconds: 524.32
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:18:44 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["27.10.2020 13:18:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:39 UTC 2020)","27.10.2020 13:18:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:39 - Preparing 1 Test Task:","27.10.2020 13:18:39 -  TestTask 1 (ae2441f7-5d93-4349-89ee-0f74c6d5c8fa)","27.10.2020 13:18:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:39 -  with parameters: ","27.10.2020 13:18:39 - etf.testcases = *","27.10.2020 13:18:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:39 - Setting state to CREATED","27.10.2020 13:18:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:42 - Starting TestRun.900f6475-f984-49ec-87ed-f0f7e31b5c12 at 2020-10-27T13:18:43Z","27.10.2020 13:18:43 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:43 - Project Properties: ","27.10.2020 13:18:43 - etf.testcases - * ","27.10.2020 13:18:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:18:43 - username -  ","27.10.2020 13:18:43 - authUser -  ","27.10.2020 13:18:43 - authMethod - basic ","27.10.2020 13:18:43 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:18:44.980 [print] {
  "val": "12",
  "max": "13",
  "log": [
    "27.10.2020 13:18:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:39 UTC 2020)",
    "27.10.2020 13:18:39 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:18:39 - Preparing 1 Test Task:",
    "27.10.2020 13:18:39 -  TestTask 1 (ae2441f7-5d93-4349-89ee-0f74c6d5c8fa)",
    "27.10.2020 13:18:39 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:18:39 -  with parameters: ",
    "27.10.2020 13:18:39 - etf.testcases = *",
    "27.10.2020 13:18:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:18:39 - Setting state to CREATED",
    "27.10.2020 13:18:39 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:18:42 - Starting TestRun.900f6475-f984-49ec-87ed-f0f7e31b5c12 at 2020-10-27T13:18:43Z",
    "27.10.2020 13:18:43 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:18:43 - Project Properties: ",
    "27.10.2020 13:18:43 - etf.testcases - * ",
    "27.10.2020 13:18:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "27.10.2020 13:18:43 - username -  ",
    "27.10.2020 13:18:43 - authUser -  ",
    "27.10.2020 13:18:43 - authMethod - basic ",
    "27.10.2020 13:18:43 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 18.603
13:18:44.981 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID900f6475-f984-49ec-87ed-f0f7e31b5c12/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:45.488 response time in milliseconds: 506.47
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:18:45 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["27.10.2020 13:18:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:39 UTC 2020)","27.10.2020 13:18:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:39 - Preparing 1 Test Task:","27.10.2020 13:18:39 -  TestTask 1 (ae2441f7-5d93-4349-89ee-0f74c6d5c8fa)","27.10.2020 13:18:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:39 -  with parameters: ","27.10.2020 13:18:39 - etf.testcases = *","27.10.2020 13:18:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:39 - Setting state to CREATED","27.10.2020 13:18:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:42 - Starting TestRun.900f6475-f984-49ec-87ed-f0f7e31b5c12 at 2020-10-27T13:18:43Z","27.10.2020 13:18:43 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:43 - Project Properties: ","27.10.2020 13:18:43 - etf.testcases - * ","27.10.2020 13:18:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:18:43 - username -  ","27.10.2020 13:18:43 - authUser -  ","27.10.2020 13:18:43 - authMethod - basic ","27.10.2020 13:18:43 - TestRunTask initialized"]}

13:18:45.488 retry condition not satisfied: response.val == response.max
13:18:45.488 sleeping before retry #1
13:18:50.489 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID900f6475-f984-49ec-87ed-f0f7e31b5c12/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:51.003 response time in milliseconds: 513.48
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:18:50 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"63","max":"64","log":["27.10.2020 13:18:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:39 UTC 2020)","27.10.2020 13:18:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:39 - Preparing 1 Test Task:","27.10.2020 13:18:39 -  TestTask 1 (ae2441f7-5d93-4349-89ee-0f74c6d5c8fa)","27.10.2020 13:18:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:39 -  with parameters: ","27.10.2020 13:18:39 - etf.testcases = *","27.10.2020 13:18:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:39 - Setting state to CREATED","27.10.2020 13:18:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:42 - Starting TestRun.900f6475-f984-49ec-87ed-f0f7e31b5c12 at 2020-10-27T13:18:43Z","27.10.2020 13:18:43 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:43 - Project Properties: ","27.10.2020 13:18:43 - etf.testcases - * ","27.10.2020 13:18:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:18:43 - username -  ","27.10.2020 13:18:43 - authUser -  ","27.10.2020 13:18:43 - authMethod - basic ","27.10.2020 13:18:43 - TestRunTask initialized","27.10.2020 13:18:48 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:18:48 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:18:50 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027"]}

13:18:51.006 retry condition not satisfied: response.val == response.max
13:18:51.007 sleeping before retry #2
13:18:56.008 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID900f6475-f984-49ec-87ed-f0f7e31b5c12/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:56.515 response time in milliseconds: 505.63
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:18:56 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["27.10.2020 13:18:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:39 UTC 2020)","27.10.2020 13:18:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:39 - Preparing 1 Test Task:","27.10.2020 13:18:39 -  TestTask 1 (ae2441f7-5d93-4349-89ee-0f74c6d5c8fa)","27.10.2020 13:18:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:39 -  with parameters: ","27.10.2020 13:18:39 - etf.testcases = *","27.10.2020 13:18:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:39 - Setting state to CREATED","27.10.2020 13:18:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:42 - Starting TestRun.900f6475-f984-49ec-87ed-f0f7e31b5c12 at 2020-10-27T13:18:43Z","27.10.2020 13:18:43 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:43 - Project Properties: ","27.10.2020 13:18:43 - etf.testcases - * ","27.10.2020 13:18:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:18:43 - username -  ","27.10.2020 13:18:43 - authUser -  ","27.10.2020 13:18:43 - authMethod - basic ","27.10.2020 13:18:43 - TestRunTask initialized","27.10.2020 13:18:48 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:18:48 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:18:50 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:18:52 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:18:52 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:18:53 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:53 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:53 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:53 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:53 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:53 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:53 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:18:53 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:53 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:53 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:53 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:53 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:53 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:18:53 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:53 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:54 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:54 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:18:54 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:18:54 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:54 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:18:54 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:55 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:55 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:18:55 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:55 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:18:56.515 retry condition not satisfied: response.val == response.max
13:18:56.515 sleeping before retry #3
13:19:01.516 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID900f6475-f984-49ec-87ed-f0f7e31b5c12/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:03.584 response time in milliseconds: 2067.63
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:19:03 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:19:03.584 retry condition satisfied
* print response 0.000
13:19:03.585 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 5.334
13:19:03.585 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID900f6475-f984-49ec-87ed-f0f7e31b5c12
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:08.916 response time in milliseconds: 4350.94
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Cache-Control: public, max-age=120
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:19:07 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Last-Modified: Tue, 27 Oct 2020 13:19:03 GMT
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/900f6475-f984-49ec-87ed-f0f7e31b5c12.json","testRuns":{"TestRun":{"id":"EID900f6475-f984-49ec-87ed-f0f7e31b5c12","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:18:39.322Z","testTasks":{"TestTask":{"id":"EIDae2441f7-5d93-4349-89ee-0f74c6d5c8fa","parent":{"ref":"EID900f6475-f984-49ec-87ed-f0f7e31b5c12"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID1c4b1ae5-9ea5-44f7-a4ea-a25d89f25942"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID900f6475-f984-49ec-87ed-f0f7e31b5c12/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID1c4b1ae5-9ea5-44f7-a4ea-a25d89f25942","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:18:34.514Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:18:37.48Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4","testObject":{"ref":"EID1c4b1ae5-9ea5-44f7-a4ea-a25d89f25942"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a35fa3f-0175-1000-c199-c6e11e942c5f","testCaseResults":{"TestCaseResult":[{"id":"EID6a35fa3f-0175-1000-ccda-62dbd30727f8","testStepResults":{"TestStepResult":[{"id":"EID6a35fa3f-0175-1000-6486-3299d71b8ea2","parent":{"ref":"EID6a35fa3f-0175-1000-ccda-62dbd30727f8"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:18:43Z","duration":25,"status":"PASSED"},{"id":"EID6a35fa59-0175-1000-5c62-0aeb84788ad1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35fb40-0175-1000-4afb-56799f4a444f","parent":{"ref":"EID6a35fa59-0175-1000-5c62-0aeb84788ad1"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:18:44Z","duration":0,"status":"PASSED"},{"id":"EID6a35fb40-0175-1000-d928-d375a0d9876f","parent":{"ref":"EID6a35fa59-0175-1000-5c62-0aeb84788ad1"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:18:44Z","duration":0,"status":"PASSED"},{"id":"EID6a35fb40-0175-1000-d51d-668784f3ab97","parent":{"ref":"EID6a35fa59-0175-1000-5c62-0aeb84788ad1"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:18:44Z","duration":0,"status":"PASSED"},{"id":"EID6a35fb40-0175-1000-3a99-dc1c9f151f04","parent":{"ref":"EID6a35fa59-0175-1000-5c62-0aeb84788ad1"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:18:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdbaa4029-1f36-467f-96e2-d81af37670a9"},{"ref":"EIDad2b127f-dd5b-4eca-b174-b2d4cf620f9f"},{"ref":"EID04647236-b4e1-4239-8b82-ce87e2ed1637"}]},"parent":{"ref":"EID6a35fa3f-0175-1000-ccda-62dbd30727f8"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:18:43Z","duration":41,"status":"PASSED"}]},"parent":{"ref":"EID6a35fa3f-0175-1000-c199-c6e11e942c5f"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:18:43Z","duration":266,"status":"PASSED"},{"id":"EID6a35fb49-0175-1000-927e-397b59bec135","testStepResults":{"TestStepResult":{"id":"EID6a35fb49-0175-1000-238a-e14ce94bca61","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35fc07-0175-1000-8c61-db7f32e4b5e3","parent":{"ref":"EID6a35fb49-0175-1000-238a-e14ce94bca61"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:18:44Z","duration":0,"status":"PASSED"},{"id":"EID6a35fc07-0175-1000-df98-16a34f554e86","parent":{"ref":"EID6a35fb49-0175-1000-238a-e14ce94bca61"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:18:44Z","duration":0,"status":"PASSED"},{"id":"EID6a35fc07-0175-1000-fc73-09383a3ee70f","parent":{"ref":"EID6a35fb49-0175-1000-238a-e14ce94bca61"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:18:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5535b2a5-ef23-438f-bb72-5821bd27eafb"},{"ref":"EID5ef220e0-9e11-4584-b795-ad68524b7b4a"},{"ref":"EID18ee399c-1140-4598-b031-643498492779"}]},"parent":{"ref":"EID6a35fb49-0175-1000-927e-397b59bec135"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:18:44Z","duration":67,"status":"PASSED"}},"parent":{"ref":"EID6a35fa3f-0175-1000-c199-c6e11e942c5f"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:18:44Z","duration":190,"status":"PASSED"}]},"parent":{"ref":"EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:18:43Z","duration":456,"status":"PASSED"},{"id":"EID6a35fc07-0175-1000-5178-c38b24b2c67b","testCaseResults":{"TestCaseResult":[{"id":"EID6a35fc07-0175-1000-6915-d7062a6f2ece","testStepResults":{"TestStepResult":[{"id":"EID6a35fc07-0175-1000-54ee-862a4bb6f661","parent":{"ref":"EID6a35fc07-0175-1000-6915-d7062a6f2ece"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:18:44Z","duration":67,"status":"PASSED"},{"id":"EID6a35fc07-0175-1000-8ea7-088aad28bf10","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35fd82-0175-1000-84ab-607e7d783bc3","parent":{"ref":"EID6a35fc07-0175-1000-8ea7-088aad28bf10"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:18:44Z","duration":0,"status":"PASSED"},{"id":"EID6a35fd82-0175-1000-c4da-dc68804efc15","parent":{"ref":"EID6a35fc07-0175-1000-8ea7-088aad28bf10"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:18:44Z","duration":0,"status":"PASSED"},{"id":"EID6a35fd82-0175-1000-bba8-f3c43380af31","parent":{"ref":"EID6a35fc07-0175-1000-8ea7-088aad28bf10"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:18:44Z","duration":0,"status":"PASSED"},{"id":"EID6a35fd82-0175-1000-0956-504fd8030a1f","parent":{"ref":"EID6a35fc07-0175-1000-8ea7-088aad28bf10"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:18:44Z","duration":0,"status":"PASSED"},{"id":"EID6a35fd82-0175-1000-bc2d-8e191a664b0f","parent":{"ref":"EID6a35fc07-0175-1000-8ea7-088aad28bf10"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:18:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd7b6c21e-3672-4875-ab64-25c990fbbccb"},{"ref":"EIDca5f601c-d686-418f-8228-a0d4446e2788"},{"ref":"EID4770136f-6763-4652-985b-af2663314b9a"}]},"parent":{"ref":"EID6a35fc07-0175-1000-6915-d7062a6f2ece"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:18:44Z","duration":85,"status":"PASSED"}]},"parent":{"ref":"EID6a35fc07-0175-1000-5178-c38b24b2c67b"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:18:44Z","duration":379,"status":"PASSED"},{"id":"EID6a35fd8b-0175-1000-20ca-2136f0100269","testStepResults":{"TestStepResult":[{"id":"EID6a35fd8b-0175-1000-bb61-ee645cbe2baa","attachments":{"attachment":[{"ref":"EID6f1c21ac-a6ea-4e95-b2e0-99925cbd1bbe"},{"ref":"EIDa4373f70-05f5-4a77-a7c4-54c28942bb31"}]},"parent":{"ref":"EID6a35fd8b-0175-1000-20ca-2136f0100269"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:18:44Z","duration":198,"status":"PASSED"},{"id":"EID6a35fe8a-0175-1000-7687-0be861b10357","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35ff76-0175-1000-e124-e272317b3c8b","parent":{"ref":"EID6a35fe8a-0175-1000-7687-0be861b10357"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:18:45Z","duration":0,"status":"PASSED"},{"id":"EID6a35ff76-0175-1000-6bf7-11c24aab8fee","parent":{"ref":"EID6a35fe8a-0175-1000-7687-0be861b10357"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:18:45Z","duration":0,"status":"PASSED"},{"id":"EID6a35ff76-0175-1000-36f8-236248f9e710","parent":{"ref":"EID6a35fe8a-0175-1000-7687-0be861b10357"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:18:45Z","duration":0,"status":"PASSED"},{"id":"EID6a35ff76-0175-1000-8ddf-c5ba036bf285","parent":{"ref":"EID6a35fe8a-0175-1000-7687-0be861b10357"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:18:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa5b14790-a06c-4543-86a6-065664b2080d"},{"ref":"EID575d8fab-156a-4f90-aae0-ae7444059fca"},{"ref":"EID0e01b8a2-7932-4047-9352-58eb2a36c15b"}]},"parent":{"ref":"EID6a35fd8b-0175-1000-20ca-2136f0100269"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:18:44Z","duration":114,"status":"PASSED"}]},"parent":{"ref":"EID6a35fc07-0175-1000-5178-c38b24b2c67b"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:18:44Z","duration":491,"status":"PASSED"},{"id":"EID6a35ff76-0175-1000-c8b4-14422dff9637","testStepResults":{"TestStepResult":[{"id":"EID6a35ff76-0175-1000-d10d-e5a2627896bc","attachments":{"attachment":[{"ref":"EID3707a786-424d-4ce5-8479-b6d055596878"},{"ref":"EIDf63c7401-a084-4b5e-81c8-5f94ef71e17f"}]},"parent":{"ref":"EID6a35ff76-0175-1000-c8b4-14422dff9637"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:18:45Z","duration":299,"status":"PASSED"},{"id":"EID6a3600ea-0175-1000-8466-46f9bd0e23bd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36023e-0175-1000-3b4a-c3ade76c8ead","parent":{"ref":"EID6a3600ea-0175-1000-8466-46f9bd0e23bd"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:18:45Z","duration":0,"status":"PASSED"},{"id":"EID6a36023e-0175-1000-7e98-eb6811d88267","parent":{"ref":"EID6a3600ea-0175-1000-8466-46f9bd0e23bd"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:18:45Z","duration":0,"status":"PASSED"},{"id":"EID6a36023e-0175-1000-ac80-44319df8b762","parent":{"ref":"EID6a3600ea-0175-1000-8466-46f9bd0e23bd"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:18:45Z","duration":0,"status":"PASSED"},{"id":"EID6a36023e-0175-1000-d37f-8ccbe9a7399e","parent":{"ref":"EID6a3600ea-0175-1000-8466-46f9bd0e23bd"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:18:45Z","duration":0,"status":"PASSED"},{"id":"EID6a36023e-0175-1000-4ef8-73afcd6e3086","parent":{"ref":"EID6a3600ea-0175-1000-8466-46f9bd0e23bd"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:18:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4516b19c-5702-4ead-af1b-28de58d0639d"},{"ref":"EID57218b08-f903-4359-be6e-7a40f9b1ae74"},{"ref":"EIDba1e41d5-ac8f-4d8c-8c08-f5896a0f2d60"}]},"parent":{"ref":"EID6a35ff76-0175-1000-c8b4-14422dff9637"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:18:45Z","duration":99,"status":"PASSED"}]},"parent":{"ref":"EID6a35fc07-0175-1000-5178-c38b24b2c67b"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:18:45Z","duration":712,"status":"PASSED"},{"id":"EID6a36023e-0175-1000-3e67-c1667f508641","testStepResults":{"TestStepResult":[{"id":"EID6a36023e-0175-1000-48f1-f912424c1b5e","attachments":{"attachment":[{"ref":"EID15f9e04c-3e90-4828-890a-3680386fbc99"},{"ref":"EID78983d2d-daf3-4503-a0f2-1d3dc37eae79"}]},"parent":{"ref":"EID6a36023e-0175-1000-3e67-c1667f508641"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:18:45Z","duration":169,"status":"PASSED"},{"id":"EID6a360314-0175-1000-6592-b05d6b5134b6","parent":{"ref":"EID6a36023e-0175-1000-3e67-c1667f508641"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:18:46Z","duration":0,"status":"PASSED"},{"id":"EID6a360314-0175-1000-dd92-e8330875d4f9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a360405-0175-1000-9b86-91e285d08842","parent":{"ref":"EID6a360314-0175-1000-dd92-e8330875d4f9"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:18:46Z","duration":0,"status":"PASSED"},{"id":"EID6a360405-0175-1000-43d7-b8a315561fa6","parent":{"ref":"EID6a360314-0175-1000-dd92-e8330875d4f9"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:18:46Z","duration":0,"status":"PASSED"},{"id":"EID6a360405-0175-1000-b635-8d952a2ac39b","parent":{"ref":"EID6a360314-0175-1000-dd92-e8330875d4f9"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:18:46Z","duration":0,"status":"PASSED"},{"id":"EID6a360405-0175-1000-1fb4-64aaac86efa5","parent":{"ref":"EID6a360314-0175-1000-dd92-e8330875d4f9"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:18:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID97a205be-d252-452e-bfc2-f05d97f103b7"},{"ref":"EID18b140a9-8ad8-497a-a854-0d3caba8d8be"},{"ref":"EID35c67428-a35c-447a-a066-56c9f530c622"}]},"parent":{"ref":"EID6a36023e-0175-1000-3e67-c1667f508641"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:18:46Z","duration":100,"status":"PASSED"},{"id":"EID6a360405-0175-1000-7a49-9b27614326ba","attachments":{"attachment":{"ref":"EIDcdcc91f3-1a71-4640-85b6-d093d819b404"}},"parent":{"ref":"EID6a36023e-0175-1000-3e67-c1667f508641"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:18:46Z","duration":2,"status":"PASSED"},{"id":"EID6a36041d-0175-1000-0879-f48e2edccf22","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36050b-0175-1000-bbbb-49404a9775f4","parent":{"ref":"EID6a36041d-0175-1000-0879-f48e2edccf22"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:18:46Z","duration":0,"status":"PASSED"},{"id":"EID6a36050b-0175-1000-aff2-fa11ae300d5e","parent":{"ref":"EID6a36041d-0175-1000-0879-f48e2edccf22"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:18:46Z","duration":0,"status":"PASSED"},{"id":"EID6a36050b-0175-1000-a6d3-8ea1d91c5e4b","parent":{"ref":"EID6a36041d-0175-1000-0879-f48e2edccf22"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:18:46Z","duration":0,"status":"PASSED"},{"id":"EID6a36050b-0175-1000-a3cd-c03daf2d2d2f","parent":{"ref":"EID6a36041d-0175-1000-0879-f48e2edccf22"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:18:46Z","duration":0,"status":"PASSED"},{"id":"EID6a36050b-0175-1000-f417-098d718b4b01","parent":{"ref":"EID6a36041d-0175-1000-0879-f48e2edccf22"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:18:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID42c7e1f2-7196-4b64-bdb6-e52672794d8c"},{"ref":"EIDc7b9b306-c12c-44af-b518-5a571c26c9d1"},{"ref":"EIDfb7901bb-fbc7-4563-a4d7-5e47d663a4ce"}]},"parent":{"ref":"EID6a36023e-0175-1000-3e67-c1667f508641"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:18:46Z","duration":37,"status":"PASSED"}]},"parent":{"ref":"EID6a35fc07-0175-1000-5178-c38b24b2c67b"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:18:45Z","duration":717,"status":"PASSED"},{"id":"EID6a36050b-0175-1000-df13-3364491946aa","testStepResults":{"TestStepResult":[{"id":"EID6a36050b-0175-1000-089b-5164d13f806e","attachments":{"attachment":[{"ref":"EID09016db6-e5b4-4d12-9be5-0e4ca1114e2f"},{"ref":"EID5e760a0d-1bef-424c-858b-ed948ced503e"}]},"parent":{"ref":"EID6a36050b-0175-1000-df13-3364491946aa"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:18:46Z","duration":256,"status":"PASSED"},{"id":"EID6a360634-0175-1000-4fd5-c560990e501d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36076d-0175-1000-092d-3e9198499013","parent":{"ref":"EID6a360634-0175-1000-4fd5-c560990e501d"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:18:47Z","duration":0,"status":"PASSED"},{"id":"EID6a36076d-0175-1000-7633-d221bdfe8243","parent":{"ref":"EID6a360634-0175-1000-4fd5-c560990e501d"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:18:47Z","duration":0,"status":"PASSED"},{"id":"EID6a36076d-0175-1000-abb9-4ca6ec3d79ee","parent":{"ref":"EID6a360634-0175-1000-4fd5-c560990e501d"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:18:47Z","duration":0,"status":"PASSED"},{"id":"EID6a36076d-0175-1000-797d-486b3c0d4bb2","parent":{"ref":"EID6a360634-0175-1000-4fd5-c560990e501d"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:18:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID52582694-e13e-44cf-96cc-8ef06ba7bb2f"},{"ref":"EIDb6c65b37-513d-464e-8d37-d81008ce4b50"},{"ref":"EIDb9a0afed-5bd7-4b72-af3b-ddb717d1d0f5"}]},"parent":{"ref":"EID6a36050b-0175-1000-df13-3364491946aa"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:18:46Z","duration":78,"status":"PASSED"}]},"parent":{"ref":"EID6a35fc07-0175-1000-5178-c38b24b2c67b"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:18:46Z","duration":610,"status":"PASSED"},{"id":"EID6a36076d-0175-1000-75d5-7ac48cb10f0f","testStepResults":{"TestStepResult":[{"id":"EID6a36076d-0175-1000-a704-9ad35bbf8798","attachments":{"attachment":[{"ref":"EID317ebd15-a19e-463d-b5c2-f4532974760a"},{"ref":"EID71a97a13-ddf0-402c-bc94-3d2f913c2bc1"}]},"parent":{"ref":"EID6a36076d-0175-1000-75d5-7ac48cb10f0f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:18:47Z","duration":165,"status":"PASSED"},{"id":"EID6a360910-0175-1000-1b5e-4e40d3a5696a","parent":{"ref":"EID6a36076d-0175-1000-75d5-7ac48cb10f0f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:18:47Z","duration":0,"status":"PASSED"},{"id":"EID6a360910-0175-1000-b01f-3d12736beba6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a360a21-0175-1000-bb0e-db84046f8cef","parent":{"ref":"EID6a360910-0175-1000-b01f-3d12736beba6"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:18:47Z","duration":0,"status":"PASSED"},{"id":"EID6a360a21-0175-1000-1a5a-317ed26fe14b","parent":{"ref":"EID6a360910-0175-1000-b01f-3d12736beba6"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:18:47Z","duration":0,"status":"PASSED"},{"id":"EID6a360a21-0175-1000-d315-f932d86185d7","parent":{"ref":"EID6a360910-0175-1000-b01f-3d12736beba6"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:18:47Z","duration":0,"status":"PASSED"},{"id":"EID6a360a21-0175-1000-e22b-6ad37d3c3e25","parent":{"ref":"EID6a360910-0175-1000-b01f-3d12736beba6"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:18:47Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID04a89487-c4ec-4910-93f7-b38e60488d4a"},{"ref":"EID9fed1ca3-31c3-4ccf-9177-501b0281be4d"},{"ref":"EID98e64b74-14df-437a-8182-d1fc03a7cc16"}]},"parent":{"ref":"EID6a36076d-0175-1000-75d5-7ac48cb10f0f"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:18:47Z","duration":87,"status":"PASSED"},{"id":"EID6a360a21-0175-1000-6329-018edab69841","attachments":{"attachment":{"ref":"EIDa1db4596-0e3f-4ca4-a255-97454da0c59c"}},"parent":{"ref":"EID6a36076d-0175-1000-75d5-7ac48cb10f0f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:18:47Z","duration":1,"status":"PASSED"},{"id":"EID6a360a31-0175-1000-05b1-063202908fb4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a360bc3-0175-1000-deb6-c61d225a54fc","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a360a31-0175-1000-05b1-063202908fb4"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:18:48Z","duration":14,"status":"FAILED"},{"id":"EID6a360bd1-0175-1000-869b-a16c5472ee50","parent":{"ref":"EID6a360a31-0175-1000-05b1-063202908fb4"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360bd1-0175-1000-46e3-9987a94ba7a6","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6a360a31-0175-1000-05b1-063202908fb4"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID806e42f1-f593-4c63-845b-e2bf645835ae"},{"ref":"EID04dde083-a4d6-47a4-8c1e-6e8c8681b864"},{"ref":"EIDb652313d-2079-4637-9246-ffd54afa3878"}]},"parent":{"ref":"EID6a36076d-0175-1000-75d5-7ac48cb10f0f"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:18:47Z","duration":277,"status":"FAILED"}]},"parent":{"ref":"EID6a35fc07-0175-1000-5178-c38b24b2c67b"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:18:47Z","duration":1124,"status":"FAILED"},{"id":"EID6a360bd1-0175-1000-f071-517ed5dd8b5c","testStepResults":{"TestStepResult":[{"id":"EID6a360bd1-0175-1000-1b21-93c593da31f5","attachments":{"attachment":[{"ref":"EID969cb28f-2eae-478c-8bba-09b2ea87397a"},{"ref":"EIDd4b3123c-1698-4f41-a23b-8a2f7c959538"}]},"parent":{"ref":"EID6a360bd1-0175-1000-f071-517ed5dd8b5c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:18:48Z","duration":109,"status":"PASSED"},{"id":"EID6a360c81-0175-1000-d72a-fd6047fa6ebc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a360e54-0175-1000-46c6-747a6f0d8854","parent":{"ref":"EID6a360c81-0175-1000-d72a-fd6047fa6ebc"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360e54-0175-1000-5a06-20fa32591783","parent":{"ref":"EID6a360c81-0175-1000-d72a-fd6047fa6ebc"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360e54-0175-1000-ec32-c798da6b23b1","parent":{"ref":"EID6a360c81-0175-1000-d72a-fd6047fa6ebc"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360e54-0175-1000-0b81-3c760010f3f1","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a360c81-0175-1000-d72a-fd6047fa6ebc"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID1586e5bb-de47-41c6-b408-014e8c2d4e23"},{"ref":"EIDc1604a93-01ec-4e7b-b10a-01879b6164a4"},{"ref":"EID0af68667-7ec0-4256-95f3-fe3452aaec23"}]},"parent":{"ref":"EID6a360bd1-0175-1000-f071-517ed5dd8b5c"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:18:48Z","duration":132,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a35fc07-0175-1000-5178-c38b24b2c67b"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:18:48Z","duration":643,"status":"PASSED_MANUAL"},{"id":"EID6a360e54-0175-1000-f134-304f5f491c95","testStepResults":{"TestStepResult":{"id":"EID6a360e54-0175-1000-c219-73bcc37ee49c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a360f82-0175-1000-a686-fe22e4290374","parent":{"ref":"EID6a360e54-0175-1000-c219-73bcc37ee49c"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:18:49Z","duration":1,"status":"PASSED"},{"id":"EID6a360f83-0175-1000-99c4-223a427b3eec","parent":{"ref":"EID6a360e54-0175-1000-c219-73bcc37ee49c"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a360f83-0175-1000-5bf9-705946776a46","parent":{"ref":"EID6a360e54-0175-1000-c219-73bcc37ee49c"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a360f83-0175-1000-ac87-66e428c902cb","parent":{"ref":"EID6a360e54-0175-1000-c219-73bcc37ee49c"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID20b2c339-8700-4147-a847-45136c3f8794"},{"ref":"EIDe6f050d7-3c7a-4604-b15d-53a2e9e1c18b"},{"ref":"EIDec5ec557-7383-4838-9a18-0799436416a3"}]},"parent":{"ref":"EID6a360e54-0175-1000-f134-304f5f491c95"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:18:48Z","duration":68,"status":"PASSED"}},"parent":{"ref":"EID6a35fc07-0175-1000-5178-c38b24b2c67b"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:18:48Z","duration":305,"status":"PASSED"},{"id":"EID6a360f85-0175-1000-5df5-4b9715c1f356","testStepResults":{"TestStepResult":{"id":"EID6a360f85-0175-1000-dd40-ec7a8d56379d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36108b-0175-1000-ce5a-a5ca2a3ef959","parent":{"ref":"EID6a360f85-0175-1000-dd40-ec7a8d56379d"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a36108b-0175-1000-1ada-721113f0a46e","parent":{"ref":"EID6a360f85-0175-1000-dd40-ec7a8d56379d"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a36108b-0175-1000-43e1-0c4a2a9f24c1","parent":{"ref":"EID6a360f85-0175-1000-dd40-ec7a8d56379d"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a36108b-0175-1000-281f-d7cb0f91576a","parent":{"ref":"EID6a360f85-0175-1000-dd40-ec7a8d56379d"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3846861e-ef38-4812-a883-261df8ccd845"},{"ref":"EIDbf6b6446-944d-470f-b2d5-0ba8a82a49db"},{"ref":"EID39647df6-f51f-4bc3-bfdf-e84aa383dc0c"}]},"parent":{"ref":"EID6a360f85-0175-1000-5df5-4b9715c1f356"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:18:49Z","duration":105,"status":"PASSED"}},"parent":{"ref":"EID6a35fc07-0175-1000-5178-c38b24b2c67b"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:18:49Z","duration":262,"status":"PASSED"},{"id":"EID6a36108c-0175-1000-b6e2-683aebd28253","testStepResults":{"TestStepResult":{"id":"EID6a36108c-0175-1000-9d62-b3e80494b091","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EIDeadc6244-8754-4d8c-8e99-699239e2d209"},{"ref":"EIDc3d0bfd8-1ab3-4fcf-8a0f-da0a945abb50"},{"ref":"EIDc193c64f-34fa-40ca-8f3b-37407c11b71d"},{"ref":"EID12591039-d469-4551-a3aa-8d0bce2553d3"},{"ref":"EID775ede4b-72ac-4d58-a61f-7e6c8ecb5ef6"},{"ref":"EID2ab921e9-bbab-4e76-8054-4f70bd960fa0"},{"ref":"EID3099f928-5d53-4871-9be6-88a7e88132f9"},{"ref":"EID64226eb9-e8d1-4091-a007-b141fe81077b"},{"ref":"EID45cd2e62-63b8-4564-9955-a4543a1d0a70"}]},"parent":{"ref":"EID6a36108c-0175-1000-b6e2-683aebd28253"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:18:49Z","duration":636,"status":"SKIPPED"}},"parent":{"ref":"EID6a35fc07-0175-1000-5178-c38b24b2c67b"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:18:49Z","duration":913,"status":"SKIPPED"},{"id":"EID6a36141e-0175-1000-42c5-45359defeef6","testStepResults":{"TestStepResult":{"id":"EID6a36141e-0175-1000-3153-b4019d5be3aa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3614e3-0175-1000-ce72-5e28bd06ecce","parent":{"ref":"EID6a36141e-0175-1000-3153-b4019d5be3aa"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3614e3-0175-1000-8e3a-4e939a302578","parent":{"ref":"EID6a36141e-0175-1000-3153-b4019d5be3aa"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3614e3-0175-1000-0e9b-947ad8913589","parent":{"ref":"EID6a36141e-0175-1000-3153-b4019d5be3aa"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3614e3-0175-1000-0437-88bbfe0ef82b","parent":{"ref":"EID6a36141e-0175-1000-3153-b4019d5be3aa"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID40049442-a9de-4799-8f43-9e37e47cc200"},{"ref":"EID68cbdfd1-af22-4af4-9982-e1a0ea9f6291"},{"ref":"EID041b2761-6898-43cb-9556-64fa4abb5b8d"}]},"parent":{"ref":"EID6a36141e-0175-1000-42c5-45359defeef6"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:18:50Z","duration":90,"status":"PASSED"}},"parent":{"ref":"EID6a35fc07-0175-1000-5178-c38b24b2c67b"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:18:50Z","duration":197,"status":"PASSED"},{"id":"EID6a3614e3-0175-1000-3858-b57329ba9df8","testStepResults":{"TestStepResult":{"id":"EID6a3614e3-0175-1000-40c8-d440e88a4b19","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361612-0175-1000-7400-b1da250b1ee1","parent":{"ref":"EID6a3614e3-0175-1000-40c8-d440e88a4b19"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a361612-0175-1000-138c-49d6585e61ad","parent":{"ref":"EID6a3614e3-0175-1000-40c8-d440e88a4b19"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a361612-0175-1000-e56c-2bde50681713","parent":{"ref":"EID6a3614e3-0175-1000-40c8-d440e88a4b19"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a361612-0175-1000-f097-c39ed60ab59f","parent":{"ref":"EID6a3614e3-0175-1000-40c8-d440e88a4b19"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a361612-0175-1000-4a38-7f37981f1ab9","parent":{"ref":"EID6a3614e3-0175-1000-40c8-d440e88a4b19"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a361612-0175-1000-d5c8-9bf490da4865","parent":{"ref":"EID6a3614e3-0175-1000-40c8-d440e88a4b19"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf59d9dc2-a219-4a64-b165-2690bf3cbd1a"},{"ref":"EIDeb4dd1ce-d802-4feb-b583-cdc6555a3440"},{"ref":"EIDc6d1d156-1913-48fa-bcf2-a2ee37702ef4"}]},"parent":{"ref":"EID6a3614e3-0175-1000-3858-b57329ba9df8"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:18:50Z","duration":37,"status":"PASSED"}},"parent":{"ref":"EID6a35fc07-0175-1000-5178-c38b24b2c67b"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:18:50Z","duration":303,"status":"PASSED"},{"id":"EID6a361612-0175-1000-7e70-a790a5fde3f3","testStepResults":{"TestStepResult":{"id":"EID6a361612-0175-1000-028a-14664e9b17e9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361743-0175-1000-0e73-a920b1a038a2","parent":{"ref":"EID6a361612-0175-1000-028a-14664e9b17e9"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a361743-0175-1000-5cec-a8ff260baa7b","parent":{"ref":"EID6a361612-0175-1000-028a-14664e9b17e9"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a361743-0175-1000-a046-5f994a55d983","parent":{"ref":"EID6a361612-0175-1000-028a-14664e9b17e9"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a361743-0175-1000-bbc8-d3cc0100e608","parent":{"ref":"EID6a361612-0175-1000-028a-14664e9b17e9"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a361743-0175-1000-d8f8-d743768fce7f","parent":{"ref":"EID6a361612-0175-1000-028a-14664e9b17e9"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a361743-0175-1000-b04c-049f74b5a68c","parent":{"ref":"EID6a361612-0175-1000-028a-14664e9b17e9"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID73948d17-6b94-4b1c-989d-986d41b5e949"},{"ref":"EID1564e98c-6413-4715-9b22-3aa0419d7a58"},{"ref":"EIDa1e9aa02-94c8-43c8-8cea-1153cc0a4c7a"}]},"parent":{"ref":"EID6a361612-0175-1000-7e70-a790a5fde3f3"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:18:50Z","duration":133,"status":"PASSED"}},"parent":{"ref":"EID6a35fc07-0175-1000-5178-c38b24b2c67b"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:18:50Z","duration":305,"status":"PASSED"},{"id":"EID6a361743-0175-1000-42a5-946583e5a440","testStepResults":{"TestStepResult":{"id":"EID6a361743-0175-1000-e9f6-d1106fd8c7c4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36181e-0175-1000-0f13-6cee2ab86f07","parent":{"ref":"EID6a361743-0175-1000-e9f6-d1106fd8c7c4"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a36181e-0175-1000-4aff-a0c556059628","parent":{"ref":"EID6a361743-0175-1000-e9f6-d1106fd8c7c4"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a36181e-0175-1000-b868-d84c7282a6bc","parent":{"ref":"EID6a361743-0175-1000-e9f6-d1106fd8c7c4"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a36181e-0175-1000-187d-59f35a9ddb18","parent":{"ref":"EID6a361743-0175-1000-e9f6-d1106fd8c7c4"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5eb4c5ae-ec7c-46c6-a005-d13f7e1554d6"},{"ref":"EIDb401ac38-839f-4ae6-aefe-6b825a493904"},{"ref":"EID82c37ede-247b-4b85-a1a1-5036c3e51007"}]},"parent":{"ref":"EID6a361743-0175-1000-42a5-946583e5a440"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:18:51Z","duration":69,"status":"PASSED"}},"parent":{"ref":"EID6a35fc07-0175-1000-5178-c38b24b2c67b"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:18:51Z","duration":219,"status":"PASSED"},{"id":"EID6a36181e-0175-1000-eee9-d99a9d413046","testStepResults":{"TestStepResult":[{"id":"EID6a36181e-0175-1000-05f1-d223b8bbf855","attachments":{"attachment":[{"ref":"EIDa651e014-80cf-4960-84a2-c0ee4c20fabe"},{"ref":"EID352a67ee-c63b-4a8f-a600-bc8e578da6d7"},{"ref":"EIDa851c561-1449-4255-89a0-d393b846e1c4"},{"ref":"EID4a196b6e-5049-4385-b4d6-620b85b88131"}]},"parent":{"ref":"EID6a36181e-0175-1000-eee9-d99a9d413046"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:18:51Z","duration":367,"status":"PASSED"},{"id":"EID6a361a3e-0175-1000-d6a7-e8036a53281c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361b09-0175-1000-d704-0739e666c6b2","parent":{"ref":"EID6a361a3e-0175-1000-d6a7-e8036a53281c"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361b09-0175-1000-d49d-796230f3421c","parent":{"ref":"EID6a361a3e-0175-1000-d6a7-e8036a53281c"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361b09-0175-1000-e0b6-64b32d982c0a","parent":{"ref":"EID6a361a3e-0175-1000-d6a7-e8036a53281c"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361b09-0175-1000-7625-1327b146d29b","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6a361a3e-0175-1000-d6a7-e8036a53281c"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDb4ed3260-441a-4842-a301-90a1f40d9472"},{"ref":"EIDa2383db0-31f0-4a7f-aaa5-30bfbb8ffda1"},{"ref":"EIDc7f71f59-3e3a-43bd-a1e7-9fb6e09e1aa5"}]},"parent":{"ref":"EID6a36181e-0175-1000-eee9-d99a9d413046"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:18:51Z","duration":55,"status":"FAILED"}]},"parent":{"ref":"EID6a35fc07-0175-1000-5178-c38b24b2c67b"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:18:51Z","duration":747,"status":"FAILED"},{"id":"EID6a361b09-0175-1000-4565-992e79429c74","testStepResults":{"TestStepResult":{"id":"EID6a361b09-0175-1000-e256-0582662bd4bc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361c37-0175-1000-90a0-c02d5e90fab5","parent":{"ref":"EID6a361b09-0175-1000-e256-0582662bd4bc"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361c37-0175-1000-b0cf-34b98ab08205","parent":{"ref":"EID6a361b09-0175-1000-e256-0582662bd4bc"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361c38-0175-1000-91b3-e41aee5f8bf6","parent":{"ref":"EID6a361b09-0175-1000-e256-0582662bd4bc"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361c38-0175-1000-871a-94dcb1b44f2f","parent":{"ref":"EID6a361b09-0175-1000-e256-0582662bd4bc"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID76cbb9b7-e1db-4c59-9c97-95b8155ae2ce"},{"ref":"EID5ce2902b-e7b1-4989-a742-d46259352f2d"},{"ref":"EIDded9ddb0-fd3c-4a43-8792-6a480023a162"}]},"parent":{"ref":"EID6a361b09-0175-1000-4565-992e79429c74"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:18:52Z","duration":35,"status":"PASSED"}},"parent":{"ref":"EID6a35fc07-0175-1000-5178-c38b24b2c67b"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:18:52Z","duration":303,"status":"PASSED"},{"id":"EID6a361c38-0175-1000-79ca-1c910fa3f2b6","testStepResults":{"TestStepResult":[{"id":"EID6a361c38-0175-1000-f35a-3b9c95db623c","parent":{"ref":"EID6a361c38-0175-1000-79ca-1c910fa3f2b6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361c38-0175-1000-551c-ccd3a4656501","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361ced-0175-1000-3a9a-2c78d8fad5cf","parent":{"ref":"EID6a361c38-0175-1000-551c-ccd3a4656501"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361ced-0175-1000-b9f9-c6a1974591e1","parent":{"ref":"EID6a361c38-0175-1000-551c-ccd3a4656501"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361ced-0175-1000-3930-431985b55db7","parent":{"ref":"EID6a361c38-0175-1000-551c-ccd3a4656501"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361ced-0175-1000-c4c2-552ceaadea15","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6a361c38-0175-1000-551c-ccd3a4656501"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDcc2c2539-5fd9-4749-a41a-74f39eed971c"},{"ref":"EID3c1e11c4-2b23-49f2-8d71-b371b06be5cd"},{"ref":"EID07b418c2-a1b1-426e-af3e-ee03aeb1fdfb"}]},"parent":{"ref":"EID6a361c38-0175-1000-79ca-1c910fa3f2b6"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:18:52Z","duration":68,"status":"FAILED"}]},"parent":{"ref":"EID6a35fc07-0175-1000-5178-c38b24b2c67b"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:18:52Z","duration":181,"status":"FAILED"}]},"parent":{"ref":"EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:18:44Z","duration":8423,"status":"FAILED"},{"id":"EID6a361cee-0175-1000-a645-dfffe16520cc","testCaseResults":{"TestCaseResult":[{"id":"EID6a361cee-0175-1000-39a1-7466b3bc4000","testStepResults":{"TestStepResult":[{"id":"EID6a361cee-0175-1000-8f3d-3b5d20e8dbfe","parent":{"ref":"EID6a361cee-0175-1000-39a1-7466b3bc4000"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361cee-0175-1000-7bd7-b8807d44f2e4","parent":{"ref":"EID6a361cee-0175-1000-39a1-7466b3bc4000"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:18:52Z","duration":35,"status":"PASSED"},{"id":"EID6a361cee-0175-1000-5e5e-8240ddb7a2aa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361da8-0175-1000-4b5f-a9ac41f0194f","parent":{"ref":"EID6a361cee-0175-1000-5e5e-8240ddb7a2aa"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361da8-0175-1000-4857-21f64affd02f","parent":{"ref":"EID6a361cee-0175-1000-5e5e-8240ddb7a2aa"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361da8-0175-1000-3c95-982912da5ed5","parent":{"ref":"EID6a361cee-0175-1000-5e5e-8240ddb7a2aa"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4f835468-077d-41ef-b9af-3651c50f459a"},{"ref":"EIDc73768a1-8262-4523-b399-b0c3e81a2140"},{"ref":"EIDf57daf4f-1e2e-44d8-8fba-4aadc2f4740b"}]},"parent":{"ref":"EID6a361cee-0175-1000-39a1-7466b3bc4000"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:18:52Z","duration":81,"status":"PASSED"},{"id":"EID6a361da8-0175-1000-3fd7-e5ac89cafec1","attachments":{"attachment":{"ref":"EID0c2a5748-8c55-4b53-9d5b-3deb71c9efb6"}},"parent":{"ref":"EID6a361cee-0175-1000-39a1-7466b3bc4000"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361db2-0175-1000-3eba-2c7fa17988fe","parent":{"ref":"EID6a361cee-0175-1000-39a1-7466b3bc4000"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:18:52Z","duration":24,"status":"PASSED"}]},"parent":{"ref":"EID6a361cee-0175-1000-a645-dfffe16520cc"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:18:52Z","duration":221,"status":"PASSED"},{"id":"EID6a361dcb-0175-1000-2444-ca58906a177c","testStepResults":{"TestStepResult":[{"id":"EID6a361dcb-0175-1000-65d7-380a7b0fd782","parent":{"ref":"EID6a361dcb-0175-1000-2444-ca58906a177c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:18:52Z","duration":67,"status":"PASSED"},{"id":"EID6a361dcb-0175-1000-8233-acd9b209cfbc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361e4b-0175-1000-6f02-89b480f8b3b3","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a361dcb-0175-1000-8233-acd9b209cfbc"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:18:53Z","duration":11,"status":"FAILED"},{"id":"EID6a361e56-0175-1000-08a5-365e508127ab","parent":{"ref":"EID6a361dcb-0175-1000-8233-acd9b209cfbc"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a361e56-0175-1000-0372-cb086ecc633a","parent":{"ref":"EID6a361dcb-0175-1000-8233-acd9b209cfbc"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a361e56-0175-1000-8eb5-ab03d970be1b","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6a361dcb-0175-1000-8233-acd9b209cfbc"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"FAILED"},{"id":"EID6a361e56-0175-1000-c396-a96464ffb205","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6a361dcb-0175-1000-8233-acd9b209cfbc"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDb294a3de-0db6-404f-9081-3d54a4bc0f17"},{"ref":"EID77336552-2510-46d5-bdca-0573dd545266"},{"ref":"EIDd44a5e37-c0ee-4c88-97f2-96a804e82029"}]},"parent":{"ref":"EID6a361dcb-0175-1000-2444-ca58906a177c"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:18:52Z","duration":29,"status":"FAILED"}]},"parent":{"ref":"EID6a361cee-0175-1000-a645-dfffe16520cc"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:18:52Z","duration":139,"status":"FAILED"},{"id":"EID6a361e56-0175-1000-d139-7ec129e30d95","testStepResults":{"TestStepResult":{"id":"EID6a361e56-0175-1000-4f9e-cf8aff7fc780","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361ed7-0175-1000-b893-d4876e0ae6b1","parent":{"ref":"EID6a361e56-0175-1000-4f9e-cf8aff7fc780"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a361ed7-0175-1000-4aef-73667b199b02","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a361e56-0175-1000-4f9e-cf8aff7fc780"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:18:53Z","duration":18,"status":"FAILED"},{"id":"EID6a361ee9-0175-1000-2b53-4ba2bebebba7","parent":{"ref":"EID6a361e56-0175-1000-4f9e-cf8aff7fc780"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID88300df0-1a7b-4417-8d23-e4873345fca0"},{"ref":"EIDb582d63c-b5fa-4f59-a86d-fa07a1823731"},{"ref":"EID2d372e3a-d223-437e-a6af-31b672c9d712"}]},"parent":{"ref":"EID6a361e56-0175-1000-d139-7ec129e30d95"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:18:53Z","duration":24,"status":"FAILED"}},"parent":{"ref":"EID6a361cee-0175-1000-a645-dfffe16520cc"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:18:53Z","duration":147,"status":"FAILED"},{"id":"EID6a361eea-0175-1000-33f6-7c01857fbb89","testStepResults":{"TestStepResult":{"id":"EID6a361eea-0175-1000-0403-bf6621249126","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361f58-0175-1000-962f-83db31b85eaa","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a361eea-0175-1000-0403-bf6621249126"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"FAILED"},{"id":"EID6a361f58-0175-1000-6669-dd073feba864","parent":{"ref":"EID6a361eea-0175-1000-0403-bf6621249126"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a361f58-0175-1000-d8ef-3b5d08e8eac2","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a361eea-0175-1000-0403-bf6621249126"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:18:53Z","duration":11,"status":"FAILED"},{"id":"EID6a361f63-0175-1000-4447-b3c6a5ae3675","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6a361eea-0175-1000-0403-bf6621249126"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDec0f0e19-fdd5-4a34-b6a5-b2bdfbb8b41c"},{"ref":"EID42d3f901-1c51-47f5-8937-ae180049728c"},{"ref":"EID9ccc18bb-75ed-44ea-b476-f1b27818bf96"}]},"parent":{"ref":"EID6a361eea-0175-1000-33f6-7c01857fbb89"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:18:53Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6a361cee-0175-1000-a645-dfffe16520cc"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:18:53Z","duration":122,"status":"FAILED"},{"id":"EID6a361f64-0175-1000-bf23-efa69d137071","testStepResults":{"TestStepResult":{"id":"EID6a361f64-0175-1000-a217-a3566ee6bce0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361fba-0175-1000-9ad1-399163adc749","parent":{"ref":"EID6a361f64-0175-1000-a217-a3566ee6bce0"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a361fba-0175-1000-fb1d-4c752c89d76f","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a361f64-0175-1000-a217-a3566ee6bce0"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:18:53Z","duration":10,"status":"FAILED"},{"id":"EID6a361fc4-0175-1000-8ee9-18efe84141c1","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6a361f64-0175-1000-a217-a3566ee6bce0"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID60711c79-5b06-4595-84bd-e867574c6235"},{"ref":"EIDa39aa606-cb05-49d3-aff0-ac6f15a6a6ca"},{"ref":"EID43e9d056-8a0a-4ae4-8f22-317483a0b991"}]},"parent":{"ref":"EID6a361f64-0175-1000-bf23-efa69d137071"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:18:53Z","duration":32,"status":"FAILED"}},"parent":{"ref":"EID6a361cee-0175-1000-a645-dfffe16520cc"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:18:53Z","duration":96,"status":"FAILED"},{"id":"EID6a361fc5-0175-1000-c802-67dbf00e9347","testStepResults":{"TestStepResult":{"id":"EID6a361fc5-0175-1000-cb85-0017c6bd2c6f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a362036-0175-1000-8e2f-a75d73bca337","parent":{"ref":"EID6a361fc5-0175-1000-cb85-0017c6bd2c6f"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a362036-0175-1000-0fa5-93a1f1158c76","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a361fc5-0175-1000-cb85-0017c6bd2c6f"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:18:53Z","duration":12,"status":"FAILED"},{"id":"EID6a362042-0175-1000-4e70-0547d7b90554","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a361fc5-0175-1000-cb85-0017c6bd2c6f"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID5979bedb-28ee-4e92-9533-fc9e7603a107"},{"ref":"EIDca705b5f-747b-4e34-a83b-f5c07ace3b7b"},{"ref":"EID11f7c7c4-0348-4c8e-9cb7-cccaaf9b7861"}]},"parent":{"ref":"EID6a361fc5-0175-1000-c802-67dbf00e9347"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:18:53Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6a361cee-0175-1000-a645-dfffe16520cc"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:18:53Z","duration":125,"status":"FAILED"},{"id":"EID6a362042-0175-1000-80c8-226ddf6ad13c","testStepResults":{"TestStepResult":{"id":"EID6a362042-0175-1000-996f-261122beedc5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3620c0-0175-1000-f00d-19eab48e6d60","parent":{"ref":"EID6a362042-0175-1000-996f-261122beedc5"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a3620c0-0175-1000-d689-b03055fc0ada","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a362042-0175-1000-996f-261122beedc5"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:18:53Z","duration":47,"status":"FAILED"},{"id":"EID6a3620ef-0175-1000-4e9a-fa9495838aeb","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6a362042-0175-1000-996f-261122beedc5"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"FAILED"},{"id":"EID6a3620ef-0175-1000-5f70-be487b647663","parent":{"ref":"EID6a362042-0175-1000-996f-261122beedc5"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a3620ef-0175-1000-839d-90bf60da4ec4","parent":{"ref":"EID6a362042-0175-1000-996f-261122beedc5"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9d5a133f-1a86-4be5-bff0-672c0c8f4711"},{"ref":"EID66f4f20a-91b3-4ae4-85f6-c4e6df51b027"},{"ref":"EIDf448602d-18f9-4778-b4cc-b0d43cb092ca"}]},"parent":{"ref":"EID6a362042-0175-1000-80c8-226ddf6ad13c"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:18:53Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6a361cee-0175-1000-a645-dfffe16520cc"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:18:53Z","duration":173,"status":"FAILED"},{"id":"EID6a3620ef-0175-1000-578f-cf8b4643e83f","testStepResults":{"TestStepResult":{"id":"EID6a3620ef-0175-1000-35f9-75923db75f69","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a362166-0175-1000-9b36-da5c1c16fe32","parent":{"ref":"EID6a3620ef-0175-1000-35f9-75923db75f69"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a362166-0175-1000-d6c8-1c54b940a2dc","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a3620ef-0175-1000-35f9-75923db75f69"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:18:53Z","duration":9,"status":"FAILED"},{"id":"EID6a36216f-0175-1000-ae80-65353110acfc","parent":{"ref":"EID6a3620ef-0175-1000-35f9-75923db75f69"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6f3cfdd6-7ea7-4dff-ae92-a1ff58dde7b7"},{"ref":"EIDaa0ed999-6568-4b7d-af02-ed6ca04148cf"},{"ref":"EID383708bb-935b-4b39-9391-faa83bcc92e6"}]},"parent":{"ref":"EID6a3620ef-0175-1000-578f-cf8b4643e83f"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:18:53Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6a361cee-0175-1000-a645-dfffe16520cc"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:18:53Z","duration":128,"status":"FAILED"},{"id":"EID6a36216f-0175-1000-4030-efee274367da","testStepResults":{"TestStepResult":{"id":"EID6a36216f-0175-1000-4105-c9c9ad5d2ea6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3621d8-0175-1000-4278-44a6f7776e52","parent":{"ref":"EID6a36216f-0175-1000-4105-c9c9ad5d2ea6"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a3621d8-0175-1000-17f2-066dff75021e","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a36216f-0175-1000-4105-c9c9ad5d2ea6"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:18:53Z","duration":38,"status":"FAILED"},{"id":"EID6a3621fe-0175-1000-3765-22349f058315","parent":{"ref":"EID6a36216f-0175-1000-4105-c9c9ad5d2ea6"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID187300e7-f8ea-4998-a578-b95662c0622a"},{"ref":"EID28c5fda9-2c5f-42b5-88ff-c9690d023200"},{"ref":"EID0f09d030-a424-4d30-b462-7b9ee5778685"}]},"parent":{"ref":"EID6a36216f-0175-1000-4030-efee274367da"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:18:53Z","duration":34,"status":"FAILED"}},"parent":{"ref":"EID6a361cee-0175-1000-a645-dfffe16520cc"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:18:53Z","duration":143,"status":"FAILED"},{"id":"EID6a3621fe-0175-1000-0e25-c1b5d9e7d006","testStepResults":{"TestStepResult":{"id":"EID6a3621fe-0175-1000-26ab-29f67d2fa2c9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36229b-0175-1000-5025-645b393048c8","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a3621fe-0175-1000-26ab-29f67d2fa2c9"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:18:54Z","duration":11,"status":"FAILED"},{"id":"EID6a3622a6-0175-1000-ad16-1d79dd63d823","parent":{"ref":"EID6a3621fe-0175-1000-26ab-29f67d2fa2c9"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a3622a6-0175-1000-21b4-6d63dd9f4fed","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a3621fe-0175-1000-26ab-29f67d2fa2c9"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"FAILED"},{"id":"EID6a3622a6-0175-1000-f808-c94577e24954","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6a3621fe-0175-1000-26ab-29f67d2fa2c9"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDfa81a68c-a0a5-4019-9b29-d4c68e186a09"},{"ref":"EID8e2227c9-dca1-4838-b71c-18b81443ebd3"},{"ref":"EID317cf3e7-baf0-4eff-8083-1554d388d707"}]},"parent":{"ref":"EID6a3621fe-0175-1000-0e25-c1b5d9e7d006"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:18:53Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6a361cee-0175-1000-a645-dfffe16520cc"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:18:53Z","duration":168,"status":"FAILED"},{"id":"EID6a3622a6-0175-1000-d38f-6484277e08af","testStepResults":{"TestStepResult":{"id":"EID6a3622a6-0175-1000-07b9-57d0d7b228c3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a362342-0175-1000-3ae8-0ec04d6b97cc","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a3622a6-0175-1000-07b9-57d0d7b228c3"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:18:54Z","duration":17,"status":"FAILED"},{"id":"EID6a362353-0175-1000-98b1-50d910287cfd","parent":{"ref":"EID6a3622a6-0175-1000-07b9-57d0d7b228c3"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a362353-0175-1000-005d-c9539ff4ae9c","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a3622a6-0175-1000-07b9-57d0d7b228c3"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"FAILED"},{"id":"EID6a362353-0175-1000-a0b7-c8d398fef3e9","parent":{"ref":"EID6a3622a6-0175-1000-07b9-57d0d7b228c3"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID461875c2-1f4f-4de8-87d0-9020601bde5a"},{"ref":"EIDdc98bb92-fdb7-466d-95a7-ad1f7213a2e4"},{"ref":"EID58eb92f9-f416-4b62-bac2-de545a56d41d"}]},"parent":{"ref":"EID6a3622a6-0175-1000-d38f-6484277e08af"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:18:54Z","duration":33,"status":"FAILED"}},"parent":{"ref":"EID6a361cee-0175-1000-a645-dfffe16520cc"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:18:54Z","duration":173,"status":"FAILED"},{"id":"EID6a362353-0175-1000-a366-2ed776b03365","testStepResults":{"TestStepResult":[{"id":"EID6a362353-0175-1000-08b0-84bedd283540","parent":{"ref":"EID6a362353-0175-1000-a366-2ed776b03365"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a362353-0175-1000-a7b8-6a9c8c0d9aee","parent":{"ref":"EID6a362353-0175-1000-a366-2ed776b03365"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:18:54Z","duration":152,"status":"PASSED"},{"id":"EID6a362353-0175-1000-1463-161e9972683b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3624c6-0175-1000-3e8f-de5bdab6c751","parent":{"ref":"EID6a362353-0175-1000-1463-161e9972683b"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a3624c6-0175-1000-d6c9-33461bdfe08d","parent":{"ref":"EID6a362353-0175-1000-1463-161e9972683b"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a3624c6-0175-1000-f3c0-fe117b308015","parent":{"ref":"EID6a362353-0175-1000-1463-161e9972683b"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a3624c6-0175-1000-c5b3-cfd386a92693","parent":{"ref":"EID6a362353-0175-1000-1463-161e9972683b"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbf99df54-131c-4e8c-becc-26246f14835a"},{"ref":"EID1300e800-64ae-433f-beab-f68041fe912c"},{"ref":"EID9e16a1e3-73e5-4223-b181-c6abceccea33"}]},"parent":{"ref":"EID6a362353-0175-1000-a366-2ed776b03365"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:18:54Z","duration":78,"status":"PASSED"},{"id":"EID6a3624c6-0175-1000-b0e5-8623d781d77c","attachments":{"attachment":{"ref":"EIDf7f1a3e1-c1c6-4041-a095-af251b9ba17a"}},"parent":{"ref":"EID6a362353-0175-1000-a366-2ed776b03365"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:18:54Z","duration":3,"status":"PASSED"},{"id":"EID6a362526-0175-1000-5e8a-b97f995acec9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3625a4-0175-1000-6593-6fc9ae5c1118","parent":{"ref":"EID6a362526-0175-1000-5e8a-b97f995acec9"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a3625a4-0175-1000-3fe2-bd1812b4d480","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a362526-0175-1000-5e8a-b97f995acec9"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:18:54Z","duration":15,"status":"FAILED"},{"id":"EID6a3625b3-0175-1000-14e4-47a984c1dda4","parent":{"ref":"EID6a362526-0175-1000-5e8a-b97f995acec9"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a3625b3-0175-1000-cce2-97c656186bcd","parent":{"ref":"EID6a362526-0175-1000-5e8a-b97f995acec9"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a3625b3-0175-1000-14c8-cac215c60010","parent":{"ref":"EID6a362526-0175-1000-5e8a-b97f995acec9"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a3625b3-0175-1000-902f-3893aaac7ec4","parent":{"ref":"EID6a362526-0175-1000-5e8a-b97f995acec9"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a3625b3-0175-1000-3cfe-ed8c28e6afdd","parent":{"ref":"EID6a362526-0175-1000-5e8a-b97f995acec9"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID804cd9af-5d61-4c75-9004-807325e3cfa8"},{"ref":"EID0550d913-043a-4b44-8104-3533e171741a"},{"ref":"EIDa828b8ec-7590-4c12-9464-1e3f1a166950"}]},"parent":{"ref":"EID6a362353-0175-1000-a366-2ed776b03365"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:18:54Z","duration":33,"status":"FAILED"}]},"parent":{"ref":"EID6a361cee-0175-1000-a645-dfffe16520cc"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:18:54Z","duration":608,"status":"FAILED"},{"id":"EID6a3625b3-0175-1000-189c-1630a83049e6","testStepResults":{"TestStepResult":[{"id":"EID6a3625b3-0175-1000-483e-b15baa0c4cab","parent":{"ref":"EID6a3625b3-0175-1000-189c-1630a83049e6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a3625b3-0175-1000-ea64-9cf568f6cbd7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3626a2-0175-1000-1494-6c0b6f87370f","parent":{"ref":"EID6a3625b3-0175-1000-ea64-9cf568f6cbd7"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a3626a2-0175-1000-987f-f92208fcfc53","parent":{"ref":"EID6a3625b3-0175-1000-ea64-9cf568f6cbd7"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a3626a2-0175-1000-f625-65da63d1e2aa","parent":{"ref":"EID6a3625b3-0175-1000-ea64-9cf568f6cbd7"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a3626a2-0175-1000-eaf0-c16c32b7fe63","parent":{"ref":"EID6a3625b3-0175-1000-ea64-9cf568f6cbd7"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf9501efa-08c0-4ac1-a637-8c54faf010b3"},{"ref":"EID9b70a3de-acad-45b8-9d33-6797cd83ff7f"},{"ref":"EID180ed503-ebf0-4624-9cb0-19432d375d2d"}]},"parent":{"ref":"EID6a3625b3-0175-1000-189c-1630a83049e6"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:18:54Z","duration":40,"status":"PASSED"},{"id":"EID6a3626a2-0175-1000-4c05-f18eb7997576","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a3626b4-0175-1000-bea4-1a26f185ee48","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a362778-0175-1000-5135-3462c17e83d2","parent":{"ref":"EID6a3626b4-0175-1000-bea4-1a26f185ee48"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a362778-0175-1000-16f6-081e1cfaf794","parent":{"ref":"EID6a3626b4-0175-1000-bea4-1a26f185ee48"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a362778-0175-1000-4239-e9c9a4cbe2ee","parent":{"ref":"EID6a3626b4-0175-1000-bea4-1a26f185ee48"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9063b7e4-dae3-4ad5-8553-18a1835c0f42"},{"ref":"EIDfad7303b-b8d2-45ce-9d82-03bfa4241d95"},{"ref":"EIDa107f99f-88fe-49e1-b3cd-0c93f6cd88ea"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:18:55Z","duration":41,"status":"PASSED"},{"id":"EID6a36277a-0175-1000-82d1-4b0884b00ec4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3627d5-0175-1000-29ba-88293a94a314","parent":{"ref":"EID6a36277a-0175-1000-82d1-4b0884b00ec4"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a3627d5-0175-1000-175c-cc79a357be38","parent":{"ref":"EID6a36277a-0175-1000-82d1-4b0884b00ec4"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a3627d5-0175-1000-6f48-4611606603c8","parent":{"ref":"EID6a36277a-0175-1000-82d1-4b0884b00ec4"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3f75ed01-e8a1-4228-bd2d-8027b9c5d2a6"},{"ref":"EID696b40be-bd86-409f-b7e3-4bbc56ab9d90"},{"ref":"EID3dff63a4-de74-4e3c-b36e-1658dd0544da"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:18:55Z","duration":41,"status":"PASSED"},{"id":"EID6a3627d7-0175-1000-ff99-f984742d7195","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36282e-0175-1000-77ee-0c6732466e7e","parent":{"ref":"EID6a3627d7-0175-1000-ff99-f984742d7195"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a36282e-0175-1000-9234-6032d4084c41","parent":{"ref":"EID6a3627d7-0175-1000-ff99-f984742d7195"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a36282e-0175-1000-7e3f-cfce7a65e607","parent":{"ref":"EID6a3627d7-0175-1000-ff99-f984742d7195"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDaac97a15-bee9-4201-8b97-698e1dcd884d"},{"ref":"EIDd1a01ece-f67c-441d-9946-e4663c897ade"},{"ref":"EIDe77924bf-81a6-4863-8095-f29f034de862"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:18:55Z","duration":41,"status":"PASSED"}]},"parent":{"ref":"EID6a3625b3-0175-1000-189c-1630a83049e6"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:18:55Z","duration":396,"status":"PASSED"},{"id":"EID6a36282f-0175-1000-a506-45b9ca57c1cb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36288c-0175-1000-b796-62e3d5e08863","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a36282f-0175-1000-a506-45b9ca57c1cb"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:18:55Z","duration":16,"status":"FAILED"},{"id":"EID6a36289c-0175-1000-919d-862db30dc7c6","parent":{"ref":"EID6a36282f-0175-1000-a506-45b9ca57c1cb"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a36289c-0175-1000-1e4e-87216534dd22","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a36282f-0175-1000-a506-45b9ca57c1cb"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"FAILED"},{"id":"EID6a36289c-0175-1000-bfcc-1662a6aefef4","parent":{"ref":"EID6a36282f-0175-1000-a506-45b9ca57c1cb"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf77076c9-acd0-4f4e-91a2-c6f72b3ceb7a"},{"ref":"EID97abdda0-5627-4c44-9780-0372975b4497"},{"ref":"EIDb8b50e15-59c7-419d-8b32-e96bd07ad997"}]},"parent":{"ref":"EID6a3625b3-0175-1000-189c-1630a83049e6"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:18:55Z","duration":30,"status":"FAILED"}]},"parent":{"ref":"EID6a361cee-0175-1000-a645-dfffe16520cc"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:18:54Z","duration":745,"status":"FAILED"},{"id":"EID6a36289d-0175-1000-4235-8407172a1d3f","testStepResults":{"TestStepResult":{"id":"EID6a36289d-0175-1000-a03f-70f4d202ea93","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36292d-0175-1000-a8be-40f01fd8f675","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a36289d-0175-1000-a03f-70f4d202ea93"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:18:55Z","duration":80,"status":"FAILED"},{"id":"EID6a36297d-0175-1000-0f3f-7f457e8188ed","parent":{"ref":"EID6a36289d-0175-1000-a03f-70f4d202ea93"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a36297d-0175-1000-889e-be333b43283d","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a36289d-0175-1000-a03f-70f4d202ea93"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"FAILED"},{"id":"EID6a36297d-0175-1000-60eb-597d5864ad11","parent":{"ref":"EID6a36289d-0175-1000-a03f-70f4d202ea93"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdf2b6c25-e084-4e47-8a4a-95a7691323b5"},{"ref":"EID3c439c75-3350-4238-a5f3-55ea017c12e4"},{"ref":"EIDbafb6908-a3a4-4cb7-9e10-03b486d760d1"}]},"parent":{"ref":"EID6a36289d-0175-1000-4235-8407172a1d3f"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:18:55Z","duration":33,"status":"FAILED"}},"parent":{"ref":"EID6a361cee-0175-1000-a645-dfffe16520cc"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:18:55Z","duration":224,"status":"FAILED"}]},"parent":{"ref":"EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:18:52Z","duration":3215,"status":"FAILED"},{"id":"EID6a36297d-0175-1000-ffba-fecd4b7256a8","testCaseResults":{"TestCaseResult":[{"id":"EID6a36297e-0175-1000-9933-82d09d08bfc5","testStepResults":{"TestStepResult":{"id":"EID6a36297e-0175-1000-38a2-683d1130b66e","parent":{"ref":"EID6a36297e-0175-1000-9933-82d09d08bfc5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:18:55Z","duration":529,"status":"SKIPPED"}},"parent":{"ref":"EID6a36297d-0175-1000-ffba-fecd4b7256a8"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"SKIPPED"},{"id":"EID6a36297e-0175-1000-f785-2607ace41bba","testStepResults":{"TestStepResult":{"id":"EID6a36297e-0175-1000-e5a8-bcadd797e645","parent":{"ref":"EID6a36297e-0175-1000-f785-2607ace41bba"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:18:55Z","duration":529,"status":"SKIPPED"}},"parent":{"ref":"EID6a36297d-0175-1000-ffba-fecd4b7256a8"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"SKIPPED"},{"id":"EID6a36297e-0175-1000-8b4e-16398d1b7901","testStepResults":{"TestStepResult":{"id":"EID6a36297e-0175-1000-6c92-135b41a38977","parent":{"ref":"EID6a36297e-0175-1000-8b4e-16398d1b7901"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:18:55Z","duration":529,"status":"SKIPPED"}},"parent":{"ref":"EID6a36297d-0175-1000-ffba-fecd4b7256a8"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"SKIPPED"},{"id":"EID6a36297e-0175-1000-4ab9-97dafa2d1bbd","testStepResults":{"TestStepResult":{"id":"EID6a36297e-0175-1000-cb5b-732db5ba77ae","parent":{"ref":"EID6a36297e-0175-1000-4ab9-97dafa2d1bbd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:18:55Z","duration":529,"status":"SKIPPED"}},"parent":{"ref":"EID6a36297d-0175-1000-ffba-fecd4b7256a8"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"SKIPPED"},{"id":"EID6a36297e-0175-1000-0c82-35f6de93ba1a","testStepResults":{"TestStepResult":{"id":"EID6a36297e-0175-1000-0b1f-f3aa2efa9612","parent":{"ref":"EID6a36297e-0175-1000-0c82-35f6de93ba1a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:18:55Z","duration":529,"status":"SKIPPED"}},"parent":{"ref":"EID6a36297d-0175-1000-ffba-fecd4b7256a8"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"SKIPPED"},{"id":"EID6a36297e-0175-1000-40b5-27be98dd4d7d","testStepResults":{"TestStepResult":{"id":"EID6a36297e-0175-1000-8bb4-880ae440ad95","parent":{"ref":"EID6a36297e-0175-1000-40b5-27be98dd4d7d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:18:55Z","duration":529,"status":"SKIPPED"}},"parent":{"ref":"EID6a36297d-0175-1000-ffba-fecd4b7256a8"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"SKIPPED"},{"id":"EID6a36297e-0175-1000-8708-0a433bc142fd","testStepResults":{"TestStepResult":{"id":"EID6a36297e-0175-1000-7f92-d8ac2aa6d28d","parent":{"ref":"EID6a36297e-0175-1000-8708-0a433bc142fd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:18:55Z","duration":529,"status":"SKIPPED"}},"parent":{"ref":"EID6a36297d-0175-1000-ffba-fecd4b7256a8"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:18:55Z","duration":1,"status":"SKIPPED"}]},"parent":{"ref":"EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:18:55Z","duration":2,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"ServiceEndpoint","id":"EID4f835468-077d-41ef-b9af-3651c50f459a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDbf99df54-131c-4e8c-becc-26246f14835a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID6f1c21ac-a6ea-4e95-b2e0-99925cbd1bbe","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID6f1c21ac-a6ea-4e95-b2e0-99925cbd1bbe"}},{"type":"Error","id":"EID476ff59c-dc6e-403a-ab44-c71d9daaace8","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID476ff59c-dc6e-403a-ab44-c71d9daaace8"}},{"type":"GetParameter","id":"EID0af68667-7ec0-4256-95f3-fe3452aaec23","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID9063b7e4-dae3-4ad5-8553-18a1835c0f42","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EID0f09d030-a424-4d30-b462-7b9ee5778685","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID3846861e-ef38-4812-a883-261df8ccd845","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDb4ed3260-441a-4842-a301-90a1f40d9472","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDa2383db0-31f0-4a7f-aaa5-30bfbb8ffda1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDa2383db0-31f0-4a7f-aaa5-30bfbb8ffda1"}},{"type":"ServiceResponse","id":"EID97abdda0-5627-4c44-9780-0372975b4497","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID97abdda0-5627-4c44-9780-0372975b4497"}},{"type":"Error","id":"EID640bdf48-7782-4590-8f73-355c932a58cc","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID640bdf48-7782-4590-8f73-355c932a58cc"}},{"type":"ServiceEndpoint","id":"EID42c7e1f2-7196-4b64-bdb6-e52672794d8c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID40049442-a9de-4799-8f43-9e37e47cc200","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"LogFile","id":"EIDdd195138-bbf5-4c55-ab7e-bab4b77ec3f1","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDdd195138-bbf5-4c55-ab7e-bab4b77ec3f1"}},{"type":"ServiceEndpoint","id":"EID6f3cfdd6-7ea7-4dff-ae92-a1ff58dde7b7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDc7b9b306-c12c-44af-b518-5a571c26c9d1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDc7b9b306-c12c-44af-b518-5a571c26c9d1"}},{"type":"Error","id":"EIDfd4bc766-b28b-4104-87b9-f1040111d12e","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDfd4bc766-b28b-4104-87b9-f1040111d12e"}},{"type":"Message","id":"EIDa1db4596-0e3f-4ca4-a255-97454da0c59c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDa1db4596-0e3f-4ca4-a255-97454da0c59c"}},{"type":"Message","id":"EID64226eb9-e8d1-4091-a007-b141fe81077b","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID64226eb9-e8d1-4091-a007-b141fe81077b"}},{"type":"GetParameter","id":"EID82c37ede-247b-4b85-a1a1-5036c3e51007","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDf9501efa-08c0-4ac1-a637-8c54faf010b3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EIDbafb6908-a3a4-4cb7-9e10-03b486d760d1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID806e42f1-f593-4c63-845b-e2bf645835ae","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID66f4f20a-91b3-4ae4-85f6-c4e6df51b027","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID66f4f20a-91b3-4ae4-85f6-c4e6df51b027"}},{"type":"ServiceResponse","id":"EIDc73768a1-8262-4523-b399-b0c3e81a2140","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDc73768a1-8262-4523-b399-b0c3e81a2140"}},{"type":"ServiceResponse","id":"EID1300e800-64ae-433f-beab-f68041fe912c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID1300e800-64ae-433f-beab-f68041fe912c"}},{"type":"GetParameter","id":"EID11f7c7c4-0348-4c8e-9cb7-cccaaf9b7861","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDb294a3de-0db6-404f-9081-3d54a4bc0f17","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID4770136f-6763-4652-985b-af2663314b9a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID97a205be-d252-452e-bfc2-f05d97f103b7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDc193c64f-34fa-40ca-8f3b-37407c11b71d","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDc193c64f-34fa-40ca-8f3b-37407c11b71d"}},{"type":"ServiceEndpoint","id":"EIDcc2c2539-5fd9-4749-a41a-74f39eed971c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDdbaa4029-1f36-467f-96e2-d81af37670a9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID09016db6-e5b4-4d12-9be5-0e4ca1114e2f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID09016db6-e5b4-4d12-9be5-0e4ca1114e2f"}},{"type":"ServiceResponse","id":"EIDca5f601c-d686-418f-8228-a0d4446e2788","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDca5f601c-d686-418f-8228-a0d4446e2788"}},{"type":"Message","id":"EID78983d2d-daf3-4503-a0f2-1d3dc37eae79","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID78983d2d-daf3-4503-a0f2-1d3dc37eae79"}},{"type":"ServiceResponse","id":"EID696b40be-bd86-409f-b7e3-4bbc56ab9d90","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID696b40be-bd86-409f-b7e3-4bbc56ab9d90"}},{"type":"Message","id":"EID775ede4b-72ac-4d58-a61f-7e6c8ecb5ef6","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID775ede4b-72ac-4d58-a61f-7e6c8ecb5ef6"}},{"type":"ServiceResponse","id":"EID5ef220e0-9e11-4584-b795-ad68524b7b4a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID5ef220e0-9e11-4584-b795-ad68524b7b4a"}},{"type":"GetParameter","id":"EID18ee399c-1140-4598-b031-643498492779","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID352a67ee-c63b-4a8f-a600-bc8e578da6d7","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID352a67ee-c63b-4a8f-a600-bc8e578da6d7"}},{"type":"ServiceEndpoint","id":"EID60711c79-5b06-4595-84bd-e867574c6235","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EID0ed17e6d-c42f-4245-8a90-b5856a63256f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID0ed17e6d-c42f-4245-8a90-b5856a63256f"}},{"type":"GetParameter","id":"EIDfb7901bb-fbc7-4563-a4d7-5e47d663a4ce","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID04dde083-a4d6-47a4-8c1e-6e8c8681b864","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID04dde083-a4d6-47a4-8c1e-6e8c8681b864"}},{"type":"ServiceResponse","id":"EID1564e98c-6413-4715-9b22-3aa0419d7a58","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID1564e98c-6413-4715-9b22-3aa0419d7a58"}},{"type":"ServiceEndpoint","id":"EID88300df0-1a7b-4417-8d23-e4873345fca0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDf59d9dc2-a219-4a64-b165-2690bf3cbd1a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID43e9d056-8a0a-4ae4-8f22-317483a0b991","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID42d3f901-1c51-47f5-8937-ae180049728c","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID42d3f901-1c51-47f5-8937-ae180049728c"}},{"type":"GetParameter","id":"EIDd44a5e37-c0ee-4c88-97f2-96a804e82029","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID68cbdfd1-af22-4af4-9982-e1a0ea9f6291","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID68cbdfd1-af22-4af4-9982-e1a0ea9f6291"}},{"type":"ServiceEndpoint","id":"EID3f75ed01-e8a1-4228-bd2d-8027b9c5d2a6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EID2ab921e9-bbab-4e76-8054-4f70bd960fa0","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID2ab921e9-bbab-4e76-8054-4f70bd960fa0"}},{"type":"Message","id":"EIDf7f1a3e1-c1c6-4041-a095-af251b9ba17a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDf7f1a3e1-c1c6-4041-a095-af251b9ba17a"}},{"type":"GetParameter","id":"EID35c67428-a35c-447a-a066-56c9f530c622","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDf63c7401-a084-4b5e-81c8-5f94ef71e17f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDf63c7401-a084-4b5e-81c8-5f94ef71e17f"}},{"type":"GetParameter","id":"EID07b418c2-a1b1-426e-af3e-ee03aeb1fdfb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID317cf3e7-baf0-4eff-8083-1554d388d707","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID04a89487-c4ec-4910-93f7-b38e60488d4a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID804cd9af-5d61-4c75-9004-807325e3cfa8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDd7b6c21e-3672-4875-ab64-25c990fbbccb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID5eb4c5ae-ec7c-46c6-a005-d13f7e1554d6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDe77924bf-81a6-4863-8095-f29f034de862","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EID3dff63a4-de74-4e3c-b36e-1658dd0544da","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EIDf57daf4f-1e2e-44d8-8fba-4aadc2f4740b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID9fed1ca3-31c3-4ccf-9177-501b0281be4d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID9fed1ca3-31c3-4ccf-9177-501b0281be4d"}},{"type":"ServiceEndpoint","id":"EIDf77076c9-acd0-4f4e-91a2-c6f72b3ceb7a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID45cd2e62-63b8-4564-9955-a4543a1d0a70","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID45cd2e62-63b8-4564-9955-a4543a1d0a70"}},{"type":"Error","id":"EID0a75cd12-b00e-4ec4-b480-ffd6e2c79151","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID0a75cd12-b00e-4ec4-b480-ffd6e2c79151"}},{"type":"Message","id":"EIDeadc6244-8754-4d8c-8e99-699239e2d209","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDeadc6244-8754-4d8c-8e99-699239e2d209"}},{"type":"ServiceResponse","id":"EIDad2b127f-dd5b-4eca-b174-b2d4cf620f9f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDad2b127f-dd5b-4eca-b174-b2d4cf620f9f"}},{"type":"ServiceEndpoint","id":"EIDec0f0e19-fdd5-4a34-b6a5-b2bdfbb8b41c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID461875c2-1f4f-4de8-87d0-9020601bde5a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID0c2a5748-8c55-4b53-9d5b-3deb71c9efb6","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID0c2a5748-8c55-4b53-9d5b-3deb71c9efb6"}},{"type":"Message","id":"EID4a196b6e-5049-4385-b4d6-620b85b88131","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID4a196b6e-5049-4385-b4d6-620b85b88131"}},{"type":"GetParameter","id":"EIDc7f71f59-3e3a-43bd-a1e7-9fb6e09e1aa5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDaa0ed999-6568-4b7d-af02-ed6ca04148cf","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDaa0ed999-6568-4b7d-af02-ed6ca04148cf"}},{"type":"ServiceResponse","id":"EID28c5fda9-2c5f-42b5-88ff-c9690d023200","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID28c5fda9-2c5f-42b5-88ff-c9690d023200"}},{"type":"ServiceResponse","id":"EID0550d913-043a-4b44-8104-3533e171741a","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID0550d913-043a-4b44-8104-3533e171741a"}},{"type":"Message","id":"EIDd4b3123c-1698-4f41-a23b-8a2f7c959538","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDd4b3123c-1698-4f41-a23b-8a2f7c959538"}},{"type":"ServiceResponse","id":"EIDb6c65b37-513d-464e-8d37-d81008ce4b50","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDb6c65b37-513d-464e-8d37-d81008ce4b50"}},{"type":"Message","id":"EID15f9e04c-3e90-4828-890a-3680386fbc99","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID15f9e04c-3e90-4828-890a-3680386fbc99"}},{"type":"GetParameter","id":"EIDba1e41d5-ac8f-4d8c-8c08-f5896a0f2d60","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDc1604a93-01ec-4e7b-b10a-01879b6164a4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDc1604a93-01ec-4e7b-b10a-01879b6164a4"}},{"type":"ServiceResponse","id":"EID8e2227c9-dca1-4838-b71c-18b81443ebd3","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID8e2227c9-dca1-4838-b71c-18b81443ebd3"}},{"type":"ServiceResponse","id":"EIDdc98bb92-fdb7-466d-95a7-ad1f7213a2e4","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDdc98bb92-fdb7-466d-95a7-ad1f7213a2e4"}},{"type":"Error","id":"EID27eb09f5-6b01-44a4-8d97-53ea5a7bb921","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID27eb09f5-6b01-44a4-8d97-53ea5a7bb921"}},{"type":"ServiceEndpoint","id":"EIDfa81a68c-a0a5-4019-9b29-d4c68e186a09","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID187300e7-f8ea-4998-a578-b95662c0622a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID71a97a13-ddf0-402c-bc94-3d2f913c2bc1","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID71a97a13-ddf0-402c-bc94-3d2f913c2bc1"}},{"type":"GetParameter","id":"EID041b2761-6898-43cb-9556-64fa4abb5b8d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID575d8fab-156a-4f90-aae0-ae7444059fca","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID575d8fab-156a-4f90-aae0-ae7444059fca"}},{"type":"ServiceResponse","id":"EIDa39aa606-cb05-49d3-aff0-ac6f15a6a6ca","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDa39aa606-cb05-49d3-aff0-ac6f15a6a6ca"}},{"type":"Message","id":"EIDa4373f70-05f5-4a77-a7c4-54c28942bb31","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDa4373f70-05f5-4a77-a7c4-54c28942bb31"}},{"type":"Message","id":"EIDcdcc91f3-1a71-4640-85b6-d093d819b404","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDcdcc91f3-1a71-4640-85b6-d093d819b404"}},{"type":"GetParameter","id":"EIDc6d1d156-1913-48fa-bcf2-a2ee37702ef4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDa828b8ec-7590-4c12-9464-1e3f1a166950","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID18b140a9-8ad8-497a-a854-0d3caba8d8be","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID18b140a9-8ad8-497a-a854-0d3caba8d8be"}},{"type":"ServiceEndpoint","id":"EID5535b2a5-ef23-438f-bb72-5821bd27eafb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID3707a786-424d-4ce5-8479-b6d055596878","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID3707a786-424d-4ce5-8479-b6d055596878"}},{"type":"ServiceResponse","id":"EIDeb4dd1ce-d802-4feb-b583-cdc6555a3440","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDeb4dd1ce-d802-4feb-b583-cdc6555a3440"}},{"type":"ServiceResponse","id":"EIDe6f050d7-3c7a-4604-b15d-53a2e9e1c18b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDe6f050d7-3c7a-4604-b15d-53a2e9e1c18b"}},{"type":"Message","id":"EID969cb28f-2eae-478c-8bba-09b2ea87397a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID969cb28f-2eae-478c-8bba-09b2ea87397a"}},{"type":"Message","id":"EIDa851c561-1449-4255-89a0-d393b846e1c4","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDa851c561-1449-4255-89a0-d393b846e1c4"}},{"type":"ServiceEndpoint","id":"EIDa5b14790-a06c-4543-86a6-065664b2080d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDbf6b6446-944d-470f-b2d5-0ba8a82a49db","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDbf6b6446-944d-470f-b2d5-0ba8a82a49db"}},{"type":"ServiceResponse","id":"EID3c439c75-3350-4238-a5f3-55ea017c12e4","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID3c439c75-3350-4238-a5f3-55ea017c12e4"}},{"type":"ServiceEndpoint","id":"EID52582694-e13e-44cf-96cc-8ef06ba7bb2f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID76cbb9b7-e1db-4c59-9c97-95b8155ae2ce","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID5e760a0d-1bef-424c-858b-ed948ced503e","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID5e760a0d-1bef-424c-858b-ed948ced503e"}},{"type":"ServiceResponse","id":"EIDca705b5f-747b-4e34-a83b-f5c07ace3b7b","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDca705b5f-747b-4e34-a83b-f5c07ace3b7b"}},{"type":"ServiceEndpoint","id":"EID4516b19c-5702-4ead-af1b-28de58d0639d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID6ced87ee-3d03-417c-b50a-c46df044fe08","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID6ced87ee-3d03-417c-b50a-c46df044fe08"}},{"type":"GetParameter","id":"EID9ccc18bb-75ed-44ea-b476-f1b27818bf96","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID98e64b74-14df-437a-8182-d1fc03a7cc16","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDe91ca3ff-0d71-420d-9e30-3ec3674b75c2","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDe91ca3ff-0d71-420d-9e30-3ec3674b75c2"}},{"type":"GetParameter","id":"EIDec5ec557-7383-4838-9a18-0799436416a3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDb8b50e15-59c7-419d-8b32-e96bd07ad997","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID5ce2902b-e7b1-4989-a742-d46259352f2d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID5ce2902b-e7b1-4989-a742-d46259352f2d"}},{"type":"ServiceEndpoint","id":"EIDdf2b6c25-e084-4e47-8a4a-95a7691323b5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EIDdcca59b9-8202-4b84-b6e9-d9db8dd241f6","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDdcca59b9-8202-4b84-b6e9-d9db8dd241f6"}},{"type":"ServiceEndpoint","id":"EIDaac97a15-bee9-4201-8b97-698e1dcd884d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EID77336552-2510-46d5-bdca-0573dd545266","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID77336552-2510-46d5-bdca-0573dd545266"}},{"type":"Message","id":"EID317ebd15-a19e-463d-b5c2-f4532974760a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID317ebd15-a19e-463d-b5c2-f4532974760a"}},{"type":"ServiceEndpoint","id":"EID73948d17-6b94-4b1c-989d-986d41b5e949","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDc3d0bfd8-1ab3-4fcf-8a0f-da0a945abb50","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDc3d0bfd8-1ab3-4fcf-8a0f-da0a945abb50"}},{"type":"GetParameter","id":"EID180ed503-ebf0-4624-9cb0-19432d375d2d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EID04647236-b4e1-4239-8b82-ce87e2ed1637","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID369b0cc0-3f93-48a4-87ea-fcae9d0c82d0","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID369b0cc0-3f93-48a4-87ea-fcae9d0c82d0"}},{"type":"GetParameter","id":"EIDa1e9aa02-94c8-43c8-8cea-1153cc0a4c7a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID12591039-d469-4551-a3aa-8d0bce2553d3","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID12591039-d469-4551-a3aa-8d0bce2553d3"}},{"type":"GetParameter","id":"EID58eb92f9-f416-4b62-bac2-de545a56d41d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID383708bb-935b-4b39-9391-faa83bcc92e6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID2d372e3a-d223-437e-a6af-31b672c9d712","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID57218b08-f903-4359-be6e-7a40f9b1ae74","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID57218b08-f903-4359-be6e-7a40f9b1ae74"}},{"type":"ServiceEndpoint","id":"EID1586e5bb-de47-41c6-b408-014e8c2d4e23","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID710694bd-1eb0-4cd5-994b-b2c2eff35654","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID710694bd-1eb0-4cd5-994b-b2c2eff35654"}},{"type":"GetParameter","id":"EIDded9ddb0-fd3c-4a43-8792-6a480023a162","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDb652313d-2079-4637-9246-ffd54afa3878","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID3c1e11c4-2b23-49f2-8d71-b371b06be5cd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID3c1e11c4-2b23-49f2-8d71-b371b06be5cd"}},{"type":"GetParameter","id":"EID0e01b8a2-7932-4047-9352-58eb2a36c15b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID4a237494-8628-4aa9-a668-b7064492ada8","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID4a237494-8628-4aa9-a668-b7064492ada8"}},{"type":"ServiceResponse","id":"EIDfad7303b-b8d2-45ce-9d82-03bfa4241d95","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDfad7303b-b8d2-45ce-9d82-03bfa4241d95"}},{"type":"ServiceEndpoint","id":"EID5979bedb-28ee-4e92-9533-fc9e7603a107","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID20b2c339-8700-4147-a847-45136c3f8794","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDd1a01ece-f67c-441d-9946-e4663c897ade","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDd1a01ece-f67c-441d-9946-e4663c897ade"}},{"type":"Message","id":"EID3099f928-5d53-4871-9be6-88a7e88132f9","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID3099f928-5d53-4871-9be6-88a7e88132f9"}},{"type":"Error","id":"EID1ed8e385-6d4c-4e9d-b7bc-683c3180a6b2","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID1ed8e385-6d4c-4e9d-b7bc-683c3180a6b2"}},{"type":"Error","id":"EID68c2fdc0-60f3-4f23-aa5b-2bd82f44ea16","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID68c2fdc0-60f3-4f23-aa5b-2bd82f44ea16"}},{"type":"ServiceResponse","id":"EIDb582d63c-b5fa-4f59-a86d-fa07a1823731","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDb582d63c-b5fa-4f59-a86d-fa07a1823731"}},{"type":"ServiceEndpoint","id":"EID9d5a133f-1a86-4be5-bff0-672c0c8f4711","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDb401ac38-839f-4ae6-aefe-6b825a493904","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDb401ac38-839f-4ae6-aefe-6b825a493904"}},{"type":"GetParameter","id":"EIDa107f99f-88fe-49e1-b3cd-0c93f6cd88ea","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EID9e16a1e3-73e5-4223-b181-c6abceccea33","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID9b70a3de-acad-45b8-9d33-6797cd83ff7f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EID9b70a3de-acad-45b8-9d33-6797cd83ff7f"}},{"type":"GetParameter","id":"EIDb9a0afed-5bd7-4b72-af3b-ddb717d1d0f5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDa651e014-80cf-4960-84a2-c0ee4c20fabe","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID36fb9fa2-efce-4a0d-aa7c-4df86e04fca4/Attachments/EIDa651e014-80cf-4960-84a2-c0ee4c20fabe"}},{"type":"GetParameter","id":"EID39647df6-f51f-4bc3-bfdf-e84aa383dc0c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDf448602d-18f9-4778-b4cc-b0d43cb092ca","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:18:43Z","duration":12176,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.008
13:19:08.928 [print] EID900f6475-f984-49ec-87ed-f0f7e31b5c12
* print response.EtfItemCollection.testRuns.TestRun.status 0.001
13:19:08.929 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:19:08.930 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:19:08.930 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:19:08.930 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/900f6475-f984-49ec-87ed-f0f7e31b5c12.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:19:08.931 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/900f6475-f984-49ec-87ed-f0f7e31b5c12.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:19:08.931 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID900f6475-f984-49ec-87ed-f0f7e31b5c12/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.001
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.004
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.013
13:19:08.952 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.003
13:19:08.957 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
13:19:08.957 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
3.023
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:13:56.994 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-ro/wfs?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.022
13:13:56.999 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 292
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-ro/wfs?request=GetCapabilities&service=WFS"}}}

13:14:00.017 response time in milliseconds: 2910.86
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:13:59 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804439811","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:14:00.017 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
2.477
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.011
13:10:31.015 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/cbsvierkanten500mv2/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.003
And request inspireload 0.000
When method post 2.460
13:10:31.028 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 286
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/cbsvierkanten500mv2/wfs?request=GetCapabilities"}}}

13:10:33.482 response time in milliseconds: 2348.93
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:10:33 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804233306","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.001
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:10:33.488 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
27.840
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:18:44.573 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 4.968
13:18:44.573 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 249
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml"}}}

13:18:49.539 response time in milliseconds: 4201.40
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:18:48 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:18:46 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/d1689966-27ba-48cd-88b7-394ea5e57dde.json","testRuns":{"TestRun":{"id":"EIDd1689966-27ba-48cd-88b7-394ea5e57dde","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:18:46.093Z","testTasks":{"TestTask":{"id":"EID54b690bd-240e-4212-8b5b-bed47204c438","parent":{"ref":"EIDd1689966-27ba-48cd-88b7-394ea5e57dde"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID6ee250db-6f13-4998-89aa-88a85b22aa8b"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDd1689966-27ba-48cd-88b7-394ea5e57dde/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID6ee250db-6f13-4998-89aa-88a85b22aa8b","remoteResource":"https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:18:45.007Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:18:45.464Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:18:49.542 [print] EIDd1689966-27ba-48cd-88b7-394ea5e57dde
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:18:49.542 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.001
13:18:49.543 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:18:49.544 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/d1689966-27ba-48cd-88b7-394ea5e57dde.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:18:49.544 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDd1689966-27ba-48cd-88b7-394ea5e57dde/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:18:49.544 [print] statuspath TestRuns/EIDd1689966-27ba-48cd-88b7-394ea5e57dde
* print 'progresspath ', progresspath 0.000
13:18:49.544 [print] progresspath  TestRuns/EIDd1689966-27ba-48cd-88b7-394ea5e57dde/progress
Given path progresspath 0.000
When method GET 0.537
13:18:49.546 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd1689966-27ba-48cd-88b7-394ea5e57dde/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:50.082 response time in milliseconds: 535.64
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:18:50 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"30","max":"31","log":["27.10.2020 13:18:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:46 UTC 2020)","27.10.2020 13:18:46 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:46 - Preparing 1 Test Task:","27.10.2020 13:18:46 -  TestTask 1 (54b690bd-240e-4212-8b5b-bed47204c438)","27.10.2020 13:18:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:46 -  with parameters: ","27.10.2020 13:18:46 - etf.testcases = *","27.10.2020 13:18:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:46 - Setting state to CREATED","27.10.2020 13:18:46 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:46 - Starting TestRun.d1689966-27ba-48cd-88b7-394ea5e57dde at 2020-10-27T13:18:48Z","27.10.2020 13:18:48 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:48 - Project Properties: ","27.10.2020 13:18:48 - etf.testcases - * ","27.10.2020 13:18:48 - serviceEndpoint - https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml ","27.10.2020 13:18:48 - username -  ","27.10.2020 13:18:48 - authUser -  ","27.10.2020 13:18:48 - authMethod - basic ","27.10.2020 13:18:48 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:18:50.082 [print] {
  "val": "30",
  "max": "31",
  "log": [
    "27.10.2020 13:18:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:46 UTC 2020)",
    "27.10.2020 13:18:46 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:18:46 - Preparing 1 Test Task:",
    "27.10.2020 13:18:46 -  TestTask 1 (54b690bd-240e-4212-8b5b-bed47204c438)",
    "27.10.2020 13:18:46 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:18:46 -  with parameters: ",
    "27.10.2020 13:18:46 - etf.testcases = *",
    "27.10.2020 13:18:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:18:46 - Setting state to CREATED",
    "27.10.2020 13:18:46 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:18:46 - Starting TestRun.d1689966-27ba-48cd-88b7-394ea5e57dde at 2020-10-27T13:18:48Z",
    "27.10.2020 13:18:48 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:18:48 - Project Properties: ",
    "27.10.2020 13:18:48 - etf.testcases - * ",
    "27.10.2020 13:18:48 - serviceEndpoint - https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml ",
    "27.10.2020 13:18:48 - username -  ",
    "27.10.2020 13:18:48 - authUser -  ",
    "27.10.2020 13:18:48 - authMethod - basic ",
    "27.10.2020 13:18:48 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 18.551
13:18:50.083 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd1689966-27ba-48cd-88b7-394ea5e57dde/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:50.594 response time in milliseconds: 510.24
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:18:50 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"34","max":"35","log":["27.10.2020 13:18:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:46 UTC 2020)","27.10.2020 13:18:46 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:46 - Preparing 1 Test Task:","27.10.2020 13:18:46 -  TestTask 1 (54b690bd-240e-4212-8b5b-bed47204c438)","27.10.2020 13:18:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:46 -  with parameters: ","27.10.2020 13:18:46 - etf.testcases = *","27.10.2020 13:18:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:46 - Setting state to CREATED","27.10.2020 13:18:46 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:46 - Starting TestRun.d1689966-27ba-48cd-88b7-394ea5e57dde at 2020-10-27T13:18:48Z","27.10.2020 13:18:48 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:48 - Project Properties: ","27.10.2020 13:18:48 - etf.testcases - * ","27.10.2020 13:18:48 - serviceEndpoint - https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml ","27.10.2020 13:18:48 - username -  ","27.10.2020 13:18:48 - authUser -  ","27.10.2020 13:18:48 - authMethod - basic ","27.10.2020 13:18:48 - TestRunTask initialized"]}

13:18:50.594 retry condition not satisfied: response.val == response.max
13:18:50.594 sleeping before retry #1
13:18:55.595 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd1689966-27ba-48cd-88b7-394ea5e57dde/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:56.103 response time in milliseconds: 507.81
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:18:56 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"149","max":"150","log":["27.10.2020 13:18:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:46 UTC 2020)","27.10.2020 13:18:46 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:46 - Preparing 1 Test Task:","27.10.2020 13:18:46 -  TestTask 1 (54b690bd-240e-4212-8b5b-bed47204c438)","27.10.2020 13:18:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:46 -  with parameters: ","27.10.2020 13:18:46 - etf.testcases = *","27.10.2020 13:18:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:46 - Setting state to CREATED","27.10.2020 13:18:46 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:46 - Starting TestRun.d1689966-27ba-48cd-88b7-394ea5e57dde at 2020-10-27T13:18:48Z","27.10.2020 13:18:48 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:48 - Project Properties: ","27.10.2020 13:18:48 - etf.testcases - * ","27.10.2020 13:18:48 - serviceEndpoint - https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml ","27.10.2020 13:18:48 - username -  ","27.10.2020 13:18:48 - authUser -  ","27.10.2020 13:18:48 - authMethod - basic ","27.10.2020 13:18:48 - TestRunTask initialized"]}

13:18:56.103 retry condition not satisfied: response.val == response.max
13:18:56.103 sleeping before retry #2
13:19:01.104 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd1689966-27ba-48cd-88b7-394ea5e57dde/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:01.618 response time in milliseconds: 513.28
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:19:01 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"203","max":"204","log":["27.10.2020 13:18:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:46 UTC 2020)","27.10.2020 13:18:46 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:46 - Preparing 1 Test Task:","27.10.2020 13:18:46 -  TestTask 1 (54b690bd-240e-4212-8b5b-bed47204c438)","27.10.2020 13:18:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:46 -  with parameters: ","27.10.2020 13:18:46 - etf.testcases = *","27.10.2020 13:18:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:46 - Setting state to CREATED","27.10.2020 13:18:46 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:46 - Starting TestRun.d1689966-27ba-48cd-88b7-394ea5e57dde at 2020-10-27T13:18:48Z","27.10.2020 13:18:48 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:48 - Project Properties: ","27.10.2020 13:18:48 - etf.testcases - * ","27.10.2020 13:18:48 - serviceEndpoint - https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml ","27.10.2020 13:18:48 - username -  ","27.10.2020 13:18:48 - authUser -  ","27.10.2020 13:18:48 - authMethod - basic ","27.10.2020 13:18:48 - TestRunTask initialized","27.10.2020 13:18:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:58 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:58 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

13:19:01.618 retry condition not satisfied: response.val == response.max
13:19:01.618 sleeping before retry #3
13:19:06.619 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd1689966-27ba-48cd-88b7-394ea5e57dde/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:08.633 response time in milliseconds: 2013.05
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:19:08 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:19:08.633 retry condition satisfied
* print response 0.000
13:19:08.633 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 3.768
13:19:08.634 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd1689966-27ba-48cd-88b7-394ea5e57dde
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:12.399 response time in milliseconds: 2699.45
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Cache-Control: public, max-age=120
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:19:11 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Last-Modified: Tue, 27 Oct 2020 13:19:08 GMT
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/d1689966-27ba-48cd-88b7-394ea5e57dde.json","testRuns":{"TestRun":{"id":"EIDd1689966-27ba-48cd-88b7-394ea5e57dde","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:18:46.093Z","testTasks":{"TestTask":{"id":"EID54b690bd-240e-4212-8b5b-bed47204c438","parent":{"ref":"EIDd1689966-27ba-48cd-88b7-394ea5e57dde"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID6ee250db-6f13-4998-89aa-88a85b22aa8b"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID95df579c-f084-4501-8519-bcb932e892fc"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDd1689966-27ba-48cd-88b7-394ea5e57dde/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID6ee250db-6f13-4998-89aa-88a85b22aa8b","remoteResource":"https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:18:45.007Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:18:45.464Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://service.pdok.nl/cbs/hh/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID95df579c-f084-4501-8519-bcb932e892fc","testObject":{"ref":"EID6ee250db-6f13-4998-89aa-88a85b22aa8b"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a360ba9-0175-1000-d462-99401fe885ed","testCaseResults":{"TestCaseResult":[{"id":"EID6a360ba9-0175-1000-7088-e5e4bbe47be8","testStepResults":{"TestStepResult":[{"id":"EID6a360ba9-0175-1000-4a7c-b8452f5e2d31","parent":{"ref":"EID6a360ba9-0175-1000-7088-e5e4bbe47be8"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:18:48Z","duration":16,"status":"PASSED"},{"id":"EID6a360bba-0175-1000-7e57-011c713cf245","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a360c58-0175-1000-e84d-831a2adaef58","parent":{"ref":"EID6a360bba-0175-1000-7e57-011c713cf245"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360c58-0175-1000-b17b-2ea2bec67509","parent":{"ref":"EID6a360bba-0175-1000-7e57-011c713cf245"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360c58-0175-1000-f76f-30092bb5ae4c","parent":{"ref":"EID6a360bba-0175-1000-7e57-011c713cf245"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360c58-0175-1000-0514-150c408034b9","parent":{"ref":"EID6a360bba-0175-1000-7e57-011c713cf245"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbdfdb1b8-c4b9-43b2-b01b-0235286cb08f"},{"ref":"EID72dbd341-ee42-4874-a275-a4f358729230"},{"ref":"EIDf375d805-dc7f-499f-b081-002a8fcb788f"}]},"parent":{"ref":"EID6a360ba9-0175-1000-7088-e5e4bbe47be8"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:18:48Z","duration":60,"status":"PASSED"}]},"parent":{"ref":"EID6a360ba9-0175-1000-d462-99401fe885ed"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:18:48Z","duration":175,"status":"PASSED"},{"id":"EID6a360c58-0175-1000-d781-2fa5dee3eca3","testStepResults":{"TestStepResult":{"id":"EID6a360c58-0175-1000-0d24-1f707fd82ca0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a360d07-0175-1000-2074-001ee8904069","parent":{"ref":"EID6a360c58-0175-1000-0d24-1f707fd82ca0"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360d07-0175-1000-4d6c-72e9865bdd3b","parent":{"ref":"EID6a360c58-0175-1000-0d24-1f707fd82ca0"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360d07-0175-1000-6b6e-61d82b5eae22","parent":{"ref":"EID6a360c58-0175-1000-0d24-1f707fd82ca0"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf1f59a6c-aa18-48be-a203-37b1fbde96aa"},{"ref":"EIDe9c3f98a-60eb-4754-845b-4e37593462bc"},{"ref":"EIDe6b045ca-b808-4c83-bed4-d334ef8fd49c"}]},"parent":{"ref":"EID6a360c58-0175-1000-d781-2fa5dee3eca3"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:18:48Z","duration":29,"status":"PASSED"}},"parent":{"ref":"EID6a360ba9-0175-1000-d462-99401fe885ed"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:18:48Z","duration":176,"status":"PASSED"}]},"parent":{"ref":"EID95df579c-f084-4501-8519-bcb932e892fc"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:18:48Z","duration":351,"status":"PASSED"},{"id":"EID6a360d08-0175-1000-5afd-4748b5cfc8d6","testCaseResults":{"TestCaseResult":[{"id":"EID6a360d08-0175-1000-8df8-c137626d300e","testStepResults":{"TestStepResult":[{"id":"EID6a360d08-0175-1000-92a6-96ff812f9676","parent":{"ref":"EID6a360d08-0175-1000-8df8-c137626d300e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:18:48Z","duration":29,"status":"PASSED"},{"id":"EID6a360d08-0175-1000-6094-e9bb693eedae","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a360dcc-0175-1000-b1af-5a60bdd2fef9","parent":{"ref":"EID6a360d08-0175-1000-6094-e9bb693eedae"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360dcc-0175-1000-4db5-565332a4e787","parent":{"ref":"EID6a360d08-0175-1000-6094-e9bb693eedae"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360dcc-0175-1000-51e8-c20a3911e87c","parent":{"ref":"EID6a360d08-0175-1000-6094-e9bb693eedae"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360dcc-0175-1000-7168-b2ed279f1b25","parent":{"ref":"EID6a360d08-0175-1000-6094-e9bb693eedae"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"},{"id":"EID6a360dcc-0175-1000-4196-249ebf8453fc","parent":{"ref":"EID6a360d08-0175-1000-6094-e9bb693eedae"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:18:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID07dce0c4-5e95-4060-8a62-7a1ec6a100a4"},{"ref":"EID9ee97801-4a8c-404f-80f2-e77b6a21590b"},{"ref":"EIDbe214894-6459-4a52-96d0-a50fffa191de"}]},"parent":{"ref":"EID6a360d08-0175-1000-8df8-c137626d300e"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:18:48Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6a360d08-0175-1000-5afd-4748b5cfc8d6"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:18:48Z","duration":196,"status":"PASSED"},{"id":"EID6a360dcd-0175-1000-6a43-634c0d5d6362","testStepResults":{"TestStepResult":[{"id":"EID6a360dcd-0175-1000-f1f9-93b965a1013f","attachments":{"attachment":[{"ref":"EID1215da15-89d7-461f-8d44-f15ac32248f0"},{"ref":"EIDe4486798-722c-4df5-ad35-8cea2452a471"}]},"parent":{"ref":"EID6a360dcd-0175-1000-6a43-634c0d5d6362"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:18:48Z","duration":129,"status":"PASSED"},{"id":"EID6a360ed4-0175-1000-9a5a-231dc63798e7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a360f3e-0175-1000-ffe0-4c1d6047ecf4","parent":{"ref":"EID6a360ed4-0175-1000-9a5a-231dc63798e7"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a360f3e-0175-1000-48be-134d28e8b6f3","parent":{"ref":"EID6a360ed4-0175-1000-9a5a-231dc63798e7"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a360f3e-0175-1000-d789-753034f40d19","parent":{"ref":"EID6a360ed4-0175-1000-9a5a-231dc63798e7"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a360f3e-0175-1000-3a1b-c894abd1085b","parent":{"ref":"EID6a360ed4-0175-1000-9a5a-231dc63798e7"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6e1e9949-c15a-47ac-a16c-ab48daeb0ba0"},{"ref":"EIDeb9490e6-fb48-4dc4-886e-26ce560b647f"},{"ref":"EIDe65070ee-2c61-4e18-9e2f-f26c9db2594b"}]},"parent":{"ref":"EID6a360dcd-0175-1000-6a43-634c0d5d6362"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:18:49Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6a360d08-0175-1000-5afd-4748b5cfc8d6"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:18:48Z","duration":369,"status":"PASSED"},{"id":"EID6a360f3e-0175-1000-0bf4-e3aa3f21ef9c","testStepResults":{"TestStepResult":[{"id":"EID6a360f3e-0175-1000-2724-2f55ebbfa0d1","attachments":{"attachment":[{"ref":"EID756ab722-e30a-42a2-a9b8-ee04d8f8f079"},{"ref":"EID521987ea-0bfb-4420-af03-f138a098e55a"}]},"parent":{"ref":"EID6a360f3e-0175-1000-0bf4-e3aa3f21ef9c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:18:49Z","duration":73,"status":"PASSED"},{"id":"EID6a360fb4-0175-1000-804e-d38a212f1f45","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361067-0175-1000-3a7f-58a9d703a668","parent":{"ref":"EID6a360fb4-0175-1000-804e-d38a212f1f45"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a361068-0175-1000-8408-cd497cd072d2","parent":{"ref":"EID6a360fb4-0175-1000-804e-d38a212f1f45"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a361068-0175-1000-1376-84b9f28a2f57","parent":{"ref":"EID6a360fb4-0175-1000-804e-d38a212f1f45"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a361068-0175-1000-7e7f-2a52707baa63","parent":{"ref":"EID6a360fb4-0175-1000-804e-d38a212f1f45"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a361068-0175-1000-df83-fe4d3fd5b7fc","parent":{"ref":"EID6a360fb4-0175-1000-804e-d38a212f1f45"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5d4eed5b-fe16-4d73-a400-cc6827eaf70a"},{"ref":"EID8e64c941-4530-41eb-b3b3-b7e7ba379a44"},{"ref":"EID2974f41a-ee16-4114-a36a-fdf63783ef55"}]},"parent":{"ref":"EID6a360f3e-0175-1000-0bf4-e3aa3f21ef9c"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:18:49Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6a360d08-0175-1000-5afd-4748b5cfc8d6"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:18:49Z","duration":298,"status":"PASSED"},{"id":"EID6a361068-0175-1000-710d-ecafa602ff18","testStepResults":{"TestStepResult":[{"id":"EID6a361068-0175-1000-f8cc-9ba17be87524","attachments":{"attachment":[{"ref":"EID553d16a9-a936-4077-8eea-a64b29f52886"},{"ref":"EID54737389-cddd-4254-9d7b-0250164852b2"}]},"parent":{"ref":"EID6a361068-0175-1000-710d-ecafa602ff18"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:18:49Z","duration":71,"status":"PASSED"},{"id":"EID6a3610d0-0175-1000-156e-de07f16788f8","parent":{"ref":"EID6a361068-0175-1000-710d-ecafa602ff18"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a3610d0-0175-1000-336f-f87e010b0689","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361157-0175-1000-8d66-29ca6fd19f14","parent":{"ref":"EID6a3610d0-0175-1000-336f-f87e010b0689"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a361157-0175-1000-0cd9-bd868bed4d9b","parent":{"ref":"EID6a3610d0-0175-1000-336f-f87e010b0689"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a361157-0175-1000-c761-e6a303ec95eb","parent":{"ref":"EID6a3610d0-0175-1000-336f-f87e010b0689"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a361157-0175-1000-480f-88d188376c83","parent":{"ref":"EID6a3610d0-0175-1000-336f-f87e010b0689"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcec27b3c-69d7-4ec5-b796-ab8bc855f7ce"},{"ref":"EIDcddd2207-560b-46f2-b184-04ae77602f08"},{"ref":"EID376ac0db-5dcc-418c-b342-e8c66c8a385b"}]},"parent":{"ref":"EID6a361068-0175-1000-710d-ecafa602ff18"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:18:49Z","duration":23,"status":"PASSED"},{"id":"EID6a361157-0175-1000-ed04-4334d8d58010","attachments":{"attachment":{"ref":"EID138654c2-eae1-4425-a568-71572e78716c"}},"parent":{"ref":"EID6a361068-0175-1000-710d-ecafa602ff18"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a36119a-0175-1000-fd9c-4bbaa57d3164","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361227-0175-1000-5bd7-4a0a05a2d509","parent":{"ref":"EID6a36119a-0175-1000-fd9c-4bbaa57d3164"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a361227-0175-1000-ae73-31f51be671e3","parent":{"ref":"EID6a36119a-0175-1000-fd9c-4bbaa57d3164"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a361227-0175-1000-f8e4-70c56b85227a","parent":{"ref":"EID6a36119a-0175-1000-fd9c-4bbaa57d3164"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a361227-0175-1000-bc31-65e0cc031ae9","parent":{"ref":"EID6a36119a-0175-1000-fd9c-4bbaa57d3164"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"},{"id":"EID6a361227-0175-1000-c4d9-6699c5df2b83","parent":{"ref":"EID6a36119a-0175-1000-fd9c-4bbaa57d3164"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:18:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd9ffe7bd-f746-4523-9235-7a039282b838"},{"ref":"EIDe351d09f-1c11-49d4-bf1d-3c0d2cd0b516"},{"ref":"EID7765d37b-9666-4747-92ec-26c69bde50c4"}]},"parent":{"ref":"EID6a361068-0175-1000-710d-ecafa602ff18"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:18:49Z","duration":25,"status":"PASSED"}]},"parent":{"ref":"EID6a360d08-0175-1000-5afd-4748b5cfc8d6"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:18:49Z","duration":447,"status":"PASSED"},{"id":"EID6a36123e-0175-1000-97c7-4621df69f8a7","testStepResults":{"TestStepResult":[{"id":"EID6a36123e-0175-1000-c306-d5fe90b61a65","attachments":{"attachment":[{"ref":"EID25e5e65f-36d9-46aa-9a1f-cfb4cd6f4e2f"},{"ref":"EID002272c2-a318-4489-a520-9d538b9d42dc"}]},"parent":{"ref":"EID6a36123e-0175-1000-97c7-4621df69f8a7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:18:49Z","duration":55,"status":"PASSED"},{"id":"EID6a3612f5-0175-1000-a706-e0709c2d7ada","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36139c-0175-1000-d11d-0da2bcc0a86b","parent":{"ref":"EID6a3612f5-0175-1000-a706-e0709c2d7ada"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a36139c-0175-1000-0b1e-c5ad1c21f94f","parent":{"ref":"EID6a3612f5-0175-1000-a706-e0709c2d7ada"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a36139c-0175-1000-7355-c49f1b666007","parent":{"ref":"EID6a3612f5-0175-1000-a706-e0709c2d7ada"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a36139c-0175-1000-22e5-8b34aea53ca9","parent":{"ref":"EID6a3612f5-0175-1000-a706-e0709c2d7ada"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9f6807d4-3aa8-4966-9754-22bc6a2da523"},{"ref":"EIDe971d07b-5993-4f02-a984-bc500299b96e"},{"ref":"EIDec301374-db71-4948-a563-f73d3f0bcdc6"}]},"parent":{"ref":"EID6a36123e-0175-1000-97c7-4621df69f8a7"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:18:50Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6a360d08-0175-1000-5afd-4748b5cfc8d6"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:18:49Z","duration":350,"status":"PASSED"},{"id":"EID6a36139c-0175-1000-c7f9-6deb5e6e5d3a","testStepResults":{"TestStepResult":[{"id":"EID6a36139c-0175-1000-7d4b-8d7a004f4f62","attachments":{"attachment":[{"ref":"EID4501b337-6417-4fda-8b75-36a8892057f1"},{"ref":"EIDbb9e68f7-3cd5-48ba-b15b-8ef0ba6137a5"}]},"parent":{"ref":"EID6a36139c-0175-1000-c7f9-6deb5e6e5d3a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:18:50Z","duration":114,"status":"PASSED"},{"id":"EID6a36144b-0175-1000-7121-cf12792f3039","parent":{"ref":"EID6a36139c-0175-1000-c7f9-6deb5e6e5d3a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a36144b-0175-1000-678d-c7cf23f0db0f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3614a3-0175-1000-e382-ce290a07c64d","parent":{"ref":"EID6a36144b-0175-1000-678d-c7cf23f0db0f"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3614a3-0175-1000-e11d-d58333c395e7","parent":{"ref":"EID6a36144b-0175-1000-678d-c7cf23f0db0f"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3614a3-0175-1000-f81d-aafd3d037cfa","parent":{"ref":"EID6a36144b-0175-1000-678d-c7cf23f0db0f"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3614a3-0175-1000-61e0-70302cf58485","parent":{"ref":"EID6a36144b-0175-1000-678d-c7cf23f0db0f"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4b92eda2-6a03-4e54-b22e-c6493e366b6b"},{"ref":"EIDfec54bce-ffaa-4408-b9df-25904c9ebdd5"},{"ref":"EID780447ab-c0c6-4fc7-a556-117a7eadf4ed"}]},"parent":{"ref":"EID6a36139c-0175-1000-c7f9-6deb5e6e5d3a"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:18:50Z","duration":21,"status":"PASSED"},{"id":"EID6a3614a3-0175-1000-1c52-178ac209c363","attachments":{"attachment":{"ref":"EID55e351cc-8778-4aef-8ccb-041570fc17d8"}},"parent":{"ref":"EID6a36139c-0175-1000-c7f9-6deb5e6e5d3a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:18:50Z","duration":1,"status":"PASSED"},{"id":"EID6a3614b0-0175-1000-f7a4-ff549b0013ed","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3615a0-0175-1000-fb03-e3b40c1bedec","parent":{"ref":"EID6a3614b0-0175-1000-f7a4-ff549b0013ed"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3615a0-0175-1000-12ce-0d219fc84fcc","parent":{"ref":"EID6a3614b0-0175-1000-f7a4-ff549b0013ed"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3615a0-0175-1000-e1c3-3031122a2021","parent":{"ref":"EID6a3614b0-0175-1000-f7a4-ff549b0013ed"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf41064ca-9c74-421a-93eb-48dcf96b306e"},{"ref":"EID1ff6c0f4-0ddc-4396-b8d7-c41207337fbb"},{"ref":"EID39f3e03f-466d-48a5-93bf-b165060f6ee4"}]},"parent":{"ref":"EID6a36139c-0175-1000-c7f9-6deb5e6e5d3a"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:18:50Z","duration":118,"status":"PASSED"},{"id":"EID6a3615a1-0175-1000-414b-b4936195b903","attachments":{"attachment":{"ref":"EIDa8b35186-8b76-4006-b031-a342956304ef"}},"parent":{"ref":"EID6a36139c-0175-1000-c7f9-6deb5e6e5d3a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3615bc-0175-1000-9150-5cc34f3270d6","attachments":{"attachment":{"ref":"EID21e134f4-4e91-4a6d-959f-5be9d5e0475e"}},"parent":{"ref":"EID6a36139c-0175-1000-c7f9-6deb5e6e5d3a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-27T13:18:50Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a360d08-0175-1000-5afd-4748b5cfc8d6"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:18:50Z","duration":623,"status":"PASSED"},{"id":"EID6a36160b-0175-1000-bf86-5cc02cc18066","testStepResults":{"TestStepResult":[{"id":"EID6a36160b-0175-1000-28b4-25af44ebac8e","attachments":{"attachment":[{"ref":"EID932328f8-43a5-4f37-87b8-5ed76b025f99"},{"ref":"EIDff45f098-77e9-4cbb-971b-a58f05f699fe"}]},"parent":{"ref":"EID6a36160b-0175-1000-bf86-5cc02cc18066"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:18:50Z","duration":68,"status":"PASSED"},{"id":"EID6a361678-0175-1000-71e9-5571ecd829c0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3616e2-0175-1000-b0b7-a4696c6f5a20","parent":{"ref":"EID6a361678-0175-1000-71e9-5571ecd829c0"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a3616e2-0175-1000-9ca2-28f89403db1a","parent":{"ref":"EID6a361678-0175-1000-71e9-5571ecd829c0"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a3616e2-0175-1000-b20f-278f516ce597","parent":{"ref":"EID6a361678-0175-1000-71e9-5571ecd829c0"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a3616e2-0175-1000-b322-b73ba835dc3c","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a361678-0175-1000-71e9-5571ecd829c0"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID04195cc1-84dd-4dc1-af82-cfff85614377"},{"ref":"EIDd61cd19d-b604-4884-92b5-b584701a8d4f"},{"ref":"EID66b0e6e4-557f-4d0b-9ee5-e123e9280271"}]},"parent":{"ref":"EID6a36160b-0175-1000-bf86-5cc02cc18066"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:18:51Z","duration":21,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a360d08-0175-1000-5afd-4748b5cfc8d6"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:18:50Z","duration":215,"status":"PASSED_MANUAL"},{"id":"EID6a3616e2-0175-1000-9e46-1617b8aa155a","testStepResults":{"TestStepResult":{"id":"EID6a3616e2-0175-1000-5b41-6e104fea0a74","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361759-0175-1000-89a9-51ccb8332d8c","parent":{"ref":"EID6a3616e2-0175-1000-5b41-6e104fea0a74"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a361759-0175-1000-51b4-32ccb4c74495","parent":{"ref":"EID6a3616e2-0175-1000-5b41-6e104fea0a74"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a361759-0175-1000-5650-ccf6c0df65b5","parent":{"ref":"EID6a3616e2-0175-1000-5b41-6e104fea0a74"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a361759-0175-1000-2457-d11d850c1342","parent":{"ref":"EID6a3616e2-0175-1000-5b41-6e104fea0a74"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID482c93b9-c8e4-493e-8a3e-9abd36452881"},{"ref":"EID28a7a224-c102-4c1f-9eee-99426af195b6"},{"ref":"EID37af52c2-20a9-4d2e-ad5c-3a76ba3b5718"}]},"parent":{"ref":"EID6a3616e2-0175-1000-9e46-1617b8aa155a"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:18:51Z","duration":25,"status":"PASSED"}},"parent":{"ref":"EID6a360d08-0175-1000-5afd-4748b5cfc8d6"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:18:51Z","duration":127,"status":"PASSED"},{"id":"EID6a361761-0175-1000-8540-4758dbf494a1","testStepResults":{"TestStepResult":{"id":"EID6a361761-0175-1000-ab7f-031965e7116c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3617e3-0175-1000-25a2-666006ff3688","parent":{"ref":"EID6a361761-0175-1000-ab7f-031965e7116c"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a3617e3-0175-1000-1ba1-668eacced918","parent":{"ref":"EID6a361761-0175-1000-ab7f-031965e7116c"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a3617e3-0175-1000-faa0-9c9841a2316e","parent":{"ref":"EID6a361761-0175-1000-ab7f-031965e7116c"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"},{"id":"EID6a3617e3-0175-1000-5573-f3a41ce57865","parent":{"ref":"EID6a361761-0175-1000-ab7f-031965e7116c"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:18:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb48cea74-d0ac-4baf-8e21-9984f970484b"},{"ref":"EIDa5d2829a-8032-433b-a6a9-58422bd8b6b9"},{"ref":"EID619387df-ab53-44b3-b7fc-d73c4b508ef6"}]},"parent":{"ref":"EID6a361761-0175-1000-8540-4758dbf494a1"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:18:51Z","duration":24,"status":"PASSED"}},"parent":{"ref":"EID6a360d08-0175-1000-5afd-4748b5cfc8d6"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:18:51Z","duration":130,"status":"PASSED"},{"id":"EID6a3617e3-0175-1000-d18d-9461cf73fbcc","testStepResults":{"TestStepResult":[{"id":"EID6a3617e3-0175-1000-78f9-c8a15bafb2cd","attachments":{"attachment":[{"ref":"EIDf8687a8e-69a4-49b8-8637-c8ca8364d415"},{"ref":"EID6a9b6378-a6fa-4369-8d45-f91133ab0c24"},{"ref":"EID5dfbbd02-3412-475e-bdd9-3823c3b70c29"},{"ref":"EID054eb596-f642-446e-a751-4ae9327cad2d"},{"ref":"EID645a18a5-5322-4a8e-9a9c-f748308dbe02"},{"ref":"EIDc8ffb26e-0b34-435f-b9e5-d796b43a5a0b"},{"ref":"EIDf7d6202f-1d69-4d75-a61f-b0ba73055ce4"},{"ref":"EIDf3021403-6520-41b8-9ed5-0c22b3d11c3b"},{"ref":"EID71a88826-0268-490e-998b-79b060242d73"},{"ref":"EIDaf90e447-396f-43e4-b515-bb2c7edf18df"},{"ref":"EID29b2e74e-8bd2-44dd-9fd1-be88cf44af58"},{"ref":"EID08619ba2-ffa6-4564-8897-50a0132eeffc"}]},"parent":{"ref":"EID6a3617e3-0175-1000-d18d-9461cf73fbcc"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:18:51Z","duration":775,"status":"PASSED"},{"id":"EID6a361c55-0175-1000-fb3f-11e389350970","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361ccf-0175-1000-79b5-5f07862892aa","parent":{"ref":"EID6a361c55-0175-1000-fb3f-11e389350970"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361ccf-0175-1000-f7cf-80402705a2a1","parent":{"ref":"EID6a361c55-0175-1000-fb3f-11e389350970"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361ccf-0175-1000-a40f-7de7b8be0efc","parent":{"ref":"EID6a361c55-0175-1000-fb3f-11e389350970"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361ccf-0175-1000-22ce-9e06deff8986","parent":{"ref":"EID6a361c55-0175-1000-fb3f-11e389350970"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361ccf-0175-1000-5f8a-7d73724bc969","parent":{"ref":"EID6a361c55-0175-1000-fb3f-11e389350970"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9f2b7f98-2510-4f86-9795-2b1b7a0d1e03"},{"ref":"EID0d605b34-8029-402b-a518-455b03ba22fc"},{"ref":"EID843d4e02-bb8b-4c15-b5f4-0c6e550ca4a7"}]},"parent":{"ref":"EID6a3617e3-0175-1000-d18d-9461cf73fbcc"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-27T13:18:52Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6a360d08-0175-1000-5afd-4748b5cfc8d6"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:18:51Z","duration":1260,"status":"PASSED"},{"id":"EID6a361ccf-0175-1000-c26b-fceedafa11c7","testStepResults":{"TestStepResult":{"id":"EID6a361ccf-0175-1000-83ad-afccb7f52884","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361d43-0175-1000-6d9d-48c41b858e74","parent":{"ref":"EID6a361ccf-0175-1000-83ad-afccb7f52884"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361d43-0175-1000-e7fe-032586105251","parent":{"ref":"EID6a361ccf-0175-1000-83ad-afccb7f52884"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361d43-0175-1000-a6ed-899bb7953a26","parent":{"ref":"EID6a361ccf-0175-1000-83ad-afccb7f52884"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361d43-0175-1000-5f16-3109ed67cb09","parent":{"ref":"EID6a361ccf-0175-1000-83ad-afccb7f52884"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb3e92334-2a05-4462-a4a2-539193959e44"},{"ref":"EIDaff3e7ad-4e62-44fa-8b7e-87b79c9d4af2"},{"ref":"EIDcc8b5cc0-91dd-4ab7-962a-f34404e80034"}]},"parent":{"ref":"EID6a361ccf-0175-1000-c26b-fceedafa11c7"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:18:52Z","duration":28,"status":"PASSED"}},"parent":{"ref":"EID6a360d08-0175-1000-5afd-4748b5cfc8d6"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:18:52Z","duration":116,"status":"PASSED"},{"id":"EID6a361d43-0175-1000-9ac1-d54dc61cfd63","testStepResults":{"TestStepResult":{"id":"EID6a361d43-0175-1000-8b42-0ef6c430bc19","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361db1-0175-1000-abb3-2424035ab746","parent":{"ref":"EID6a361d43-0175-1000-8b42-0ef6c430bc19"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361db1-0175-1000-4525-d42edb702770","parent":{"ref":"EID6a361d43-0175-1000-8b42-0ef6c430bc19"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361db1-0175-1000-5564-3cceb4d8ec5f","parent":{"ref":"EID6a361d43-0175-1000-8b42-0ef6c430bc19"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361db1-0175-1000-0c33-68cf84698afa","parent":{"ref":"EID6a361d43-0175-1000-8b42-0ef6c430bc19"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361db1-0175-1000-9935-eb9ad7b2ffd7","parent":{"ref":"EID6a361d43-0175-1000-8b42-0ef6c430bc19"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361db1-0175-1000-ea3d-1220f255b867","parent":{"ref":"EID6a361d43-0175-1000-8b42-0ef6c430bc19"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd7f47fe5-b18f-40c0-ab66-dc24eac4646c"},{"ref":"EID8ae340f8-f498-4ed8-a973-1d74b78a16e6"},{"ref":"EID1418c1f3-d097-4895-8b51-e4cee3aea15d"}]},"parent":{"ref":"EID6a361d43-0175-1000-9ac1-d54dc61cfd63"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:18:52Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6a360d08-0175-1000-5afd-4748b5cfc8d6"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:18:52Z","duration":110,"status":"PASSED"},{"id":"EID6a361db1-0175-1000-bfaa-f8e312815ad8","testStepResults":{"TestStepResult":{"id":"EID6a361db1-0175-1000-a896-102cc348e530","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361e34-0175-1000-9070-92c5a9d6262b","parent":{"ref":"EID6a361db1-0175-1000-a896-102cc348e530"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361e34-0175-1000-5327-0096141b36da","parent":{"ref":"EID6a361db1-0175-1000-a896-102cc348e530"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361e34-0175-1000-0117-1e1a29997a22","parent":{"ref":"EID6a361db1-0175-1000-a896-102cc348e530"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361e34-0175-1000-05e5-1aa1d6974f7c","parent":{"ref":"EID6a361db1-0175-1000-a896-102cc348e530"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361e34-0175-1000-bad2-a2a0111e28b7","parent":{"ref":"EID6a361db1-0175-1000-a896-102cc348e530"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"},{"id":"EID6a361e34-0175-1000-7078-989953669e7f","parent":{"ref":"EID6a361db1-0175-1000-a896-102cc348e530"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:18:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7f6a2460-dabd-4ce7-a55a-9b47584f4adb"},{"ref":"EID45dc5ab2-8f4b-4cb8-be53-68f240cf207d"},{"ref":"EID67bf6ff7-f39e-4b58-9b56-91edb33aa4b1"}]},"parent":{"ref":"EID6a361db1-0175-1000-bfaa-f8e312815ad8"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:18:52Z","duration":31,"status":"PASSED"}},"parent":{"ref":"EID6a360d08-0175-1000-5afd-4748b5cfc8d6"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:18:52Z","duration":131,"status":"PASSED"},{"id":"EID6a361e46-0175-1000-2959-467971b685f5","testStepResults":{"TestStepResult":{"id":"EID6a361e46-0175-1000-7bcf-e2537a6b79a5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a361eda-0175-1000-2b69-8cd89a22d296","parent":{"ref":"EID6a361e46-0175-1000-7bcf-e2537a6b79a5"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a361eda-0175-1000-0322-4d0bd0b5424c","parent":{"ref":"EID6a361e46-0175-1000-7bcf-e2537a6b79a5"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a361eda-0175-1000-0fe9-4bf902a92ced","parent":{"ref":"EID6a361e46-0175-1000-7bcf-e2537a6b79a5"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a361eda-0175-1000-a6be-8479db3b1af2","parent":{"ref":"EID6a361e46-0175-1000-7bcf-e2537a6b79a5"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0937cec0-d988-4daa-ad9d-fb61cef984c5"},{"ref":"EID7dbf275a-91d4-40c0-bec3-5bdff084b95a"},{"ref":"EID5bda1712-22d1-4d87-8024-228f7dad21c5"}]},"parent":{"ref":"EID6a361e46-0175-1000-2959-467971b685f5"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:18:52Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6a360d08-0175-1000-5afd-4748b5cfc8d6"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:18:52Z","duration":148,"status":"PASSED"},{"id":"EID6a361eda-0175-1000-9429-8e5240412c06","testStepResults":{"TestStepResult":[{"id":"EID6a361eda-0175-1000-c02d-f1210d4df0fb","attachments":{"attachment":[{"ref":"EID3d0ed41b-f30e-4acc-b63e-baf76b8a6ab7"},{"ref":"EID4b4c3dc2-0a0b-407d-9e20-03f56c9f8bdb"},{"ref":"EIDffa65b1d-caae-4313-a94f-b171b0b2e458"},{"ref":"EID04c895eb-590f-4063-a004-c8f60740c3af"}]},"parent":{"ref":"EID6a361eda-0175-1000-9429-8e5240412c06"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:18:53Z","duration":169,"status":"PASSED"},{"id":"EID6a361fb5-0175-1000-d7ea-d306bf3b890a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a362036-0175-1000-5df7-afe4b97adeb2","parent":{"ref":"EID6a361fb5-0175-1000-d7ea-d306bf3b890a"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a362036-0175-1000-2580-61a1f9707ae8","parent":{"ref":"EID6a361fb5-0175-1000-d7ea-d306bf3b890a"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a362036-0175-1000-aee2-eee0c7a3298d","parent":{"ref":"EID6a361fb5-0175-1000-d7ea-d306bf3b890a"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a362036-0175-1000-6728-a5033f85a832","parent":{"ref":"EID6a361fb5-0175-1000-d7ea-d306bf3b890a"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0881454d-8df2-470e-8a4c-ba3cbfef5fb9"},{"ref":"EIDad1fdfba-c78b-49da-aef8-47b01229122c"},{"ref":"EID792604c0-ff67-4cc3-a06c-626f2f527e7a"}]},"parent":{"ref":"EID6a361eda-0175-1000-9429-8e5240412c06"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:18:53Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6a360d08-0175-1000-5afd-4748b5cfc8d6"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:18:53Z","duration":348,"status":"PASSED"},{"id":"EID6a362037-0175-1000-4241-c376039f60b4","testStepResults":{"TestStepResult":{"id":"EID6a362037-0175-1000-c99b-c1939a86d344","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a362096-0175-1000-29ca-cda579175fc4","parent":{"ref":"EID6a362037-0175-1000-c99b-c1939a86d344"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a362096-0175-1000-6e30-dac0c11aa4aa","parent":{"ref":"EID6a362037-0175-1000-c99b-c1939a86d344"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a362096-0175-1000-1b19-3ca14b9139cf","parent":{"ref":"EID6a362037-0175-1000-c99b-c1939a86d344"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a362096-0175-1000-f00d-bba73c4f37c3","parent":{"ref":"EID6a362037-0175-1000-c99b-c1939a86d344"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID00fdbe41-8f87-453d-ab38-af33e9430c65"},{"ref":"EID28b3f968-0a9e-4433-ad47-b9a242a9d7e1"},{"ref":"EID58be94a9-3e26-4492-8ef0-7fa72656a116"}]},"parent":{"ref":"EID6a362037-0175-1000-4241-c376039f60b4"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:18:53Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6a360d08-0175-1000-5afd-4748b5cfc8d6"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:18:53Z","duration":96,"status":"PASSED"},{"id":"EID6a362097-0175-1000-c050-089ed95550a7","testStepResults":{"TestStepResult":[{"id":"EID6a362097-0175-1000-96db-d70b29904da1","parent":{"ref":"EID6a362097-0175-1000-c050-089ed95550a7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a362097-0175-1000-21d6-75f14ce61c5b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36210a-0175-1000-49b8-d28d34134a33","parent":{"ref":"EID6a362097-0175-1000-21d6-75f14ce61c5b"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a36210a-0175-1000-73f1-35525fae6702","parent":{"ref":"EID6a362097-0175-1000-21d6-75f14ce61c5b"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a36210a-0175-1000-0dc8-111c76235fa6","parent":{"ref":"EID6a362097-0175-1000-21d6-75f14ce61c5b"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a36210a-0175-1000-2b5c-b583517100b6","parent":{"ref":"EID6a362097-0175-1000-21d6-75f14ce61c5b"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID940d07f6-9afe-47a6-967f-5dfb69ef06d6"},{"ref":"EID779a209d-2b3b-4e6d-9956-72c5c8ceb578"},{"ref":"EIDc0de1177-036c-4e39-936c-4e7c8a1958fb"}]},"parent":{"ref":"EID6a362097-0175-1000-c050-089ed95550a7"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:18:53Z","duration":21,"status":"PASSED"},{"id":"EID6a362113-0175-1000-282d-f0aba47a8c07","attachments":{"attachment":{"ref":"EID5765c94f-b2e7-4567-9d16-b14401853744"}},"parent":{"ref":"EID6a362097-0175-1000-c050-089ed95550a7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/63db16c5-c828-4922-95dd-5db67bc9c203.json"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a362120-0175-1000-7142-7a1597312fe3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3621f9-0175-1000-e294-af25c97a4d2c","parent":{"ref":"EID6a362120-0175-1000-7142-7a1597312fe3"},"resultedFrom":{"ref":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a3621f9-0175-1000-5a2c-8b88a1fb61c1","parent":{"ref":"EID6a362120-0175-1000-7142-7a1597312fe3"},"resultedFrom":{"ref":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a3621f9-0175-1000-aee6-2a9fa5e12ed4","parent":{"ref":"EID6a362120-0175-1000-7142-7a1597312fe3"},"resultedFrom":{"ref":"EID234062a4-45c2-4013-9038-71b8cc9a7d36"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"},{"id":"EID6a3621f9-0175-1000-7237-54953e69df1e","parent":{"ref":"EID6a362120-0175-1000-7142-7a1597312fe3"},"resultedFrom":{"ref":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862"},"startTimestamp":"2020-10-27T13:18:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb60a26e6-e203-4bc0-9953-0629a03294bb"},{"ref":"EID7ef62d9b-45f6-43c0-8516-87614ec3d75e"},{"ref":"EIDa917d91e-9fd4-4f3f-b672-264456b5fb0f"}]},"parent":{"ref":"EID6a362097-0175-1000-c050-089ed95550a7"},"resultedFrom":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"startTimestamp":"2020-10-27T13:18:53Z","duration":125,"status":"PASSED"},{"id":"EID6a3621f9-0175-1000-a9e4-f0cca6c8970d","attachments":{"attachment":{"ref":"EID81c6ba43-df7e-46e3-9d85-50f010a7d67a"}},"parent":{"ref":"EID6a362097-0175-1000-c050-089ed95550a7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/18c66972-5d73-4718-8e9c-439d4032a9fe.json"},"startTimestamp":"2020-10-27T13:18:53Z","duration":1,"status":"PASSED"},{"id":"EID6a362204-0175-1000-a3f3-80c859398961","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36229b-0175-1000-a802-51b7078874d6","parent":{"ref":"EID6a362204-0175-1000-a3f3-80c859398961"},"resultedFrom":{"ref":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a36229b-0175-1000-6c6e-b05097fee3ca","parent":{"ref":"EID6a362204-0175-1000-a3f3-80c859398961"},"resultedFrom":{"ref":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a36229b-0175-1000-6376-69aacfd4b504","parent":{"ref":"EID6a362204-0175-1000-a3f3-80c859398961"},"resultedFrom":{"ref":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a36229b-0175-1000-fef3-1519df4becfe","parent":{"ref":"EID6a362204-0175-1000-a3f3-80c859398961"},"resultedFrom":{"ref":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa1560cc1-247e-4f61-8836-dc0057c69d4a"},{"ref":"EIDcf399906-87f5-4183-ad52-bfc278b76c17"},{"ref":"EIDa3c8a240-fcc5-4359-8771-995507891a75"}]},"parent":{"ref":"EID6a362097-0175-1000-c050-089ed95550a7"},"resultedFrom":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"startTimestamp":"2020-10-27T13:18:53Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6a360d08-0175-1000-5afd-4748b5cfc8d6"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:18:53Z","duration":516,"status":"PASSED"}]},"parent":{"ref":"EID95df579c-f084-4501-8519-bcb932e892fc"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:18:48Z","duration":5524,"status":"PASSED_MANUAL"},{"id":"EID6a36229c-0175-1000-997a-5672b542a169","testCaseResults":{"TestCaseResult":[{"id":"EID6a36229c-0175-1000-0b7b-4d1c059b8cc2","testStepResults":{"TestStepResult":[{"id":"EID6a36229c-0175-1000-e5d4-0bc9a9a28e31","parent":{"ref":"EID6a36229c-0175-1000-0b7b-4d1c059b8cc2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a36229c-0175-1000-7cd9-0ded0c5f9a06","parent":{"ref":"EID6a36229c-0175-1000-0b7b-4d1c059b8cc2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:18:54Z","duration":21,"status":"PASSED"},{"id":"EID6a36229c-0175-1000-aae6-7b0bdf7c798f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a362319-0175-1000-bc62-759d02dabd25","parent":{"ref":"EID6a36229c-0175-1000-aae6-7b0bdf7c798f"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a362319-0175-1000-f870-022d01c48199","parent":{"ref":"EID6a36229c-0175-1000-aae6-7b0bdf7c798f"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a36231a-0175-1000-f1e3-14c3713fb26b","parent":{"ref":"EID6a36229c-0175-1000-aae6-7b0bdf7c798f"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf0f34c23-c0b0-4b5f-9ed2-42e54b90f126"},{"ref":"EID8bf2163f-fc9e-412c-9d86-4bce4d7d0a51"},{"ref":"EID3a3d162a-2c33-4163-9998-1e08bb5feb06"}]},"parent":{"ref":"EID6a36229c-0175-1000-0b7b-4d1c059b8cc2"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:18:54Z","duration":29,"status":"PASSED"},{"id":"EID6a36231a-0175-1000-074c-55eb1dc65471","attachments":{"attachment":{"ref":"EIDdf8fb525-9fe2-474b-86dd-c306db9e00a0"}},"parent":{"ref":"EID6a36229c-0175-1000-0b7b-4d1c059b8cc2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a362328-0175-1000-bccb-05d1da23b0d7","parent":{"ref":"EID6a36229c-0175-1000-0b7b-4d1c059b8cc2"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:18:54Z","duration":11,"status":"PASSED"}]},"parent":{"ref":"EID6a36229c-0175-1000-997a-5672b542a169"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:18:54Z","duration":152,"status":"PASSED"},{"id":"EID6a362334-0175-1000-d42e-5b468c94fea4","testStepResults":{"TestStepResult":[{"id":"EID6a362334-0175-1000-0867-a5af8ce9f921","parent":{"ref":"EID6a362334-0175-1000-d42e-5b468c94fea4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:18:54Z","duration":29,"status":"PASSED"},{"id":"EID6a362334-0175-1000-a999-a42fe63ebbd6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3623ab-0175-1000-b596-c188f9aad0fe","parent":{"ref":"EID6a362334-0175-1000-a999-a42fe63ebbd6"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a3623ab-0175-1000-f9aa-83817adaad9d","parent":{"ref":"EID6a362334-0175-1000-a999-a42fe63ebbd6"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a3623ab-0175-1000-ca1e-4ddec6786ea1","parent":{"ref":"EID6a362334-0175-1000-a999-a42fe63ebbd6"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a3623ab-0175-1000-edb6-ec2dde809cad","parent":{"ref":"EID6a362334-0175-1000-a999-a42fe63ebbd6"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a3623ab-0175-1000-e5df-fae4a3089885","parent":{"ref":"EID6a362334-0175-1000-a999-a42fe63ebbd6"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4d813a03-c6d9-4895-acd1-15181feb55ca"},{"ref":"EIDc82a1ca2-5b45-43cd-b2d9-51cbc21bfff2"},{"ref":"EID4bdf50a0-0834-4a21-8231-9f8e296fec2d"}]},"parent":{"ref":"EID6a362334-0175-1000-d42e-5b468c94fea4"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:18:54Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6a36229c-0175-1000-997a-5672b542a169"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:18:54Z","duration":120,"status":"PASSED"},{"id":"EID6a3623ac-0175-1000-2bc1-8fb913992836","testStepResults":{"TestStepResult":[{"id":"EID6a3623ac-0175-1000-b9c1-3a0cdaf1fd69","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a362426-0175-1000-d35b-efe9bcf70789","parent":{"ref":"EID6a3623ac-0175-1000-b9c1-3a0cdaf1fd69"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a362426-0175-1000-c895-88decc18889c","parent":{"ref":"EID6a3623ac-0175-1000-b9c1-3a0cdaf1fd69"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a362426-0175-1000-e42b-57be55104201","parent":{"ref":"EID6a3623ac-0175-1000-b9c1-3a0cdaf1fd69"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID237db635-7a95-4ff1-a0f4-223880776184"},{"ref":"EID0c8ff0c5-c5cf-400b-9a59-7617ee41fa74"},{"ref":"EID2c66b338-fd15-4066-9755-81a91fb78d60"}]},"parent":{"ref":"EID6a3623ac-0175-1000-2bc1-8fb913992836"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:18:54Z","duration":22,"status":"PASSED"},{"id":"EID6a362426-0175-1000-90e2-150c0ed4367a","attachments":{"attachment":{"ref":"EID21f62163-6166-4b4a-9a87-de0789b18c10"}},"parent":{"ref":"EID6a3623ac-0175-1000-2bc1-8fb913992836"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-27T13:18:54Z","duration":1,"status":"PASSED"},{"id":"EID6a362433-0175-1000-9b0f-ef9eabb88120","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3624a7-0175-1000-6c2f-0dc36c122d36","parent":{"ref":"EID6a362433-0175-1000-9b0f-ef9eabb88120"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a3624a7-0175-1000-c72c-60d53e2be0f8","parent":{"ref":"EID6a362433-0175-1000-9b0f-ef9eabb88120"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a3624a7-0175-1000-970c-3641db681dd9","parent":{"ref":"EID6a362433-0175-1000-9b0f-ef9eabb88120"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a3624a7-0175-1000-48ff-bc3c604be2cc","parent":{"ref":"EID6a362433-0175-1000-9b0f-ef9eabb88120"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a3624a7-0175-1000-6933-8daf1c0e3189","parent":{"ref":"EID6a362433-0175-1000-9b0f-ef9eabb88120"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe69ac901-a984-470e-9e55-e65eec1ea305"},{"ref":"EID74861c45-dfff-4adc-b1e4-b99b5f04d104"},{"ref":"EID5f8df1d0-a3fe-4971-9bc7-0b6ed7da3cda"}]},"parent":{"ref":"EID6a3623ac-0175-1000-2bc1-8fb913992836"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-27T13:18:54Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6a36229c-0175-1000-997a-5672b542a169"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:18:54Z","duration":251,"status":"PASSED"},{"id":"EID6a3624a7-0175-1000-72aa-983687e665f6","testStepResults":{"TestStepResult":[{"id":"EID6a3624a7-0175-1000-508e-20270034070e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a362548-0175-1000-a493-99e465f8cb0a","parent":{"ref":"EID6a3624a7-0175-1000-508e-20270034070e"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a362548-0175-1000-818c-5516e6698492","parent":{"ref":"EID6a3624a7-0175-1000-508e-20270034070e"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a362548-0175-1000-842e-dd90445fa53b","parent":{"ref":"EID6a3624a7-0175-1000-508e-20270034070e"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a362548-0175-1000-f484-4ecad91c81a8","parent":{"ref":"EID6a3624a7-0175-1000-508e-20270034070e"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5788ba3f-f85b-4033-9102-53c8f012732e"},{"ref":"EID5b318613-00a7-4053-ab75-b3c05d1ae967"},{"ref":"EID2cdc1485-aced-474f-a4ee-d82c1ff51dd1"}]},"parent":{"ref":"EID6a3624a7-0175-1000-72aa-983687e665f6"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:18:54Z","duration":22,"status":"PASSED"},{"id":"EID6a362552-0175-1000-7eee-f26d6a859dfd","attachments":{"attachment":{"ref":"EIDd534cd64-35c8-4e3a-984f-e2609aeec8ff"}},"parent":{"ref":"EID6a3624a7-0175-1000-72aa-983687e665f6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a36257f-0175-1000-77de-2f445cb88d8f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3625a7-0175-1000-d89d-5d820faa6eeb","parent":{"ref":"EID6a36257f-0175-1000-77de-2f445cb88d8f"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"},{"id":"EID6a3625a7-0175-1000-b2ff-564c9a0655b6","parent":{"ref":"EID6a36257f-0175-1000-77de-2f445cb88d8f"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-27T13:18:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0b1ea556-c840-4570-9695-0ee4ff3dad91"},{"ref":"EIDa5d2d2fa-1da6-4701-a2a7-5a011a95de08"}]},"parent":{"ref":"EID6a3624a7-0175-1000-72aa-983687e665f6"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-27T13:18:54Z","duration":36,"status":"PASSED"},{"id":"EID6a3625a7-0175-1000-65c3-d7e1b78515eb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36262b-0175-1000-9b62-eccf903c7082","parent":{"ref":"EID6a3625a7-0175-1000-65c3-d7e1b78515eb"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a36262b-0175-1000-d7ae-bc203c92a790","parent":{"ref":"EID6a3625a7-0175-1000-65c3-d7e1b78515eb"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a36262b-0175-1000-555f-5164990b904f","parent":{"ref":"EID6a3625a7-0175-1000-65c3-d7e1b78515eb"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a36262b-0175-1000-6b24-5701649563bf","parent":{"ref":"EID6a3625a7-0175-1000-65c3-d7e1b78515eb"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7c99d74b-5370-4089-ae58-9caf664f821c"},{"ref":"EID75bf1bf2-744b-4462-914d-27204897e042"},{"ref":"EID3c4c6df5-9392-4ce2-8589-a41ff38f98b0"}]},"parent":{"ref":"EID6a3624a7-0175-1000-72aa-983687e665f6"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-27T13:18:54Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6a36229c-0175-1000-997a-5672b542a169"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:18:54Z","duration":388,"status":"PASSED"},{"id":"EID6a36262b-0175-1000-d9fd-3a2b550c62b5","testStepResults":{"TestStepResult":{"id":"EID6a36262b-0175-1000-1474-0f72adddf094","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3626ec-0175-1000-2c3e-9fdb2095a00c","parent":{"ref":"EID6a36262b-0175-1000-1474-0f72adddf094"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a3626ec-0175-1000-563b-99be3932df86","parent":{"ref":"EID6a36262b-0175-1000-1474-0f72adddf094"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a3626ec-0175-1000-e780-c6194c650f31","parent":{"ref":"EID6a36262b-0175-1000-1474-0f72adddf094"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID50cf81b4-cdf4-454a-98e4-bd8ac0e60d61"},{"ref":"EIDbafdcfd2-26cb-4f86-a6ed-84ff66cdedf2"},{"ref":"EID2031811b-3246-450d-8ac0-ba36e043f959"}]},"parent":{"ref":"EID6a36262b-0175-1000-d9fd-3a2b550c62b5"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:18:55Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6a36229c-0175-1000-997a-5672b542a169"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:18:55Z","duration":193,"status":"PASSED"},{"id":"EID6a3626ec-0175-1000-ab6f-a9f8dac8e0c8","testStepResults":{"TestStepResult":{"id":"EID6a3626ec-0175-1000-8f85-f50d5aee8189","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36275a-0175-1000-6418-d9bda70048f2","parent":{"ref":"EID6a3626ec-0175-1000-8f85-f50d5aee8189"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a36275a-0175-1000-2e68-b8318ed00b45","parent":{"ref":"EID6a3626ec-0175-1000-8f85-f50d5aee8189"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a36275a-0175-1000-8e0c-b520d3c2cce0","parent":{"ref":"EID6a3626ec-0175-1000-8f85-f50d5aee8189"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID99b72a72-8c18-4fda-8735-abc076579b62"},{"ref":"EIDb4f2708a-c56e-48be-8b37-0a243a54a4b5"},{"ref":"EIDd268a42e-92bd-434f-9c6a-b14a0b6493c6"}]},"parent":{"ref":"EID6a3626ec-0175-1000-ab6f-a9f8dac8e0c8"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:18:55Z","duration":26,"status":"PASSED"}},"parent":{"ref":"EID6a36229c-0175-1000-997a-5672b542a169"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:18:55Z","duration":110,"status":"PASSED"},{"id":"EID6a36275a-0175-1000-6e83-b66cc91afbe7","testStepResults":{"TestStepResult":{"id":"EID6a36275a-0175-1000-baf6-22dcbfa697da","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3627ce-0175-1000-cb76-776173155b05","parent":{"ref":"EID6a36275a-0175-1000-baf6-22dcbfa697da"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a3627ce-0175-1000-5a7f-9bcffaaa1ff5","parent":{"ref":"EID6a36275a-0175-1000-baf6-22dcbfa697da"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a3627ce-0175-1000-8f20-aa015f0fed4d","parent":{"ref":"EID6a36275a-0175-1000-baf6-22dcbfa697da"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a3627ce-0175-1000-d5a4-e5a88bae5cb8","parent":{"ref":"EID6a36275a-0175-1000-baf6-22dcbfa697da"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a3627ce-0175-1000-caf2-c065db2905c8","parent":{"ref":"EID6a36275a-0175-1000-baf6-22dcbfa697da"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe099c0ff-1fce-4def-a300-524e55a7b03f"},{"ref":"EID9a07d026-2aed-4b5a-aef7-120bfb064498"},{"ref":"EID8eb67b48-bb77-496c-9012-31ca39b1b5c0"}]},"parent":{"ref":"EID6a36275a-0175-1000-6e83-b66cc91afbe7"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:18:55Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6a36229c-0175-1000-997a-5672b542a169"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:18:55Z","duration":116,"status":"PASSED"},{"id":"EID6a3627cf-0175-1000-7659-44de880b4401","testStepResults":{"TestStepResult":{"id":"EID6a3627cf-0175-1000-248b-f4e1cf94a762","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a362821-0175-1000-780a-59e3b1f4b129","parent":{"ref":"EID6a3627cf-0175-1000-248b-f4e1cf94a762"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a362821-0175-1000-3b8b-0c53a486baaa","parent":{"ref":"EID6a3627cf-0175-1000-248b-f4e1cf94a762"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a362821-0175-1000-e157-1d99e5241a66","parent":{"ref":"EID6a3627cf-0175-1000-248b-f4e1cf94a762"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8f658c2e-69ee-44b7-937b-6cc0ad04af02"},{"ref":"EID44272d5f-dac8-4283-9e3b-92373e1ae7f1"},{"ref":"EID2be817e7-43c0-4c20-a314-b4e083041f5d"}]},"parent":{"ref":"EID6a3627cf-0175-1000-7659-44de880b4401"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:18:55Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6a36229c-0175-1000-997a-5672b542a169"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:18:55Z","duration":92,"status":"PASSED"},{"id":"EID6a36282c-0175-1000-56f8-69bcca645bd5","testStepResults":{"TestStepResult":{"id":"EID6a36282c-0175-1000-30d5-b104f19db871","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36288d-0175-1000-7005-471355ad8508","parent":{"ref":"EID6a36282c-0175-1000-30d5-b104f19db871"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a36288d-0175-1000-9d39-f44258ae0468","parent":{"ref":"EID6a36282c-0175-1000-30d5-b104f19db871"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a36288d-0175-1000-2f45-2754ef6098d6","parent":{"ref":"EID6a36282c-0175-1000-30d5-b104f19db871"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7905e9b9-75dd-4714-860c-0f7e77741e10"},{"ref":"EID59ef576d-9bf0-4a22-bbf9-358eddd274d9"},{"ref":"EID624d9dbe-9eff-4ce1-9e59-6e20663b7e26"}]},"parent":{"ref":"EID6a36282c-0175-1000-56f8-69bcca645bd5"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:18:55Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6a36229c-0175-1000-997a-5672b542a169"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:18:55Z","duration":97,"status":"PASSED"},{"id":"EID6a36288d-0175-1000-07da-18b78aa6aff4","testStepResults":{"TestStepResult":{"id":"EID6a36288d-0175-1000-f643-d5dee6ad9106","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36291d-0175-1000-96ad-a28b82b07bae","parent":{"ref":"EID6a36288d-0175-1000-f643-d5dee6ad9106"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a36291d-0175-1000-1aab-86ff01e6d59a","parent":{"ref":"EID6a36288d-0175-1000-f643-d5dee6ad9106"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a36291d-0175-1000-bbb6-8d5a53798fbe","parent":{"ref":"EID6a36288d-0175-1000-f643-d5dee6ad9106"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a36291d-0175-1000-5f53-edc68efa000c","parent":{"ref":"EID6a36288d-0175-1000-f643-d5dee6ad9106"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID975239e8-e309-4093-8a1e-60dcf45af00b"},{"ref":"EIDf9325c5f-ef09-4a5a-81bf-d8eb985b7dc0"},{"ref":"EIDbe303d78-bb61-4a42-a8d6-4020627f40c5"}]},"parent":{"ref":"EID6a36288d-0175-1000-07da-18b78aa6aff4"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:18:55Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6a36229c-0175-1000-997a-5672b542a169"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:18:55Z","duration":144,"status":"PASSED"},{"id":"EID6a36291d-0175-1000-b28b-8820a9de3ac5","testStepResults":{"TestStepResult":{"id":"EID6a36291d-0175-1000-e3cc-5b24779b0eda","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3629db-0175-1000-dcb5-7c7ce4243afc","parent":{"ref":"EID6a36291d-0175-1000-e3cc-5b24779b0eda"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a3629db-0175-1000-f180-3a2ed6f0cd45","parent":{"ref":"EID6a36291d-0175-1000-e3cc-5b24779b0eda"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a3629db-0175-1000-0201-d51beb3ef59d","parent":{"ref":"EID6a36291d-0175-1000-e3cc-5b24779b0eda"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a3629db-0175-1000-8fb6-7dc1d6397354","parent":{"ref":"EID6a36291d-0175-1000-e3cc-5b24779b0eda"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID46b96ec3-8312-49c5-bcea-07d50d8d94e8"},{"ref":"EID933d2527-4074-4683-b812-8226b835d8a0"},{"ref":"EID089a6d3d-a2e6-4aa2-8f6f-3ce41f59c59f"}]},"parent":{"ref":"EID6a36291d-0175-1000-b28b-8820a9de3ac5"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:18:55Z","duration":27,"status":"PASSED"}},"parent":{"ref":"EID6a36229c-0175-1000-997a-5672b542a169"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:18:55Z","duration":190,"status":"PASSED"},{"id":"EID6a3629db-0175-1000-260e-3769f2154081","testStepResults":{"TestStepResult":[{"id":"EID6a3629db-0175-1000-c2a1-d34dc7cac21f","parent":{"ref":"EID6a3629db-0175-1000-260e-3769f2154081"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:18:55Z","duration":0,"status":"PASSED"},{"id":"EID6a3629e3-0175-1000-2769-a48ef327a20a","parent":{"ref":"EID6a3629db-0175-1000-260e-3769f2154081"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:18:55Z","duration":51,"status":"PASSED"},{"id":"EID6a3629e3-0175-1000-06c0-aeec74412049","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a362a34-0175-1000-b1f2-3599b1802b42","parent":{"ref":"EID6a3629e3-0175-1000-06c0-aeec74412049"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"},{"id":"EID6a362a34-0175-1000-8629-84b0f8e57acd","parent":{"ref":"EID6a3629e3-0175-1000-06c0-aeec74412049"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"},{"id":"EID6a362a34-0175-1000-a4d5-e6fe04c35044","parent":{"ref":"EID6a3629e3-0175-1000-06c0-aeec74412049"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"},{"id":"EID6a362a34-0175-1000-d250-c3461889edfd","parent":{"ref":"EID6a3629e3-0175-1000-06c0-aeec74412049"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5ee140f7-1069-44ce-a2a5-6d624357bd8f"},{"ref":"EIDb7dae61d-c79c-413f-8acf-752220ae9cce"},{"ref":"EID849ff136-e458-4309-a027-a5d11c533780"}]},"parent":{"ref":"EID6a3629db-0175-1000-260e-3769f2154081"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:18:55Z","duration":21,"status":"PASSED"},{"id":"EID6a362a34-0175-1000-0810-273bd3cb62da","attachments":{"attachment":{"ref":"EID529312b4-e32f-45ea-b6dc-7fedafc3ea6a"}},"parent":{"ref":"EID6a3629db-0175-1000-260e-3769f2154081"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:18:56Z","duration":1,"status":"PASSED"},{"id":"EID6a362a43-0175-1000-8f9b-63b665997ac8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a362ae8-0175-1000-24a5-1ce0bbae9367","parent":{"ref":"EID6a362a43-0175-1000-8f9b-63b665997ac8"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"},{"id":"EID6a362ae8-0175-1000-81ea-2288a5174c3b","parent":{"ref":"EID6a362a43-0175-1000-8f9b-63b665997ac8"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"},{"id":"EID6a362ae8-0175-1000-9176-d7b284a99c07","parent":{"ref":"EID6a362a43-0175-1000-8f9b-63b665997ac8"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"},{"id":"EID6a362ae8-0175-1000-2776-b6126b0e514a","parent":{"ref":"EID6a362a43-0175-1000-8f9b-63b665997ac8"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"},{"id":"EID6a362ae8-0175-1000-cb9f-e127216779f4","parent":{"ref":"EID6a362a43-0175-1000-8f9b-63b665997ac8"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"},{"id":"EID6a362ae9-0175-1000-7b1d-960571ba2ecf","parent":{"ref":"EID6a362a43-0175-1000-8f9b-63b665997ac8"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"},{"id":"EID6a362ae9-0175-1000-b001-e01499c0d92b","parent":{"ref":"EID6a362a43-0175-1000-8f9b-63b665997ac8"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd2cecab0-5acd-497f-9a68-49f2a40076e1"},{"ref":"EIDd48fc574-8740-4aba-a4f8-3abadfb14546"},{"ref":"EIDd02a9cdb-74df-4b02-adf1-884b55735cd5"}]},"parent":{"ref":"EID6a3629db-0175-1000-260e-3769f2154081"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:18:56Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6a36229c-0175-1000-997a-5672b542a169"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:18:55Z","duration":270,"status":"PASSED"},{"id":"EID6a362aeb-0175-1000-55c4-284c09becdd1","testStepResults":{"TestStepResult":[{"id":"EID6a362aec-0175-1000-4b6e-43ae6694164e","parent":{"ref":"EID6a362aeb-0175-1000-55c4-284c09becdd1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"},{"id":"EID6a362aec-0175-1000-1134-671a3b540a09","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a362bbd-0175-1000-92ba-29ad0300facc","parent":{"ref":"EID6a362aec-0175-1000-1134-671a3b540a09"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"},{"id":"EID6a362bbd-0175-1000-b2c4-543e8a9f44a2","parent":{"ref":"EID6a362aec-0175-1000-1134-671a3b540a09"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"},{"id":"EID6a362bbd-0175-1000-bb6d-f3cbce61973e","parent":{"ref":"EID6a362aec-0175-1000-1134-671a3b540a09"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"},{"id":"EID6a362bbd-0175-1000-c2b0-cdbd94ccdf40","parent":{"ref":"EID6a362aec-0175-1000-1134-671a3b540a09"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5a89c7b1-d7c4-4690-b6bc-ed8e694f095b"},{"ref":"EIDe14ef4e7-9926-4429-a522-1399912bae34"},{"ref":"EIDe9a51eec-6a2f-4b08-b98d-0d25db716905"}]},"parent":{"ref":"EID6a362aeb-0175-1000-55c4-284c09becdd1"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:18:56Z","duration":42,"status":"PASSED"},{"id":"EID6a362bbd-0175-1000-e3d4-40796c0be014","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a362bd2-0175-1000-a493-eaa0d4ab8ab5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a362c6b-0175-1000-fe2f-bcc4166211e1","parent":{"ref":"EID6a362bd2-0175-1000-a493-eaa0d4ab8ab5"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"},{"id":"EID6a362c6b-0175-1000-30b1-bb0875f751f2","parent":{"ref":"EID6a362bd2-0175-1000-a493-eaa0d4ab8ab5"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"},{"id":"EID6a362c6b-0175-1000-a1cf-1c0f0fab5266","parent":{"ref":"EID6a362bd2-0175-1000-a493-eaa0d4ab8ab5"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID48197a7f-53d6-46f8-9bfd-deb89ef79182"},{"ref":"EIDd4618e52-bf50-4d07-82af-86897d9a1c1b"},{"ref":"EIDa57ff063-d4dc-4920-acf7-cbfcbc26a2ec"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:18:56Z","duration":42,"status":"PASSED"},{"id":"EID6a362c6d-0175-1000-3cbc-25cc45301712","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a362d47-0175-1000-d4fb-ce710a017019","parent":{"ref":"EID6a362c6d-0175-1000-3cbc-25cc45301712"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"},{"id":"EID6a362d47-0175-1000-de5e-8faaca2a3b81","parent":{"ref":"EID6a362c6d-0175-1000-3cbc-25cc45301712"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"},{"id":"EID6a362d47-0175-1000-ef2f-7880328e207f","parent":{"ref":"EID6a362c6d-0175-1000-3cbc-25cc45301712"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc095cc10-4feb-4e6a-84f5-36cbc8a9f1cc"},{"ref":"EIDdff0a23b-8fd1-4814-b99c-7f8d8dd45235"},{"ref":"EIDfac38ba7-937e-43c2-b667-b11d529f2fd4"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:18:56Z","duration":156,"status":"PASSED"},{"id":"EID6a362d61-0175-1000-80e2-a0558111250a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a362dbe-0175-1000-bef1-ad315df18bdc","parent":{"ref":"EID6a362d61-0175-1000-80e2-a0558111250a"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"},{"id":"EID6a362dbe-0175-1000-df93-1720e4613689","parent":{"ref":"EID6a362d61-0175-1000-80e2-a0558111250a"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"},{"id":"EID6a362dbe-0175-1000-a6cc-f7027b8ce533","parent":{"ref":"EID6a362d61-0175-1000-80e2-a0558111250a"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:18:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe3bd2bcd-dbbb-4215-9c36-12f0601aad73"},{"ref":"EID2adab955-42c2-4622-8d52-1d0f50a07751"},{"ref":"EID7bc8e1d8-817f-4caf-93ff-6941209da983"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:18:56Z","duration":40,"status":"PASSED"}]},"parent":{"ref":"EID6a362aeb-0175-1000-55c4-284c09becdd1"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:18:56Z","duration":514,"status":"PASSED"},{"id":"EID6a362dbf-0175-1000-a378-979bf417e344","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a362e12-0175-1000-3533-3ac9207df070","parent":{"ref":"EID6a362dbf-0175-1000-a378-979bf417e344"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a362e12-0175-1000-63fd-aef9970e594d","parent":{"ref":"EID6a362dbf-0175-1000-a378-979bf417e344"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a362e12-0175-1000-9836-75abe9511751","parent":{"ref":"EID6a362dbf-0175-1000-a378-979bf417e344"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a362e12-0175-1000-a500-3a664f451501","parent":{"ref":"EID6a362dbf-0175-1000-a378-979bf417e344"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1e7a1b88-5ee6-48ca-ba91-998d72a10503"},{"ref":"EID39c555d3-4b35-40ff-a25e-dd3ae3632e9b"},{"ref":"EID3ef9e1e7-0aac-498b-9eda-b7794d9a754b"}]},"parent":{"ref":"EID6a362aeb-0175-1000-55c4-284c09becdd1"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:18:56Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6a36229c-0175-1000-997a-5672b542a169"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:18:56Z","duration":807,"status":"PASSED"},{"id":"EID6a362e12-0175-1000-d13e-c662446e12f4","testStepResults":{"TestStepResult":{"id":"EID6a362e12-0175-1000-cfe7-ab6d2595f90c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a362e7f-0175-1000-7bb0-d22d7dbf1e76","parent":{"ref":"EID6a362e12-0175-1000-cfe7-ab6d2595f90c"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a362e7f-0175-1000-ef03-e5739a2ff768","parent":{"ref":"EID6a362e12-0175-1000-cfe7-ab6d2595f90c"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a362e7f-0175-1000-e7b2-43487f42b5be","parent":{"ref":"EID6a362e12-0175-1000-cfe7-ab6d2595f90c"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a362e7f-0175-1000-6fb9-7dc77d7051df","parent":{"ref":"EID6a362e12-0175-1000-cfe7-ab6d2595f90c"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb160a177-a10e-413a-8d07-8cea318f87cd"},{"ref":"EID376bbcf4-db7e-4a6d-8344-fb57a8b7dee3"},{"ref":"EID3854e3e0-ee10-436b-8ffd-6ea7e719775f"}]},"parent":{"ref":"EID6a362e12-0175-1000-d13e-c662446e12f4"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:18:57Z","duration":39,"status":"PASSED"}},"parent":{"ref":"EID6a36229c-0175-1000-997a-5672b542a169"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:18:57Z","duration":118,"status":"PASSED"}]},"parent":{"ref":"EID95df579c-f084-4501-8519-bcb932e892fc"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:18:54Z","duration":3052,"status":"PASSED"},{"id":"EID6a362e88-0175-1000-9050-d917402c3399","testCaseResults":{"TestCaseResult":[{"id":"EID6a362e88-0175-1000-c2a9-68f267f0decd","testStepResults":{"TestStepResult":[{"id":"EID6a362e88-0175-1000-680d-c79f2aedae25","parent":{"ref":"EID6a362e88-0175-1000-c2a9-68f267f0decd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:18:57Z","duration":254,"status":"PASSED"},{"id":"EID6a362e89-0175-1000-8e15-a94eecaf562a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a362ee1-0175-1000-fa7b-1a36e9d8b573","parent":{"ref":"EID6a362e89-0175-1000-8e15-a94eecaf562a"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a362ee1-0175-1000-30c9-d2df9bedeac8","parent":{"ref":"EID6a362e89-0175-1000-8e15-a94eecaf562a"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a362ee1-0175-1000-b240-0d7ea4b9d868","parent":{"ref":"EID6a362e89-0175-1000-8e15-a94eecaf562a"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID461082f0-baa3-4cd5-b0ae-37233afd2414"},{"ref":"EID05b14371-e7b1-4253-8628-f5dc54f01d4d"},{"ref":"EIDeb8803f8-4017-4c6f-b8f9-948f6286c48e"}]},"parent":{"ref":"EID6a362e88-0175-1000-c2a9-68f267f0decd"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-27T13:18:57Z","duration":21,"status":"PASSED"},{"id":"EID6a362ee1-0175-1000-f0e7-785d80adb3d8","attachments":{"attachment":{"ref":"EID0a456def-3545-42db-8557-b0e177baaff3"}},"parent":{"ref":"EID6a362e88-0175-1000-c2a9-68f267f0decd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-27T13:18:57Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6a362e88-0175-1000-9050-d917402c3399"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:18:57Z","duration":102,"status":"PASSED"},{"id":"EID6a362eee-0175-1000-feb4-9490a1ad13e3","testStepResults":{"TestStepResult":[{"id":"EID6a362eee-0175-1000-ff63-d59161a7aab2","parent":{"ref":"EID6a362eee-0175-1000-feb4-9490a1ad13e3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:18:57Z","duration":254,"status":"PASSED"},{"id":"EID6a362eee-0175-1000-9a93-7d769ea79024","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a362fa1-0175-1000-a805-4ae231b140d4","parent":{"ref":"EID6a362eee-0175-1000-9a93-7d769ea79024"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a362fa1-0175-1000-8945-e8dbea15506b","parent":{"ref":"EID6a362eee-0175-1000-9a93-7d769ea79024"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a362fa1-0175-1000-9b84-7e2e7ec5d22b","parent":{"ref":"EID6a362eee-0175-1000-9a93-7d769ea79024"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a362fa1-0175-1000-2942-0904f5afb8df","parent":{"ref":"EID6a362eee-0175-1000-9a93-7d769ea79024"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1015dd53-56dc-4a89-943d-bd461f79ed04"},{"ref":"EID37e7fb05-41a8-4a7c-bce2-e6f4d56f12ca"},{"ref":"EIDf2d7a23e-2605-403d-98b4-807d031e20ec"}]},"parent":{"ref":"EID6a362eee-0175-1000-feb4-9490a1ad13e3"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-27T13:18:57Z","duration":77,"status":"PASSED"}]},"parent":{"ref":"EID6a362e88-0175-1000-9050-d917402c3399"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:18:57Z","duration":179,"status":"PASSED"},{"id":"EID6a362faa-0175-1000-575e-34db92be7791","testStepResults":{"TestStepResult":[{"id":"EID6a362faa-0175-1000-d322-5c00b19c0eb1","parent":{"ref":"EID6a362faa-0175-1000-575e-34db92be7791"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:18:57Z","duration":255,"status":"PASSED"},{"id":"EID6a362fab-0175-1000-b220-3b316155fd97","parent":{"ref":"EID6a362faa-0175-1000-575e-34db92be7791"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a362fab-0175-1000-35b9-d51ead2f5681","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3630c2-0175-1000-84cc-ece254af0383","parent":{"ref":"EID6a362fab-0175-1000-35b9-d51ead2f5681"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a3630c2-0175-1000-fabc-a99fa8a73500","parent":{"ref":"EID6a362fab-0175-1000-35b9-d51ead2f5681"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a3630c2-0175-1000-1f96-32e9d86e869c","parent":{"ref":"EID6a362fab-0175-1000-35b9-d51ead2f5681"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a3630c2-0175-1000-34dc-b4acb5fdb5d5","parent":{"ref":"EID6a362fab-0175-1000-35b9-d51ead2f5681"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a3630c2-0175-1000-9aea-0a9dfbdd5da4","parent":{"ref":"EID6a362fab-0175-1000-35b9-d51ead2f5681"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a3630c2-0175-1000-d2b3-a68a28f81cc4","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}}},"parent":{"ref":"EID6a362fab-0175-1000-35b9-d51ead2f5681"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"FAILED"},{"id":"EID6a3630c2-0175-1000-62d7-e9fe39a768a5","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6a362fab-0175-1000-35b9-d51ead2f5681"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDdb1f9b6a-f0d2-44ef-a1cc-70271b795de8"},{"ref":"EID74d09130-37f6-4ee1-a301-647c9ed4f273"},{"ref":"EID492a8e73-ac64-4b18-b2a9-bcd1ceb71dad"}]},"parent":{"ref":"EID6a362faa-0175-1000-575e-34db92be7791"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-27T13:18:57Z","duration":90,"status":"FAILED"}]},"parent":{"ref":"EID6a362e88-0175-1000-9050-d917402c3399"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:18:57Z","duration":280,"status":"FAILED"},{"id":"EID6a3630da-0175-1000-70c4-730bb5ef250d","testStepResults":{"TestStepResult":[{"id":"EID6a3630db-0175-1000-6377-954bfff778f0","parent":{"ref":"EID6a3630da-0175-1000-70c4-730bb5ef250d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:18:57Z","duration":254,"status":"PASSED"},{"id":"EID6a3630db-0175-1000-bb80-b3482dd15312","parent":{"ref":"EID6a3630da-0175-1000-70c4-730bb5ef250d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a3630db-0175-1000-a66f-39e1d21b3562","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3631b5-0175-1000-67d5-ee8c1ac63c3b","parent":{"ref":"EID6a3630db-0175-1000-a66f-39e1d21b3562"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a3631b5-0175-1000-b53f-e2402dca7ee9","parent":{"ref":"EID6a3630db-0175-1000-a66f-39e1d21b3562"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a3631b5-0175-1000-1891-fe9315e3e91d","parent":{"ref":"EID6a3630db-0175-1000-a66f-39e1d21b3562"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a3631b5-0175-1000-bedc-9763e5e21946","parent":{"ref":"EID6a3630db-0175-1000-a66f-39e1d21b3562"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a3631b5-0175-1000-402d-02f361d5b5d9","parent":{"ref":"EID6a3630db-0175-1000-a66f-39e1d21b3562"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"PASSED"},{"id":"EID6a3631b5-0175-1000-f281-c35d8b199c13","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6a3630db-0175-1000-a66f-39e1d21b3562"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-27T13:18:57Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID8526c713-5f7b-451f-ba95-95e89a38c176"},{"ref":"EIDa116b66a-23ac-4fc5-a7aa-c72f85f09432"},{"ref":"EIDf9bb92b6-95c7-4bfa-9b68-cc25f44567d3"}]},"parent":{"ref":"EID6a3630da-0175-1000-70c4-730bb5ef250d"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-27T13:18:57Z","duration":77,"status":"FAILED"}]},"parent":{"ref":"EID6a362e88-0175-1000-9050-d917402c3399"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:18:57Z","duration":219,"status":"FAILED"},{"id":"EID6a3631b5-0175-1000-d47a-97da2a6654c2","testStepResults":{"TestStepResult":[{"id":"EID6a3631b5-0175-1000-3307-a9232d38f008","parent":{"ref":"EID6a3631b5-0175-1000-d47a-97da2a6654c2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:18:57Z","duration":254,"status":"PASSED"},{"id":"EID6a3631be-0175-1000-13ab-43f8a3d4d742","messages":{"message":[{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}},{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}]},"attachments":{"attachment":[{"ref":"EID71f6a2f2-ed2c-406c-9e99-2d57f5e659e3"},{"ref":"EID3974d1fd-576a-4f69-b4fa-c0ec3f7b8473"},{"ref":"EID663000b7-d9f2-43e6-89ca-29125866eebf"},{"ref":"EIDbbf59b32-9148-4832-bf1a-93187c454d48"},{"ref":"EID0d1fba62-f9f9-4658-bd1f-70b71ac8960a"},{"ref":"EID8ec48fca-7d31-4dd2-b8fc-e309109f8196"},{"ref":"EIDc1daccaa-84a4-4b0f-a328-e9ba28e2302d"},{"ref":"EID69200f41-562d-4e0a-a73f-827397255ba4"},{"ref":"EIDc32638b0-880f-45cd-a624-43d4f1689cd3"},{"ref":"EIDb445bc3a-7bfb-4b89-b236-21502204749a"},{"ref":"EID421103d2-85b8-4df4-b1c8-c659b4cd57bb"},{"ref":"EIDfd4a33d3-a411-44b1-961f-ed3189301d48"},{"ref":"EID64d187fe-bc2d-4d0e-806e-e633207aeb62"},{"ref":"EIDc2fc745e-6660-4509-b32f-f507f9c277b4"},{"ref":"EIDa3956379-1d90-46e8-9d4f-366746ffd508"}]},"parent":{"ref":"EID6a3631b5-0175-1000-d47a-97da2a6654c2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-27T13:18:57Z","duration":431,"status":"SKIPPED"}]},"parent":{"ref":"EID6a362e88-0175-1000-9050-d917402c3399"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:18:57Z","duration":809,"status":"SKIPPED"},{"id":"EID6a3634de-0175-1000-be44-05a02cd1dc79","testStepResults":{"TestStepResult":[{"id":"EID6a3634de-0175-1000-7322-51bf30f6e0fd","parent":{"ref":"EID6a3634de-0175-1000-be44-05a02cd1dc79"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:18:58Z","duration":254,"status":"PASSED"},{"id":"EID6a3634de-0175-1000-80bc-2e11b2c66922","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3635a8-0175-1000-5833-87ca22a86936","parent":{"ref":"EID6a3634de-0175-1000-80bc-2e11b2c66922"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-27T13:18:58Z","duration":0,"status":"PASSED"},{"id":"EID6a3635a8-0175-1000-002a-3f94682d1827","parent":{"ref":"EID6a3634de-0175-1000-80bc-2e11b2c66922"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-27T13:18:58Z","duration":0,"status":"PASSED"},{"id":"EID6a3635a8-0175-1000-641f-7499a02bae72","parent":{"ref":"EID6a3634de-0175-1000-80bc-2e11b2c66922"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-27T13:18:58Z","duration":0,"status":"PASSED"},{"id":"EID6a3635a8-0175-1000-546d-33f932b03c55","parent":{"ref":"EID6a3634de-0175-1000-80bc-2e11b2c66922"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-27T13:18:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc22c6c7c-e565-4f75-bdd1-0e06b9c98e61"},{"ref":"EID06471baa-e7e8-485e-aede-0e7a180c5522"},{"ref":"EID92aaa0d7-5f65-4886-81db-6f5b7e4e8089"}]},"parent":{"ref":"EID6a3634de-0175-1000-be44-05a02cd1dc79"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-27T13:18:58Z","duration":79,"status":"PASSED"}]},"parent":{"ref":"EID6a362e88-0175-1000-9050-d917402c3399"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:18:58Z","duration":202,"status":"PASSED"},{"id":"EID6a3635a9-0175-1000-cedc-4186cd22405a","testStepResults":{"TestStepResult":[{"id":"EID6a3635a9-0175-1000-e7a4-efda8795efad","parent":{"ref":"EID6a3635a9-0175-1000-cedc-4186cd22405a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:18:58Z","duration":254,"status":"PASSED"},{"id":"EID6a3635a9-0175-1000-a2a4-40f468f243e5","parent":{"ref":"EID6a3635a9-0175-1000-cedc-4186cd22405a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-27T13:18:58Z","duration":0,"status":"PASSED"},{"id":"EID6a3635a9-0175-1000-58b8-9df39e726e23","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36367a-0175-1000-3422-abc56af955b6","parent":{"ref":"EID6a3635a9-0175-1000-58b8-9df39e726e23"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-27T13:18:59Z","duration":0,"status":"PASSED"},{"id":"EID6a36367a-0175-1000-2096-ebabb45ed8a3","parent":{"ref":"EID6a3635a9-0175-1000-58b8-9df39e726e23"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-27T13:18:59Z","duration":0,"status":"PASSED"},{"id":"EID6a36367a-0175-1000-33aa-420ca920aec2","parent":{"ref":"EID6a3635a9-0175-1000-58b8-9df39e726e23"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-27T13:18:59Z","duration":0,"status":"PASSED"},{"id":"EID6a36367a-0175-1000-9764-faf235aaa454","parent":{"ref":"EID6a3635a9-0175-1000-58b8-9df39e726e23"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-27T13:18:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5fd4e3b1-2f02-480d-9ad4-cdb275f7a1ba"},{"ref":"EID77b6082a-b59b-4c8b-a1f7-6ca46f8cc2c3"},{"ref":"EIDd606c355-3822-4fb6-ba92-aec8df9bfb22"}]},"parent":{"ref":"EID6a3635a9-0175-1000-cedc-4186cd22405a"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-27T13:18:58Z","duration":77,"status":"PASSED"},{"id":"EID6a36367a-0175-1000-6268-c30c697c6f35","attachments":{"attachment":{"ref":"EID4864cfbe-632a-4efe-b2b1-607ee15b6b92"}},"parent":{"ref":"EID6a3635a9-0175-1000-cedc-4186cd22405a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-27T13:18:59Z","duration":1,"status":"PASSED"},{"id":"EID6a363687-0175-1000-d4ca-1d4e169e3a1f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a363695-0175-1000-be45-705805da3396","parent":{"ref":"EID6a363687-0175-1000-d4ca-1d4e169e3a1f"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-27T13:18:59Z","duration":0,"status":"PASSED"},{"id":"EID6a363695-0175-1000-22d3-ac36b8498a72","parent":{"ref":"EID6a363687-0175-1000-d4ca-1d4e169e3a1f"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-27T13:18:59Z","duration":0,"status":"PASSED"},{"id":"EID6a363695-0175-1000-b748-10590fc15828","parent":{"ref":"EID6a363687-0175-1000-d4ca-1d4e169e3a1f"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-27T13:18:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDabcfe969-e48e-4050-a69f-0f54b591f636"},{"ref":"EIDbf6bbe45-a698-4e92-a87d-12196891a865"}]},"parent":{"ref":"EID6a3635a9-0175-1000-cedc-4186cd22405a"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-27T13:18:59Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a362e88-0175-1000-9050-d917402c3399"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:18:58Z","duration":236,"status":"PASSED"}]},"parent":{"ref":"EID95df579c-f084-4501-8519-bcb932e892fc"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:18:57Z","duration":2061,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"Message","id":"EID054eb596-f642-446e-a751-4ae9327cad2d","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID054eb596-f642-446e-a751-4ae9327cad2d"}},{"type":"Message","id":"EID5765c94f-b2e7-4567-9d16-b14401853744","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID5765c94f-b2e7-4567-9d16-b14401853744"}},{"type":"GetParameter","id":"EIDa3c8a240-fcc5-4359-8771-995507891a75","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID8e64c941-4530-41eb-b3b3-b7e7ba379a44","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID8e64c941-4530-41eb-b3b3-b7e7ba379a44"}},{"type":"ServiceEndpoint","id":"EID9f6807d4-3aa8-4966-9754-22bc6a2da523","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID421103d2-85b8-4df4-b1c8-c659b4cd57bb","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID421103d2-85b8-4df4-b1c8-c659b4cd57bb"}},{"type":"Message","id":"EIDaf90e447-396f-43e4-b515-bb2c7edf18df","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDaf90e447-396f-43e4-b515-bb2c7edf18df"}},{"type":"ServiceResponse","id":"EIDbafdcfd2-26cb-4f86-a6ed-84ff66cdedf2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDbafdcfd2-26cb-4f86-a6ed-84ff66cdedf2"}},{"type":"Message","id":"EID756ab722-e30a-42a2-a9b8-ee04d8f8f079","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID756ab722-e30a-42a2-a9b8-ee04d8f8f079"}},{"type":"GetParameter","id":"EID2c66b338-fd15-4066-9755-81a91fb78d60","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceResponse","id":"EID0d605b34-8029-402b-a518-455b03ba22fc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID0d605b34-8029-402b-a518-455b03ba22fc"}},{"type":"GetParameter","id":"EID7bc8e1d8-817f-4caf-93ff-6941209da983","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EID71a88826-0268-490e-998b-79b060242d73","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID71a88826-0268-490e-998b-79b060242d73"}},{"type":"ServiceEndpoint","id":"EIDb160a177-a10e-413a-8d07-8cea318f87cd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"GetParameter","id":"EIDcc8b5cc0-91dd-4ab7-962a-f34404e80034","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDe69ac901-a984-470e-9e55-e65eec1ea305","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EID04c895eb-590f-4063-a004-c8f60740c3af","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID04c895eb-590f-4063-a004-c8f60740c3af"}},{"type":"GetParameter","id":"EID58be94a9-3e26-4492-8ef0-7fa72656a116","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID07dce0c4-5e95-4060-8a62-7a1ec6a100a4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID0937cec0-d988-4daa-ad9d-fb61cef984c5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"LogFile","id":"EID504de944-b9dc-4504-9976-407302bc62bd","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID504de944-b9dc-4504-9976-407302bc62bd"}},{"type":"Message","id":"EID29b2e74e-8bd2-44dd-9fd1-be88cf44af58","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID29b2e74e-8bd2-44dd-9fd1-be88cf44af58"}},{"type":"Message","id":"EID002272c2-a318-4489-a520-9d538b9d42dc","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID002272c2-a318-4489-a520-9d538b9d42dc"}},{"type":"Message","id":"EID1215da15-89d7-461f-8d44-f15ac32248f0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID1215da15-89d7-461f-8d44-f15ac32248f0"}},{"type":"Message","id":"EIDa3956379-1d90-46e8-9d4f-366746ffd508","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDa3956379-1d90-46e8-9d4f-366746ffd508"}},{"type":"GetParameter","id":"EIDa57ff063-d4dc-4920-acf7-cbfcbc26a2ec","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EID7f6a2460-dabd-4ce7-a55a-9b47584f4adb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID39f3e03f-466d-48a5-93bf-b165060f6ee4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID44272d5f-dac8-4283-9e3b-92373e1ae7f1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID44272d5f-dac8-4283-9e3b-92373e1ae7f1"}},{"type":"Message","id":"EID54737389-cddd-4254-9d7b-0250164852b2","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID54737389-cddd-4254-9d7b-0250164852b2"}},{"type":"GetParameter","id":"EID492a8e73-ac64-4b18-b2a9-bcd1ceb71dad","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID3a3d162a-2c33-4163-9998-1e08bb5feb06","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDf41064ca-9c74-421a-93eb-48dcf96b306e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID792604c0-ff67-4cc3-a06c-626f2f527e7a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID1015dd53-56dc-4a89-943d-bd461f79ed04","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID624d9dbe-9eff-4ce1-9e59-6e20663b7e26","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"GetParameter","id":"EID5bda1712-22d1-4d87-8024-228f7dad21c5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDb3e92334-2a05-4462-a4a2-539193959e44","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID0881454d-8df2-470e-8a4c-ba3cbfef5fb9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID67bf6ff7-f39e-4b58-9b56-91edb33aa4b1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID8eb67b48-bb77-496c-9012-31ca39b1b5c0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceResponse","id":"EID75bf1bf2-744b-4462-914d-27204897e042","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID75bf1bf2-744b-4462-914d-27204897e042"}},{"type":"ServiceEndpoint","id":"EIDd7f47fe5-b18f-40c0-ab66-dc24eac4646c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDf375d805-dc7f-499f-b081-002a8fcb788f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID7905e9b9-75dd-4714-860c-0f7e77741e10","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"GetParameter","id":"EIDd268a42e-92bd-434f-9c6a-b14a0b6493c6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceResponse","id":"EID28a7a224-c102-4c1f-9eee-99426af195b6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID28a7a224-c102-4c1f-9eee-99426af195b6"}},{"type":"Message","id":"EIDc32638b0-880f-45cd-a624-43d4f1689cd3","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDc32638b0-880f-45cd-a624-43d4f1689cd3"}},{"type":"GetParameter","id":"EID3c4c6df5-9392-4ce2-8589-a41ff38f98b0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EID0d1fba62-f9f9-4658-bd1f-70b71ac8960a","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID0d1fba62-f9f9-4658-bd1f-70b71ac8960a"}},{"type":"ServiceEndpoint","id":"EID99b72a72-8c18-4fda-8735-abc076579b62","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceResponse","id":"EIDd61cd19d-b604-4884-92b5-b584701a8d4f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDd61cd19d-b604-4884-92b5-b584701a8d4f"}},{"type":"GetParameter","id":"EID619387df-ab53-44b3-b7fc-d73c4b508ef6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDc8ffb26e-0b34-435f-b9e5-d796b43a5a0b","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDc8ffb26e-0b34-435f-b9e5-d796b43a5a0b"}},{"type":"ServiceEndpoint","id":"EID5a89c7b1-d7c4-4690-b6bc-ed8e694f095b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EID21f62163-6166-4b4a-9a87-de0789b18c10","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID21f62163-6166-4b4a-9a87-de0789b18c10"}},{"type":"ServiceResponse","id":"EIDa116b66a-23ac-4fc5-a7aa-c72f85f09432","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDa116b66a-23ac-4fc5-a7aa-c72f85f09432"}},{"type":"ServiceResponse","id":"EID5b318613-00a7-4053-ab75-b3c05d1ae967","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID5b318613-00a7-4053-ab75-b3c05d1ae967"}},{"type":"ServiceResponse","id":"EID933d2527-4074-4683-b812-8226b835d8a0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID933d2527-4074-4683-b812-8226b835d8a0"}},{"type":"Message","id":"EIDf8687a8e-69a4-49b8-8637-c8ca8364d415","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDf8687a8e-69a4-49b8-8637-c8ca8364d415"}},{"type":"GetParameter","id":"EIDc0de1177-036c-4e39-936c-4e7c8a1958fb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID74d09130-37f6-4ee1-a301-647c9ed4f273","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID74d09130-37f6-4ee1-a301-647c9ed4f273"}},{"type":"ServiceResponse","id":"EID45dc5ab2-8f4b-4cb8-be53-68f240cf207d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID45dc5ab2-8f4b-4cb8-be53-68f240cf207d"}},{"type":"Message","id":"EIDbbf59b32-9148-4832-bf1a-93187c454d48","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDbbf59b32-9148-4832-bf1a-93187c454d48"}},{"type":"GetParameter","id":"EIDe9a51eec-6a2f-4b08-b98d-0d25db716905","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EID089a6d3d-a2e6-4aa2-8f6f-3ce41f59c59f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"GetParameter","id":"EIDa5d2d2fa-1da6-4701-a2a7-5a011a95de08","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9kb3dubG9hZHMvSEhfTkxfTlVUUzIuZ3BrZy56aXA="},{"type":"ServiceEndpoint","id":"EID00fdbe41-8f87-453d-ab38-af33e9430c65","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDe971d07b-5993-4f02-a984-bc500299b96e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDe971d07b-5993-4f02-a984-bc500299b96e"}},{"type":"ServiceResponse","id":"EID37e7fb05-41a8-4a7c-bce2-e6f4d56f12ca","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID37e7fb05-41a8-4a7c-bce2-e6f4d56f12ca"}},{"type":"Message","id":"EID663000b7-d9f2-43e6-89ca-29125866eebf","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID663000b7-d9f2-43e6-89ca-29125866eebf"}},{"type":"Message","id":"EID64d187fe-bc2d-4d0e-806e-e633207aeb62","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID64d187fe-bc2d-4d0e-806e-e633207aeb62"}},{"type":"ServiceResponse","id":"EID74861c45-dfff-4adc-b1e4-b99b5f04d104","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID74861c45-dfff-4adc-b1e4-b99b5f04d104"}},{"type":"ServiceEndpoint","id":"EID5d4eed5b-fe16-4d73-a400-cc6827eaf70a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID521987ea-0bfb-4420-af03-f138a098e55a","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID521987ea-0bfb-4420-af03-f138a098e55a"}},{"type":"ServiceResponse","id":"EID779a209d-2b3b-4e6d-9956-72c5c8ceb578","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID779a209d-2b3b-4e6d-9956-72c5c8ceb578"}},{"type":"Message","id":"EID138654c2-eae1-4425-a568-71572e78716c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID138654c2-eae1-4425-a568-71572e78716c"}},{"type":"Message","id":"EIDd534cd64-35c8-4e3a-984f-e2609aeec8ff","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDd534cd64-35c8-4e3a-984f-e2609aeec8ff"}},{"type":"ServiceResponse","id":"EIDe351d09f-1c11-49d4-bf1d-3c0d2cd0b516","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDe351d09f-1c11-49d4-bf1d-3c0d2cd0b516"}},{"type":"ServiceEndpoint","id":"EID46b96ec3-8312-49c5-bcea-07d50d8d94e8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceResponse","id":"EID0c8ff0c5-c5cf-400b-9a59-7617ee41fa74","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID0c8ff0c5-c5cf-400b-9a59-7617ee41fa74"}},{"type":"ServiceEndpoint","id":"EIDc22c6c7c-e565-4f75-bdd1-0e06b9c98e61","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDcddd2207-560b-46f2-b184-04ae77602f08","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDcddd2207-560b-46f2-b184-04ae77602f08"}},{"type":"Message","id":"EID645a18a5-5322-4a8e-9a9c-f748308dbe02","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID645a18a5-5322-4a8e-9a9c-f748308dbe02"}},{"type":"Message","id":"EID69200f41-562d-4e0a-a73f-827397255ba4","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID69200f41-562d-4e0a-a73f-827397255ba4"}},{"type":"ServiceEndpoint","id":"EID482c93b9-c8e4-493e-8a3e-9abd36452881","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDe9c3f98a-60eb-4754-845b-4e37593462bc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDe9c3f98a-60eb-4754-845b-4e37593462bc"}},{"type":"ServiceEndpoint","id":"EID4b92eda2-6a03-4e54-b22e-c6493e366b6b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDf7d6202f-1d69-4d75-a61f-b0ba73055ce4","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDf7d6202f-1d69-4d75-a61f-b0ba73055ce4"}},{"type":"GetParameter","id":"EIDf2d7a23e-2605-403d-98b4-807d031e20ec","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID4501b337-6417-4fda-8b75-36a8892057f1","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID4501b337-6417-4fda-8b75-36a8892057f1"}},{"type":"ServiceResponse","id":"EID28b3f968-0a9e-4433-ad47-b9a242a9d7e1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID28b3f968-0a9e-4433-ad47-b9a242a9d7e1"}},{"type":"ServiceEndpoint","id":"EIDd9ffe7bd-f746-4523-9235-7a039282b838","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID4b4c3dc2-0a0b-407d-9e20-03f56c9f8bdb","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID4b4c3dc2-0a0b-407d-9e20-03f56c9f8bdb"}},{"type":"ServiceEndpoint","id":"EID8526c713-5f7b-451f-ba95-95e89a38c176","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDe099c0ff-1fce-4def-a300-524e55a7b03f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EIDc1daccaa-84a4-4b0f-a328-e9ba28e2302d","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDc1daccaa-84a4-4b0f-a328-e9ba28e2302d"}},{"type":"ServiceEndpoint","id":"EID7c99d74b-5370-4089-ae58-9caf664f821c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceResponse","id":"EID376bbcf4-db7e-4a6d-8344-fb57a8b7dee3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID376bbcf4-db7e-4a6d-8344-fb57a8b7dee3"}},{"type":"Message","id":"EIDfd4a33d3-a411-44b1-961f-ed3189301d48","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDfd4a33d3-a411-44b1-961f-ed3189301d48"}},{"type":"GetParameter","id":"EIDe65070ee-2c61-4e18-9e2f-f26c9db2594b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID4bdf50a0-0834-4a21-8231-9f8e296fec2d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceEndpoint","id":"EID5ee140f7-1069-44ce-a2a5-6d624357bd8f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDf9325c5f-ef09-4a5a-81bf-d8eb985b7dc0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDf9325c5f-ef09-4a5a-81bf-d8eb985b7dc0"}},{"type":"GetParameter","id":"EID66b0e6e4-557f-4d0b-9ee5-e123e9280271","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDa8b35186-8b76-4006-b031-a342956304ef","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDa8b35186-8b76-4006-b031-a342956304ef"}},{"type":"ServiceResponse","id":"EIDc82a1ca2-5b45-43cd-b2d9-51cbc21bfff2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDc82a1ca2-5b45-43cd-b2d9-51cbc21bfff2"}},{"type":"Message","id":"EID3974d1fd-576a-4f69-b4fa-c0ec3f7b8473","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID3974d1fd-576a-4f69-b4fa-c0ec3f7b8473"}},{"type":"ServiceResponse","id":"EID39c555d3-4b35-40ff-a25e-dd3ae3632e9b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID39c555d3-4b35-40ff-a25e-dd3ae3632e9b"}},{"type":"ServiceEndpoint","id":"EIDbdfdb1b8-c4b9-43b2-b01b-0235286cb08f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDcec27b3c-69d7-4ec5-b796-ab8bc855f7ce","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDfec54bce-ffaa-4408-b9df-25904c9ebdd5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDfec54bce-ffaa-4408-b9df-25904c9ebdd5"}},{"type":"ServiceEndpoint","id":"EID4d813a03-c6d9-4895-acd1-15181feb55ca","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceResponse","id":"EIDdff0a23b-8fd1-4814-b99c-7f8d8dd45235","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDdff0a23b-8fd1-4814-b99c-7f8d8dd45235"}},{"type":"GetParameter","id":"EIDec301374-db71-4948-a563-f73d3f0bcdc6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDe14ef4e7-9926-4429-a522-1399912bae34","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDe14ef4e7-9926-4429-a522-1399912bae34"}},{"type":"GetParameter","id":"EID92aaa0d7-5f65-4886-81db-6f5b7e4e8089","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID529312b4-e32f-45ea-b6dc-7fedafc3ea6a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID529312b4-e32f-45ea-b6dc-7fedafc3ea6a"}},{"type":"Message","id":"EID553d16a9-a936-4077-8eea-a64b29f52886","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID553d16a9-a936-4077-8eea-a64b29f52886"}},{"type":"ServiceEndpoint","id":"EID0b1ea556-c840-4570-9695-0ee4ff3dad91","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9kb3dubG9hZHMvSEhfTkxfTlVUUzIuZ3BrZy56aXA="},{"type":"Message","id":"EID0a456def-3545-42db-8557-b0e177baaff3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID0a456def-3545-42db-8557-b0e177baaff3"}},{"type":"ServiceResponse","id":"EID72dbd341-ee42-4874-a275-a4f358729230","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID72dbd341-ee42-4874-a275-a4f358729230"}},{"type":"ServiceEndpoint","id":"EID9f2b7f98-2510-4f86-9795-2b1b7a0d1e03","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID8bf2163f-fc9e-412c-9d86-4bce4d7d0a51","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID8bf2163f-fc9e-412c-9d86-4bce4d7d0a51"}},{"type":"GetParameter","id":"EIDf9bb92b6-95c7-4bfa-9b68-cc25f44567d3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDa5d2829a-8032-433b-a6a9-58422bd8b6b9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDa5d2829a-8032-433b-a6a9-58422bd8b6b9"}},{"type":"Message","id":"EID71f6a2f2-ed2c-406c-9e99-2d57f5e659e3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID71f6a2f2-ed2c-406c-9e99-2d57f5e659e3"}},{"type":"ServiceResponse","id":"EIDaff3e7ad-4e62-44fa-8b7e-87b79c9d4af2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDaff3e7ad-4e62-44fa-8b7e-87b79c9d4af2"}},{"type":"GetParameter","id":"EID2cdc1485-aced-474f-a4ee-d82c1ff51dd1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceEndpoint","id":"EID50cf81b4-cdf4-454a-98e4-bd8ac0e60d61","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceEndpoint","id":"EIDd2cecab0-5acd-497f-9a68-49f2a40076e1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"GetParameter","id":"EID3854e3e0-ee10-436b-8ffd-6ea7e719775f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceResponse","id":"EIDb7dae61d-c79c-413f-8acf-752220ae9cce","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDb7dae61d-c79c-413f-8acf-752220ae9cce"}},{"type":"Message","id":"EIDc2fc745e-6660-4509-b32f-f507f9c277b4","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDc2fc745e-6660-4509-b32f-f507f9c277b4"}},{"type":"GetParameter","id":"EID37af52c2-20a9-4d2e-ad5c-3a76ba3b5718","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDe3bd2bcd-dbbb-4215-9c36-12f0601aad73","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EIDb48cea74-d0ac-4baf-8e21-9984f970484b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDabcfe969-e48e-4050-a69f-0f54b591f636","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"GetParameter","id":"EIDbe303d78-bb61-4a42-a8d6-4020627f40c5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceResponse","id":"EID77b6082a-b59b-4c8b-a1f7-6ca46f8cc2c3","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID77b6082a-b59b-4c8b-a1f7-6ca46f8cc2c3"}},{"type":"Message","id":"EID08619ba2-ffa6-4564-8897-50a0132eeffc","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID08619ba2-ffa6-4564-8897-50a0132eeffc"}},{"type":"Message","id":"EIDdf8fb525-9fe2-474b-86dd-c306db9e00a0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDdf8fb525-9fe2-474b-86dd-c306db9e00a0"}},{"type":"ServiceResponse","id":"EID05b14371-e7b1-4253-8628-f5dc54f01d4d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID05b14371-e7b1-4253-8628-f5dc54f01d4d"}},{"type":"GetParameter","id":"EIDeb8803f8-4017-4c6f-b8f9-948f6286c48e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID932328f8-43a5-4f37-87b8-5ed76b025f99","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID932328f8-43a5-4f37-87b8-5ed76b025f99"}},{"type":"GetParameter","id":"EID3ef9e1e7-0aac-498b-9eda-b7794d9a754b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EIDffa65b1d-caae-4313-a94f-b171b0b2e458","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDffa65b1d-caae-4313-a94f-b171b0b2e458"}},{"type":"ServiceResponse","id":"EID2adab955-42c2-4622-8d52-1d0f50a07751","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID2adab955-42c2-4622-8d52-1d0f50a07751"}},{"type":"Message","id":"EIDbb9e68f7-3cd5-48ba-b15b-8ef0ba6137a5","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDbb9e68f7-3cd5-48ba-b15b-8ef0ba6137a5"}},{"type":"GetParameter","id":"EID376ac0db-5dcc-418c-b342-e8c66c8a385b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDe4486798-722c-4df5-ad35-8cea2452a471","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDe4486798-722c-4df5-ad35-8cea2452a471"}},{"type":"ServiceEndpoint","id":"EID237db635-7a95-4ff1-a0f4-223880776184","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EID6a9b6378-a6fa-4369-8d45-f91133ab0c24","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID6a9b6378-a6fa-4369-8d45-f91133ab0c24"}},{"type":"ServiceEndpoint","id":"EID6e1e9949-c15a-47ac-a16c-ab48daeb0ba0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID25e5e65f-36d9-46aa-9a1f-cfb4cd6f4e2f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID25e5e65f-36d9-46aa-9a1f-cfb4cd6f4e2f"}},{"type":"GetParameter","id":"EID1418c1f3-d097-4895-8b51-e4cee3aea15d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID06471baa-e7e8-485e-aede-0e7a180c5522","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID06471baa-e7e8-485e-aede-0e7a180c5522"}},{"type":"ServiceEndpoint","id":"EIDdb1f9b6a-f0d2-44ef-a1cc-70271b795de8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID8ae340f8-f498-4ed8-a973-1d74b78a16e6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID8ae340f8-f498-4ed8-a973-1d74b78a16e6"}},{"type":"ServiceEndpoint","id":"EIDf0f34c23-c0b0-4b5f-9ed2-42e54b90f126","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID48197a7f-53d6-46f8-9bfd-deb89ef79182","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EIDe6b045ca-b808-4c83-bed4-d334ef8fd49c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID7dbf275a-91d4-40c0-bec3-5bdff084b95a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID7dbf275a-91d4-40c0-bec3-5bdff084b95a"}},{"type":"GetParameter","id":"EIDfac38ba7-937e-43c2-b667-b11d529f2fd4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EID1e7a1b88-5ee6-48ca-ba91-998d72a10503","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"GetParameter","id":"EID7765d37b-9666-4747-92ec-26c69bde50c4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDd48fc574-8740-4aba-a4f8-3abadfb14546","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDd48fc574-8740-4aba-a4f8-3abadfb14546"}},{"type":"ServiceResponse","id":"EIDeb9490e6-fb48-4dc4-886e-26ce560b647f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDeb9490e6-fb48-4dc4-886e-26ce560b647f"}},{"type":"GetParameter","id":"EID849ff136-e458-4309-a027-a5d11c533780","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID2974f41a-ee16-4114-a36a-fdf63783ef55","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID5788ba3f-f85b-4033-9102-53c8f012732e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"GetParameter","id":"EIDd606c355-3822-4fb6-ba92-aec8df9bfb22","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDa1560cc1-247e-4f61-8836-dc0057c69d4a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDb60a26e6-e203-4bc0-9953-0629a03294bb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L2Nzdw=="},{"type":"ServiceResponse","id":"EID9a07d026-2aed-4b5a-aef7-120bfb064498","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID9a07d026-2aed-4b5a-aef7-120bfb064498"}},{"type":"Message","id":"EIDff45f098-77e9-4cbb-971b-a58f05f699fe","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDff45f098-77e9-4cbb-971b-a58f05f699fe"}},{"type":"Message","id":"EID5dfbbd02-3412-475e-bdd9-3823c3b70c29","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID5dfbbd02-3412-475e-bdd9-3823c3b70c29"}},{"type":"ServiceResponse","id":"EID59ef576d-9bf0-4a22-bbf9-358eddd274d9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID59ef576d-9bf0-4a22-bbf9-358eddd274d9"}},{"type":"ServiceResponse","id":"EIDad1fdfba-c78b-49da-aef8-47b01229122c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDad1fdfba-c78b-49da-aef8-47b01229122c"}},{"type":"ServiceEndpoint","id":"EID975239e8-e309-4093-8a1e-60dcf45af00b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EIDf3021403-6520-41b8-9ed5-0c22b3d11c3b","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDf3021403-6520-41b8-9ed5-0c22b3d11c3b"}},{"type":"ServiceEndpoint","id":"EID8f658c2e-69ee-44b7-937b-6cc0ad04af02","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EID81c6ba43-df7e-46e3-9d85-50f010a7d67a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID81c6ba43-df7e-46e3-9d85-50f010a7d67a"}},{"type":"ServiceEndpoint","id":"EIDf1f59a6c-aa18-48be-a203-37b1fbde96aa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID7ef62d9b-45f6-43c0-8516-87614ec3d75e","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID7ef62d9b-45f6-43c0-8516-87614ec3d75e"}},{"type":"GetParameter","id":"EID5f8df1d0-a3fe-4971-9bc7-0b6ed7da3cda","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"GetParameter","id":"EID2031811b-3246-450d-8ac0-ba36e043f959","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceEndpoint","id":"EID5fd4e3b1-2f02-480d-9ad4-cdb275f7a1ba","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC81NDEyMjYzMS1kMzQzLTQwYmUtOWMyOC1lNDQ2MjZiMzdhMGUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID9ee97801-4a8c-404f-80f2-e77b6a21590b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID9ee97801-4a8c-404f-80f2-e77b6a21590b"}},{"type":"GetParameter","id":"EIDd02a9cdb-74df-4b02-adf1-884b55735cd5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"ServiceEndpoint","id":"EIDc095cc10-4feb-4e6a-84f5-36cbc8a9f1cc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EIDbf6bbe45-a698-4e92-a87d-12196891a865","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"Message","id":"EID21e134f4-4e91-4a6d-959f-5be9d5e0475e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID21e134f4-4e91-4a6d-959f-5be9d5e0475e"}},{"type":"Message","id":"EID55e351cc-8778-4aef-8ccb-041570fc17d8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID55e351cc-8778-4aef-8ccb-041570fc17d8"}},{"type":"ServiceEndpoint","id":"EID940d07f6-9afe-47a6-967f-5dfb69ef06d6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDb445bc3a-7bfb-4b89-b236-21502204749a","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDb445bc3a-7bfb-4b89-b236-21502204749a"}},{"type":"GetParameter","id":"EIDbe214894-6459-4a52-96d0-a50fffa191de","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID1ff6c0f4-0ddc-4396-b8d7-c41207337fbb","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID1ff6c0f4-0ddc-4396-b8d7-c41207337fbb"}},{"type":"ServiceEndpoint","id":"EID04195cc1-84dd-4dc1-af82-cfff85614377","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID843d4e02-bb8b-4c15-b5f4-0c6e550ca4a7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID2be817e7-43c0-4c20-a314-b4e083041f5d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9oaC54bWw="},{"type":"Message","id":"EID3d0ed41b-f30e-4acc-b63e-baf76b8a6ab7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID3d0ed41b-f30e-4acc-b63e-baf76b8a6ab7"}},{"type":"ServiceResponse","id":"EIDcf399906-87f5-4183-ad52-bfc278b76c17","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDcf399906-87f5-4183-ad52-bfc278b76c17"}},{"type":"ServiceEndpoint","id":"EID461082f0-baa3-4cd5-b0ae-37233afd2414","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID4864cfbe-632a-4efe-b2b1-607ee15b6b92","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID4864cfbe-632a-4efe-b2b1-607ee15b6b92"}},{"type":"ServiceResponse","id":"EIDb4f2708a-c56e-48be-8b37-0a243a54a4b5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDb4f2708a-c56e-48be-8b37-0a243a54a4b5"}},{"type":"GetParameter","id":"EID780447ab-c0c6-4fc7-a556-117a7eadf4ed","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvY2JzL2hoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDa917d91e-9fd4-4f3f-b672-264456b5fb0f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L2Nzdw=="},{"type":"ServiceResponse","id":"EIDd4618e52-bf50-4d07-82af-86897d9a1c1b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EIDd4618e52-bf50-4d07-82af-86897d9a1c1b"}},{"type":"Message","id":"EID8ec48fca-7d31-4dd2-b8fc-e309109f8196","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID95df579c-f084-4501-8519-bcb932e892fc/Attachments/EID8ec48fca-7d31-4dd2-b8fc-e309109f8196"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:18:48Z","duration":11033,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:19:12.403 [print] EIDd1689966-27ba-48cd-88b7-394ea5e57dde
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:19:12.403 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:19:12.403 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:19:12.403 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:19:12.403 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/d1689966-27ba-48cd-88b7-394ea5e57dde.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:19:12.403 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/d1689966-27ba-48cd-88b7-394ea5e57dde.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:19:12.403 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDd1689966-27ba-48cd-88b7-394ea5e57dde/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.004
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
13:19:12.410 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
13:19:12.412 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* print sortedrefs 0.000
13:19:12.412 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.001
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1.880
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:20:28.903 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/cp/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.879
13:20:28.904 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 277
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/cp/wfs?request=GetCapabilities"}}}

13:20:30.783 response time in milliseconds: 1774.02
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:20:30 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804830588","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:20:30.783 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1.172
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:14:04.828 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.170
13:14:04.830 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}

13:14:05.999 response time in milliseconds: 1168.34
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:14:05 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027","timestamp":"1603804445924","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.001
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:14:06.000 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1:24.031
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:16:25.463 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 10.551
13:16:25.465 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 286
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml"}}}

13:16:36.012 response time in milliseconds: 9807.19
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:16:35 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:16:31 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/48b84ad7-90ee-4970-a5f0-2017d3b81059.json","testRuns":{"TestRun":{"id":"EID48b84ad7-90ee-4970-a5f0-2017d3b81059","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:16:31.099Z","testTasks":{"TestTask":{"id":"EIDf2e4d99b-2c8e-4e45-9b95-f37d61c12bf1","parent":{"ref":"EID48b84ad7-90ee-4970-a5f0-2017d3b81059"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDf77e994f-24f5-45ba-8196-0d8bda5754e8"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID48b84ad7-90ee-4970-a5f0-2017d3b81059/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDf77e994f-24f5-45ba-8196-0d8bda5754e8","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:16:25.919Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:16:30.59Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:16:36.015 [print] EID48b84ad7-90ee-4970-a5f0-2017d3b81059
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:16:36.015 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:16:36.015 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:16:36.016 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/48b84ad7-90ee-4970-a5f0-2017d3b81059.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:16:36.016 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID48b84ad7-90ee-4970-a5f0-2017d3b81059/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:16:36.016 [print] statuspath TestRuns/EID48b84ad7-90ee-4970-a5f0-2017d3b81059
* print 'progresspath ', progresspath 0.000
13:16:36.017 [print] progresspath  TestRuns/EID48b84ad7-90ee-4970-a5f0-2017d3b81059/progress
Given path progresspath 0.000
When method GET 0.523
13:16:36.017 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID48b84ad7-90ee-4970-a5f0-2017d3b81059/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:36.540 response time in milliseconds: 521.72
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:16:36 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:16:31 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:31 UTC 2020)","27.10.2020 13:16:31 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:31 - Preparing 1 Test Task:","27.10.2020 13:16:31 -  TestTask 1 (f2e4d99b-2c8e-4e45-9b95-f37d61c12bf1)","27.10.2020 13:16:31 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:31 -  with parameters: ","27.10.2020 13:16:31 - etf.testcases = *","27.10.2020 13:16:31 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:31 - Setting state to CREATED","27.10.2020 13:16:31 - Changed state from CREATED to INITIALIZING"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:16:36.540 [print] {
  "val": "0",
  "max": "240",
  "log": [
    "27.10.2020 13:16:31 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:31 UTC 2020)",
    "27.10.2020 13:16:31 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:16:31 - Preparing 1 Test Task:",
    "27.10.2020 13:16:31 -  TestTask 1 (f2e4d99b-2c8e-4e45-9b95-f37d61c12bf1)",
    "27.10.2020 13:16:31 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:16:31 -  with parameters: ",
    "27.10.2020 13:16:31 - etf.testcases = *",
    "27.10.2020 13:16:31 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:16:31 - Setting state to CREATED",
    "27.10.2020 13:16:31 - Changed state from CREATED to INITIALIZING"
  ]
}
Given path progresspath 0.000
When method GET 42.613
13:16:36.541 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID48b84ad7-90ee-4970-a5f0-2017d3b81059/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:37.151 response time in milliseconds: 609.13
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:16:37 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:16:31 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:31 UTC 2020)","27.10.2020 13:16:31 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:31 - Preparing 1 Test Task:","27.10.2020 13:16:31 -  TestTask 1 (f2e4d99b-2c8e-4e45-9b95-f37d61c12bf1)","27.10.2020 13:16:31 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:31 -  with parameters: ","27.10.2020 13:16:31 - etf.testcases = *","27.10.2020 13:16:31 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:31 - Setting state to CREATED","27.10.2020 13:16:31 - Changed state from CREATED to INITIALIZING"]}

13:16:37.158 retry condition not satisfied: response.val == response.max
13:16:37.158 sleeping before retry #1
13:16:42.159 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID48b84ad7-90ee-4970-a5f0-2017d3b81059/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:42.698 response time in milliseconds: 538.42
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:16:42 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:16:31 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:31 UTC 2020)","27.10.2020 13:16:31 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:31 - Preparing 1 Test Task:","27.10.2020 13:16:31 -  TestTask 1 (f2e4d99b-2c8e-4e45-9b95-f37d61c12bf1)","27.10.2020 13:16:31 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:31 -  with parameters: ","27.10.2020 13:16:31 - etf.testcases = *","27.10.2020 13:16:31 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:31 - Setting state to CREATED","27.10.2020 13:16:31 - Changed state from CREATED to INITIALIZING"]}

13:16:42.700 retry condition not satisfied: response.val == response.max
13:16:42.701 sleeping before retry #2
13:16:47.701 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID48b84ad7-90ee-4970-a5f0-2017d3b81059/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:48.219 response time in milliseconds: 517.15
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:16:48 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:16:31 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:31 UTC 2020)","27.10.2020 13:16:31 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:31 - Preparing 1 Test Task:","27.10.2020 13:16:31 -  TestTask 1 (f2e4d99b-2c8e-4e45-9b95-f37d61c12bf1)","27.10.2020 13:16:31 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:31 -  with parameters: ","27.10.2020 13:16:31 - etf.testcases = *","27.10.2020 13:16:31 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:31 - Setting state to CREATED","27.10.2020 13:16:31 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:47 - Starting TestRun.48b84ad7-90ee-4970-a5f0-2017d3b81059 at 2020-10-27T13:16:49Z"]}

13:16:48.219 retry condition not satisfied: response.val == response.max
13:16:48.219 sleeping before retry #3
13:16:53.220 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID48b84ad7-90ee-4970-a5f0-2017d3b81059/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:53.751 response time in milliseconds: 528.61
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:16:53 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"41","max":"42","log":["27.10.2020 13:16:31 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:31 UTC 2020)","27.10.2020 13:16:31 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:31 - Preparing 1 Test Task:","27.10.2020 13:16:31 -  TestTask 1 (f2e4d99b-2c8e-4e45-9b95-f37d61c12bf1)","27.10.2020 13:16:31 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:31 -  with parameters: ","27.10.2020 13:16:31 - etf.testcases = *","27.10.2020 13:16:31 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:31 - Setting state to CREATED","27.10.2020 13:16:31 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:47 - Starting TestRun.48b84ad7-90ee-4970-a5f0-2017d3b81059 at 2020-10-27T13:16:49Z","27.10.2020 13:16:49 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:16:49 - Project Properties: ","27.10.2020 13:16:49 - etf.testcases - * ","27.10.2020 13:16:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","27.10.2020 13:16:49 - username -  ","27.10.2020 13:16:49 - authUser -  ","27.10.2020 13:16:49 - authMethod - basic ","27.10.2020 13:16:49 - TestRunTask initialized"]}

13:16:53.753 retry condition not satisfied: response.val == response.max
13:16:53.753 sleeping before retry #4
13:16:58.754 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID48b84ad7-90ee-4970-a5f0-2017d3b81059/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:01.109 response time in milliseconds: 2354.28
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:17:01 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"101","max":"102","log":["27.10.2020 13:16:31 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:31 UTC 2020)","27.10.2020 13:16:31 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:31 - Preparing 1 Test Task:","27.10.2020 13:16:31 -  TestTask 1 (f2e4d99b-2c8e-4e45-9b95-f37d61c12bf1)","27.10.2020 13:16:31 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:31 -  with parameters: ","27.10.2020 13:16:31 - etf.testcases = *","27.10.2020 13:16:31 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:31 - Setting state to CREATED","27.10.2020 13:16:31 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:47 - Starting TestRun.48b84ad7-90ee-4970-a5f0-2017d3b81059 at 2020-10-27T13:16:49Z","27.10.2020 13:16:49 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:16:49 - Project Properties: ","27.10.2020 13:16:49 - etf.testcases - * ","27.10.2020 13:16:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","27.10.2020 13:16:49 - username -  ","27.10.2020 13:16:49 - authUser -  ","27.10.2020 13:16:49 - authMethod - basic ","27.10.2020 13:16:49 - TestRunTask initialized","27.10.2020 13:16:59 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:17:01.109 retry condition not satisfied: response.val == response.max
13:17:01.109 sleeping before retry #5
13:17:06.110 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID48b84ad7-90ee-4970-a5f0-2017d3b81059/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:06.620 response time in milliseconds: 508.87
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:17:06 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"156","max":"157","log":["27.10.2020 13:16:31 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:31 UTC 2020)","27.10.2020 13:16:31 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:31 - Preparing 1 Test Task:","27.10.2020 13:16:31 -  TestTask 1 (f2e4d99b-2c8e-4e45-9b95-f37d61c12bf1)","27.10.2020 13:16:31 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:31 -  with parameters: ","27.10.2020 13:16:31 - etf.testcases = *","27.10.2020 13:16:31 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:31 - Setting state to CREATED","27.10.2020 13:16:31 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:47 - Starting TestRun.48b84ad7-90ee-4970-a5f0-2017d3b81059 at 2020-10-27T13:16:49Z","27.10.2020 13:16:49 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:16:49 - Project Properties: ","27.10.2020 13:16:49 - etf.testcases - * ","27.10.2020 13:16:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","27.10.2020 13:16:49 - username -  ","27.10.2020 13:16:49 - authUser -  ","27.10.2020 13:16:49 - authMethod - basic ","27.10.2020 13:16:49 - TestRunTask initialized","27.10.2020 13:16:59 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:17:06.620 retry condition not satisfied: response.val == response.max
13:17:06.620 sleeping before retry #6
13:17:11.621 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID48b84ad7-90ee-4970-a5f0-2017d3b81059/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:12.143 response time in milliseconds: 521.50
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:17:12 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:16:31 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:31 UTC 2020)","27.10.2020 13:16:31 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:31 - Preparing 1 Test Task:","27.10.2020 13:16:31 -  TestTask 1 (f2e4d99b-2c8e-4e45-9b95-f37d61c12bf1)","27.10.2020 13:16:31 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:31 -  with parameters: ","27.10.2020 13:16:31 - etf.testcases = *","27.10.2020 13:16:31 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:31 - Setting state to CREATED","27.10.2020 13:16:31 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:47 - Starting TestRun.48b84ad7-90ee-4970-a5f0-2017d3b81059 at 2020-10-27T13:16:49Z","27.10.2020 13:16:49 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:16:49 - Project Properties: ","27.10.2020 13:16:49 - etf.testcases - * ","27.10.2020 13:16:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2015/atom/v1_0/index.xml ","27.10.2020 13:16:49 - username -  ","27.10.2020 13:16:49 - authUser -  ","27.10.2020 13:16:49 - authMethod - basic ","27.10.2020 13:16:49 - TestRunTask initialized","27.10.2020 13:16:59 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:17:08 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:17:08 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:17:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:17:12.144 retry condition not satisfied: response.val == response.max
13:17:12.144 sleeping before retry #7
13:17:17.145 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID48b84ad7-90ee-4970-a5f0-2017d3b81059/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:19.153 response time in milliseconds: 2007.49
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Tue, 27 Oct 2020 13:17:19 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:17:19.153 retry condition satisfied
* print response 0.000
13:17:19.153 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 30.341
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:67 - 
java.net.SocketTimeoutException: Read timed out
13:17:19.154 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID48b84ad7-90ee-4970-a5f0-2017d3b81059
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:49.495 java.net.SocketTimeoutException: Read timed out, http call failed after 30340 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns/EID48b84ad7-90ee-4970-a5f0-2017d3b81059
13:17:49.495 http request failed: 
java.net.SocketTimeoutException: Read timed out
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
3.581
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.002
13:10:29.417 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-rvo-wl/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.577
13:10:29.421 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-rvo-wl/wfs?request=GetCapabilities"}}}

13:10:32.987 response time in milliseconds: 3460.45
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:10:32 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804232805","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.001
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:10:32.996 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
2.464
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:19:18.140 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegenetmaal/v1/wfs?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.464
13:19:18.140 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 315
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartspoorwegenetmaal/v1/wfs?request=GetCapabilities&service=WFS"}}}

13:19:20.604 response time in milliseconds: 2358.20
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:19:20 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804760416","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:19:20.604 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
2.714
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.002
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:14:29.666 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholnacht/v2/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.710
13:14:29.669 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 300
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholnacht/v2/wfs?request=GetCapabilities"}}}

13:14:32.368 response time in milliseconds: 2594.15
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:14:32 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804472191","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:14:32.379 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
11.867
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:13:44.249 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspireadressen/v2/wfs?service=wfs&request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 11.866
13:13:44.250 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 297
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspireadressen/v2/wfs?service=wfs&request=GetCapabilities"}}}

13:13:56.116 response time in milliseconds: 11761.02
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:13:55 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804435872","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:13:56.116 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
2.303
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:18:38.637 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?request=getCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.302
13:18:38.642 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 287
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?request=getCapabilities&service=WFS"}}}

13:18:40.939 response time in milliseconds: 2191.90
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:18:40 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804720763","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:18:40.940 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1:20.211
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:21:06.561 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 9.166
13:21:06.562 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 295
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml"}}}

13:21:15.726 response time in milliseconds: 8312.65
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:21:14 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:21:11 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/383949d2-bf2d-463e-8450-770be5619fa3.json","testRuns":{"TestRun":{"id":"EID383949d2-bf2d-463e-8450-770be5619fa3","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:21:11.339Z","testTasks":{"TestTask":{"id":"EIDb113d4d5-875e-45ef-b331-c0c883820999","parent":{"ref":"EID383949d2-bf2d-463e-8450-770be5619fa3"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID6bedda16-cd11-4a34-9da9-10a25c04b052"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID383949d2-bf2d-463e-8450-770be5619fa3/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID6bedda16-cd11-4a34-9da9-10a25c04b052","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:21:06.993Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:21:10.146Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:21:15.728 [print] EID383949d2-bf2d-463e-8450-770be5619fa3
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:21:15.728 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:21:15.729 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:21:15.729 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/383949d2-bf2d-463e-8450-770be5619fa3.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:21:15.729 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID383949d2-bf2d-463e-8450-770be5619fa3/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:21:15.729 [print] statuspath TestRuns/EID383949d2-bf2d-463e-8450-770be5619fa3
* print 'progresspath ', progresspath 0.000
13:21:15.729 [print] progresspath  TestRuns/EID383949d2-bf2d-463e-8450-770be5619fa3/progress
Given path progresspath 0.000
When method GET 0.535
13:21:15.730 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID383949d2-bf2d-463e-8450-770be5619fa3/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:16.265 response time in milliseconds: 534.75
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:21:16 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:21:11 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:11 UTC 2020)","27.10.2020 13:21:11 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:11 - Preparing 1 Test Task:","27.10.2020 13:21:11 -  TestTask 1 (b113d4d5-875e-45ef-b331-c0c883820999)","27.10.2020 13:21:11 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:11 -  with parameters: ","27.10.2020 13:21:11 - etf.testcases = *","27.10.2020 13:21:11 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:11 - Setting state to CREATED","27.10.2020 13:21:11 - Changed state from CREATED to INITIALIZING"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:21:16.265 [print] {
  "val": "0",
  "max": "240",
  "log": [
    "27.10.2020 13:21:11 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:11 UTC 2020)",
    "27.10.2020 13:21:11 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:21:11 - Preparing 1 Test Task:",
    "27.10.2020 13:21:11 -  TestTask 1 (b113d4d5-875e-45ef-b331-c0c883820999)",
    "27.10.2020 13:21:11 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:21:11 -  with parameters: ",
    "27.10.2020 13:21:11 - etf.testcases = *",
    "27.10.2020 13:21:11 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:21:11 - Setting state to CREATED",
    "27.10.2020 13:21:11 - Changed state from CREATED to INITIALIZING"
  ]
}
Given path progresspath 0.000
When method GET 1:8.596
13:21:16.266 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID383949d2-bf2d-463e-8450-770be5619fa3/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:16.790 response time in milliseconds: 523.75
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:21:16 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:21:11 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:11 UTC 2020)","27.10.2020 13:21:11 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:11 - Preparing 1 Test Task:","27.10.2020 13:21:11 -  TestTask 1 (b113d4d5-875e-45ef-b331-c0c883820999)","27.10.2020 13:21:11 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:11 -  with parameters: ","27.10.2020 13:21:11 - etf.testcases = *","27.10.2020 13:21:11 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:11 - Setting state to CREATED","27.10.2020 13:21:11 - Changed state from CREATED to INITIALIZING"]}

13:21:16.794 retry condition not satisfied: response.val == response.max
13:21:16.794 sleeping before retry #1
13:21:21.795 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID383949d2-bf2d-463e-8450-770be5619fa3/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:22.491 response time in milliseconds: 695.38
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:21:22 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:21:11 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:11 UTC 2020)","27.10.2020 13:21:11 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:11 - Preparing 1 Test Task:","27.10.2020 13:21:11 -  TestTask 1 (b113d4d5-875e-45ef-b331-c0c883820999)","27.10.2020 13:21:11 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:11 -  with parameters: ","27.10.2020 13:21:11 - etf.testcases = *","27.10.2020 13:21:11 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:11 - Setting state to CREATED","27.10.2020 13:21:11 - Changed state from CREATED to INITIALIZING"]}

13:21:22.491 retry condition not satisfied: response.val == response.max
13:21:22.491 sleeping before retry #2
13:21:27.492 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID383949d2-bf2d-463e-8450-770be5619fa3/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:28.023 response time in milliseconds: 530.09
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:21:27 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"7","max":"8","log":["27.10.2020 13:21:11 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:11 UTC 2020)","27.10.2020 13:21:11 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:11 - Preparing 1 Test Task:","27.10.2020 13:21:11 -  TestTask 1 (b113d4d5-875e-45ef-b331-c0c883820999)","27.10.2020 13:21:11 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:11 -  with parameters: ","27.10.2020 13:21:11 - etf.testcases = *","27.10.2020 13:21:11 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:11 - Setting state to CREATED","27.10.2020 13:21:11 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:23 - Starting TestRun.383949d2-bf2d-463e-8450-770be5619fa3 at 2020-10-27T13:21:24Z","27.10.2020 13:21:24 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:24 - Project Properties: ","27.10.2020 13:21:24 - etf.testcases - * ","27.10.2020 13:21:24 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","27.10.2020 13:21:24 - username -  ","27.10.2020 13:21:24 - authUser -  ","27.10.2020 13:21:24 - authMethod - basic ","27.10.2020 13:21:24 - TestRunTask initialized"]}

13:21:28.023 retry condition not satisfied: response.val == response.max
13:21:28.023 sleeping before retry #3
13:21:33.024 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID383949d2-bf2d-463e-8450-770be5619fa3/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:33.528 response time in milliseconds: 504.04
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:21:33 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["27.10.2020 13:21:11 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:11 UTC 2020)","27.10.2020 13:21:11 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:11 - Preparing 1 Test Task:","27.10.2020 13:21:11 -  TestTask 1 (b113d4d5-875e-45ef-b331-c0c883820999)","27.10.2020 13:21:11 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:11 -  with parameters: ","27.10.2020 13:21:11 - etf.testcases = *","27.10.2020 13:21:11 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:11 - Setting state to CREATED","27.10.2020 13:21:11 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:23 - Starting TestRun.383949d2-bf2d-463e-8450-770be5619fa3 at 2020-10-27T13:21:24Z","27.10.2020 13:21:24 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:24 - Project Properties: ","27.10.2020 13:21:24 - etf.testcases - * ","27.10.2020 13:21:24 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","27.10.2020 13:21:24 - username -  ","27.10.2020 13:21:24 - authUser -  ","27.10.2020 13:21:24 - authMethod - basic ","27.10.2020 13:21:24 - TestRunTask initialized"]}

13:21:33.528 retry condition not satisfied: response.val == response.max
13:21:33.528 sleeping before retry #4
13:21:38.529 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID383949d2-bf2d-463e-8450-770be5619fa3/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:39.046 response time in milliseconds: 516.20
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:21:38 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"34","max":"35","log":["27.10.2020 13:21:11 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:11 UTC 2020)","27.10.2020 13:21:11 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:11 - Preparing 1 Test Task:","27.10.2020 13:21:11 -  TestTask 1 (b113d4d5-875e-45ef-b331-c0c883820999)","27.10.2020 13:21:11 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:11 -  with parameters: ","27.10.2020 13:21:11 - etf.testcases = *","27.10.2020 13:21:11 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:11 - Setting state to CREATED","27.10.2020 13:21:11 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:23 - Starting TestRun.383949d2-bf2d-463e-8450-770be5619fa3 at 2020-10-27T13:21:24Z","27.10.2020 13:21:24 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:24 - Project Properties: ","27.10.2020 13:21:24 - etf.testcases - * ","27.10.2020 13:21:24 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","27.10.2020 13:21:24 - username -  ","27.10.2020 13:21:24 - authUser -  ","27.10.2020 13:21:24 - authMethod - basic ","27.10.2020 13:21:24 - TestRunTask initialized"]}

13:21:39.046 retry condition not satisfied: response.val == response.max
13:21:39.046 sleeping before retry #5
13:21:44.047 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID383949d2-bf2d-463e-8450-770be5619fa3/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:44.556 response time in milliseconds: 508.34
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:21:44 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"49","max":"50","log":["27.10.2020 13:21:11 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:11 UTC 2020)","27.10.2020 13:21:11 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:11 - Preparing 1 Test Task:","27.10.2020 13:21:11 -  TestTask 1 (b113d4d5-875e-45ef-b331-c0c883820999)","27.10.2020 13:21:11 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:11 -  with parameters: ","27.10.2020 13:21:11 - etf.testcases = *","27.10.2020 13:21:11 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:11 - Setting state to CREATED","27.10.2020 13:21:11 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:23 - Starting TestRun.383949d2-bf2d-463e-8450-770be5619fa3 at 2020-10-27T13:21:24Z","27.10.2020 13:21:24 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:24 - Project Properties: ","27.10.2020 13:21:24 - etf.testcases - * ","27.10.2020 13:21:24 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","27.10.2020 13:21:24 - username -  ","27.10.2020 13:21:24 - authUser -  ","27.10.2020 13:21:24 - authMethod - basic ","27.10.2020 13:21:24 - TestRunTask initialized"]}

13:21:44.558 retry condition not satisfied: response.val == response.max
13:21:44.559 sleeping before retry #6
13:21:49.560 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID383949d2-bf2d-463e-8450-770be5619fa3/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:50.077 response time in milliseconds: 516.39
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:21:50 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"62","max":"63","log":["27.10.2020 13:21:11 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:11 UTC 2020)","27.10.2020 13:21:11 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:11 - Preparing 1 Test Task:","27.10.2020 13:21:11 -  TestTask 1 (b113d4d5-875e-45ef-b331-c0c883820999)","27.10.2020 13:21:11 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:11 -  with parameters: ","27.10.2020 13:21:11 - etf.testcases = *","27.10.2020 13:21:11 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:11 - Setting state to CREATED","27.10.2020 13:21:11 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:23 - Starting TestRun.383949d2-bf2d-463e-8450-770be5619fa3 at 2020-10-27T13:21:24Z","27.10.2020 13:21:24 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:24 - Project Properties: ","27.10.2020 13:21:24 - etf.testcases - * ","27.10.2020 13:21:24 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","27.10.2020 13:21:24 - username -  ","27.10.2020 13:21:24 - authUser -  ","27.10.2020 13:21:24 - authMethod - basic ","27.10.2020 13:21:24 - TestRunTask initialized"]}

13:21:50.077 retry condition not satisfied: response.val == response.max
13:21:50.077 sleeping before retry #7
13:21:55.078 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID383949d2-bf2d-463e-8450-770be5619fa3/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:55.822 response time in milliseconds: 743.74
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Tue, 27 Oct 2020 13:21:55 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"82","max":"83","log":["27.10.2020 13:21:11 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:11 UTC 2020)","27.10.2020 13:21:11 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:11 - Preparing 1 Test Task:","27.10.2020 13:21:11 -  TestTask 1 (b113d4d5-875e-45ef-b331-c0c883820999)","27.10.2020 13:21:11 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:11 -  with parameters: ","27.10.2020 13:21:11 - etf.testcases = *","27.10.2020 13:21:11 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:11 - Setting state to CREATED","27.10.2020 13:21:11 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:23 - Starting TestRun.383949d2-bf2d-463e-8450-770be5619fa3 at 2020-10-27T13:21:24Z","27.10.2020 13:21:24 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:24 - Project Properties: ","27.10.2020 13:21:24 - etf.testcases - * ","27.10.2020 13:21:24 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","27.10.2020 13:21:24 - username -  ","27.10.2020 13:21:24 - authUser -  ","27.10.2020 13:21:24 - authMethod - basic ","27.10.2020 13:21:24 - TestRunTask initialized"]}

13:21:55.822 retry condition not satisfied: response.val == response.max
13:21:55.823 sleeping before retry #8
13:22:00.823 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID383949d2-bf2d-463e-8450-770be5619fa3/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:01.346 response time in milliseconds: 522.00
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Tue, 27 Oct 2020 13:22:01 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"112","max":"113","log":["27.10.2020 13:21:11 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:11 UTC 2020)","27.10.2020 13:21:11 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:11 - Preparing 1 Test Task:","27.10.2020 13:21:11 -  TestTask 1 (b113d4d5-875e-45ef-b331-c0c883820999)","27.10.2020 13:21:11 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:11 -  with parameters: ","27.10.2020 13:21:11 - etf.testcases = *","27.10.2020 13:21:11 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:11 - Setting state to CREATED","27.10.2020 13:21:11 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:23 - Starting TestRun.383949d2-bf2d-463e-8450-770be5619fa3 at 2020-10-27T13:21:24Z","27.10.2020 13:21:24 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:24 - Project Properties: ","27.10.2020 13:21:24 - etf.testcases - * ","27.10.2020 13:21:24 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","27.10.2020 13:21:24 - username -  ","27.10.2020 13:21:24 - authUser -  ","27.10.2020 13:21:24 - authMethod - basic ","27.10.2020 13:21:24 - TestRunTask initialized","27.10.2020 13:21:56 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:22:01.346 retry condition not satisfied: response.val == response.max
13:22:01.346 sleeping before retry #9
13:22:06.347 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID383949d2-bf2d-463e-8450-770be5619fa3/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:06.851 response time in milliseconds: 503.32
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Tue, 27 Oct 2020 13:22:06 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"130","max":"131","log":["27.10.2020 13:21:11 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:11 UTC 2020)","27.10.2020 13:21:11 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:11 - Preparing 1 Test Task:","27.10.2020 13:21:11 -  TestTask 1 (b113d4d5-875e-45ef-b331-c0c883820999)","27.10.2020 13:21:11 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:11 -  with parameters: ","27.10.2020 13:21:11 - etf.testcases = *","27.10.2020 13:21:11 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:11 - Setting state to CREATED","27.10.2020 13:21:11 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:23 - Starting TestRun.383949d2-bf2d-463e-8450-770be5619fa3 at 2020-10-27T13:21:24Z","27.10.2020 13:21:24 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:24 - Project Properties: ","27.10.2020 13:21:24 - etf.testcases - * ","27.10.2020 13:21:24 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","27.10.2020 13:21:24 - username -  ","27.10.2020 13:21:24 - authUser -  ","27.10.2020 13:21:24 - authMethod - basic ","27.10.2020 13:21:24 - TestRunTask initialized","27.10.2020 13:21:56 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:22:06.851 retry condition not satisfied: response.val == response.max
13:22:06.851 sleeping before retry #10
13:22:11.852 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID383949d2-bf2d-463e-8450-770be5619fa3/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:12.364 response time in milliseconds: 511.85
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Tue, 27 Oct 2020 13:22:12 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"164","max":"165","log":["27.10.2020 13:21:11 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:11 UTC 2020)","27.10.2020 13:21:11 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:11 - Preparing 1 Test Task:","27.10.2020 13:21:11 -  TestTask 1 (b113d4d5-875e-45ef-b331-c0c883820999)","27.10.2020 13:21:11 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:11 -  with parameters: ","27.10.2020 13:21:11 - etf.testcases = *","27.10.2020 13:21:11 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:11 - Setting state to CREATED","27.10.2020 13:21:11 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:23 - Starting TestRun.383949d2-bf2d-463e-8450-770be5619fa3 at 2020-10-27T13:21:24Z","27.10.2020 13:21:24 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:24 - Project Properties: ","27.10.2020 13:21:24 - etf.testcases - * ","27.10.2020 13:21:24 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","27.10.2020 13:21:24 - username -  ","27.10.2020 13:21:24 - authUser -  ","27.10.2020 13:21:24 - authMethod - basic ","27.10.2020 13:21:24 - TestRunTask initialized","27.10.2020 13:21:56 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:22:12.364 retry condition not satisfied: response.val == response.max
13:22:12.364 sleeping before retry #11
13:22:17.365 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID383949d2-bf2d-463e-8450-770be5619fa3/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:17.866 response time in milliseconds: 500.11
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Tue, 27 Oct 2020 13:22:17 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:21:11 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:11 UTC 2020)","27.10.2020 13:21:11 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:11 - Preparing 1 Test Task:","27.10.2020 13:21:11 -  TestTask 1 (b113d4d5-875e-45ef-b331-c0c883820999)","27.10.2020 13:21:11 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:11 -  with parameters: ","27.10.2020 13:21:11 - etf.testcases = *","27.10.2020 13:21:11 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:11 - Setting state to CREATED","27.10.2020 13:21:11 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:23 - Starting TestRun.383949d2-bf2d-463e-8450-770be5619fa3 at 2020-10-27T13:21:24Z","27.10.2020 13:21:24 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:24 - Project Properties: ","27.10.2020 13:21:24 - etf.testcases - * ","27.10.2020 13:21:24 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml ","27.10.2020 13:21:24 - username -  ","27.10.2020 13:21:24 - authUser -  ","27.10.2020 13:21:24 - authMethod - basic ","27.10.2020 13:21:24 - TestRunTask initialized","27.10.2020 13:21:56 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:22:13 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:22:13 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:22:13 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:22:15 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:22:15 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

13:22:17.866 retry condition not satisfied: response.val == response.max
13:22:17.866 sleeping before retry #12
13:22:22.867 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID383949d2-bf2d-463e-8450-770be5619fa3/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:24.862 response time in milliseconds: 1994.32
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Tue, 27 Oct 2020 13:22:24 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:22:24.862 retry condition satisfied
* print response 0.000
13:22:24.862 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 1.910
13:22:24.863 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID383949d2-bf2d-463e-8450-770be5619fa3
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:26.772 response time in milliseconds: 1909.10
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Cache-Control: public, max-age=120
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Tue, 27 Oct 2020 13:22:26 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Last-Modified: Tue, 27 Oct 2020 13:22:08 GMT
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":0,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/.json"}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:22:26.773 [print]
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:22:26.773 [print]
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:71 - javascript evaluation failed: response.EtfItemCollection.testRuns.TestRun.status, TypeError: Cannot read property "TestRun" from undefined in <eval> at line number 1
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
41.387
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:15:40.139 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/rce/ps-ch/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 5.976
13:15:40.141 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 252
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/rce/ps-ch/atom/v1_0/index.xml"}}}

13:15:46.113 response time in milliseconds: 5105.31
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:15:45 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:15:43 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/ca62f0a7-8922-43a5-8174-fb16627693d7.json","testRuns":{"TestRun":{"id":"EIDca62f0a7-8922-43a5-8174-fb16627693d7","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:15:42.197Z","testTasks":{"TestTask":{"id":"EID12f45afe-0b1f-4929-a6be-0941cc456ed3","parent":{"ref":"EIDca62f0a7-8922-43a5-8174-fb16627693d7"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID3a0d5d32-952c-4c91-9b95-de6a8c547f62"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDca62f0a7-8922-43a5-8174-fb16627693d7/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID3a0d5d32-952c-4c91-9b95-de6a8c547f62","remoteResource":"https://service.pdok.nl/rce/ps-ch/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:15:40.586Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:15:41.157Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://service.pdok.nl/rce/ps-ch/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:15:46.117 [print] EIDca62f0a7-8922-43a5-8174-fb16627693d7
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:15:46.117 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:15:46.117 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:15:46.117 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/ca62f0a7-8922-43a5-8174-fb16627693d7.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:15:46.117 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDca62f0a7-8922-43a5-8174-fb16627693d7/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:15:46.118 [print] statuspath TestRuns/EIDca62f0a7-8922-43a5-8174-fb16627693d7
* print 'progresspath ', progresspath 0.000
13:15:46.118 [print] progresspath  TestRuns/EIDca62f0a7-8922-43a5-8174-fb16627693d7/progress
Given path progresspath 0.000
When method GET 0.518
13:15:46.119 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca62f0a7-8922-43a5-8174-fb16627693d7/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:46.636 response time in milliseconds: 516.79
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:15:46 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:15:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:15:42 UTC 2020)","27.10.2020 13:15:42 - Resolving Executable Test Suite dependencies","27.10.2020 13:15:42 - Preparing 1 Test Task:","27.10.2020 13:15:42 -  TestTask 1 (12f45afe-0b1f-4929-a6be-0941cc456ed3)","27.10.2020 13:15:42 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:15:42 -  with parameters: ","27.10.2020 13:15:42 - etf.testcases = *","27.10.2020 13:15:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:15:42 - Setting state to CREATED","27.10.2020 13:15:42 - Changed state from CREATED to INITIALIZING"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:15:46.637 [print] {
  "val": "0",
  "max": "240",
  "log": [
    "27.10.2020 13:15:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:15:42 UTC 2020)",
    "27.10.2020 13:15:42 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:15:42 - Preparing 1 Test Task:",
    "27.10.2020 13:15:42 -  TestTask 1 (12f45afe-0b1f-4929-a6be-0941cc456ed3)",
    "27.10.2020 13:15:42 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:15:42 -  with parameters: ",
    "27.10.2020 13:15:42 - etf.testcases = *",
    "27.10.2020 13:15:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:15:42 - Setting state to CREATED",
    "27.10.2020 13:15:42 - Changed state from CREATED to INITIALIZING"
  ]
}
Given path progresspath 0.000
When method GET 29.789
13:15:46.637 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca62f0a7-8922-43a5-8174-fb16627693d7/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:47.150 response time in milliseconds: 512.50
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:15:47 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:15:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:15:42 UTC 2020)","27.10.2020 13:15:42 - Resolving Executable Test Suite dependencies","27.10.2020 13:15:42 - Preparing 1 Test Task:","27.10.2020 13:15:42 -  TestTask 1 (12f45afe-0b1f-4929-a6be-0941cc456ed3)","27.10.2020 13:15:42 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:15:42 -  with parameters: ","27.10.2020 13:15:42 - etf.testcases = *","27.10.2020 13:15:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:15:42 - Setting state to CREATED","27.10.2020 13:15:42 - Changed state from CREATED to INITIALIZING"]}

13:15:47.151 retry condition not satisfied: response.val == response.max
13:15:47.151 sleeping before retry #1
13:15:52.152 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca62f0a7-8922-43a5-8174-fb16627693d7/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:52.678 response time in milliseconds: 525.94
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:15:52 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:15:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:15:42 UTC 2020)","27.10.2020 13:15:42 - Resolving Executable Test Suite dependencies","27.10.2020 13:15:42 - Preparing 1 Test Task:","27.10.2020 13:15:42 -  TestTask 1 (12f45afe-0b1f-4929-a6be-0941cc456ed3)","27.10.2020 13:15:42 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:15:42 -  with parameters: ","27.10.2020 13:15:42 - etf.testcases = *","27.10.2020 13:15:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:15:42 - Setting state to CREATED","27.10.2020 13:15:42 - Changed state from CREATED to INITIALIZING"]}

13:15:52.679 retry condition not satisfied: response.val == response.max
13:15:52.679 sleeping before retry #2
13:15:57.680 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca62f0a7-8922-43a5-8174-fb16627693d7/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:58.222 response time in milliseconds: 541.25
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:15:58 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["27.10.2020 13:15:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:15:42 UTC 2020)","27.10.2020 13:15:42 - Resolving Executable Test Suite dependencies","27.10.2020 13:15:42 - Preparing 1 Test Task:","27.10.2020 13:15:42 -  TestTask 1 (12f45afe-0b1f-4929-a6be-0941cc456ed3)","27.10.2020 13:15:42 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:15:42 -  with parameters: ","27.10.2020 13:15:42 - etf.testcases = *","27.10.2020 13:15:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:15:42 - Setting state to CREATED","27.10.2020 13:15:42 - Changed state from CREATED to INITIALIZING","27.10.2020 13:15:53 - Starting TestRun.ca62f0a7-8922-43a5-8174-fb16627693d7 at 2020-10-27T13:15:55Z","27.10.2020 13:15:55 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:15:55 - Project Properties: ","27.10.2020 13:15:55 - etf.testcases - * ","27.10.2020 13:15:55 - serviceEndpoint - https://service.pdok.nl/rce/ps-ch/atom/v1_0/index.xml ","27.10.2020 13:15:55 - username -  ","27.10.2020 13:15:55 - authUser -  ","27.10.2020 13:15:55 - authMethod - basic ","27.10.2020 13:15:55 - TestRunTask initialized"]}

13:15:58.222 retry condition not satisfied: response.val == response.max
13:15:58.222 sleeping before retry #3
13:16:03.223 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca62f0a7-8922-43a5-8174-fb16627693d7/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:03.730 response time in milliseconds: 505.77
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:16:03 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"120","max":"121","log":["27.10.2020 13:15:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:15:42 UTC 2020)","27.10.2020 13:15:42 - Resolving Executable Test Suite dependencies","27.10.2020 13:15:42 - Preparing 1 Test Task:","27.10.2020 13:15:42 -  TestTask 1 (12f45afe-0b1f-4929-a6be-0941cc456ed3)","27.10.2020 13:15:42 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:15:42 -  with parameters: ","27.10.2020 13:15:42 - etf.testcases = *","27.10.2020 13:15:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:15:42 - Setting state to CREATED","27.10.2020 13:15:42 - Changed state from CREATED to INITIALIZING","27.10.2020 13:15:53 - Starting TestRun.ca62f0a7-8922-43a5-8174-fb16627693d7 at 2020-10-27T13:15:55Z","27.10.2020 13:15:55 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:15:55 - Project Properties: ","27.10.2020 13:15:55 - etf.testcases - * ","27.10.2020 13:15:55 - serviceEndpoint - https://service.pdok.nl/rce/ps-ch/atom/v1_0/index.xml ","27.10.2020 13:15:55 - username -  ","27.10.2020 13:15:55 - authUser -  ","27.10.2020 13:15:55 - authMethod - basic ","27.10.2020 13:15:55 - TestRunTask initialized"]}

13:16:03.730 retry condition not satisfied: response.val == response.max
13:16:03.730 sleeping before retry #4
13:16:08.731 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca62f0a7-8922-43a5-8174-fb16627693d7/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:09.417 response time in milliseconds: 685.25
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:16:09 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"203","max":"204","log":["27.10.2020 13:15:42 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:15:42 UTC 2020)","27.10.2020 13:15:42 - Resolving Executable Test Suite dependencies","27.10.2020 13:15:42 - Preparing 1 Test Task:","27.10.2020 13:15:42 -  TestTask 1 (12f45afe-0b1f-4929-a6be-0941cc456ed3)","27.10.2020 13:15:42 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:15:42 -  with parameters: ","27.10.2020 13:15:42 - etf.testcases = *","27.10.2020 13:15:42 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:15:42 - Setting state to CREATED","27.10.2020 13:15:42 - Changed state from CREATED to INITIALIZING","27.10.2020 13:15:53 - Starting TestRun.ca62f0a7-8922-43a5-8174-fb16627693d7 at 2020-10-27T13:15:55Z","27.10.2020 13:15:55 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:15:55 - Project Properties: ","27.10.2020 13:15:55 - etf.testcases - * ","27.10.2020 13:15:55 - serviceEndpoint - https://service.pdok.nl/rce/ps-ch/atom/v1_0/index.xml ","27.10.2020 13:15:55 - username -  ","27.10.2020 13:15:55 - authUser -  ","27.10.2020 13:15:55 - authMethod - basic ","27.10.2020 13:15:55 - TestRunTask initialized","27.10.2020 13:16:04 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:16:06 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:06 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:07 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:08 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:08 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

13:16:09.420 retry condition not satisfied: response.val == response.max
13:16:09.420 sleeping before retry #5
13:16:14.423 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca62f0a7-8922-43a5-8174-fb16627693d7/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:16.426 response time in milliseconds: 2002.36
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:16:16 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:16:16.426 retry condition satisfied
* print response 0.000
13:16:16.426 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 5.072
13:16:16.427 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDca62f0a7-8922-43a5-8174-fb16627693d7
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:21.483 response time in milliseconds: 4112.07
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Cache-Control: public, max-age=120
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:16:20 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Last-Modified: Tue, 27 Oct 2020 13:16:05 GMT
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/ca62f0a7-8922-43a5-8174-fb16627693d7.json","testRuns":{"TestRun":{"id":"EIDca62f0a7-8922-43a5-8174-fb16627693d7","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:15:42.197Z","testTasks":{"TestTask":{"id":"EID12f45afe-0b1f-4929-a6be-0941cc456ed3","parent":{"ref":"EIDca62f0a7-8922-43a5-8174-fb16627693d7"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID3a0d5d32-952c-4c91-9b95-de6a8c547f62"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EIDcac72028-9175-48c8-ad83-6974052eeeee"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDca62f0a7-8922-43a5-8174-fb16627693d7/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID3a0d5d32-952c-4c91-9b95-de6a8c547f62","remoteResource":"https://service.pdok.nl/rce/ps-ch/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:15:40.586Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:15:41.157Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://service.pdok.nl/rce/ps-ch/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EIDcac72028-9175-48c8-ad83-6974052eeeee","testObject":{"ref":"EID3a0d5d32-952c-4c91-9b95-de6a8c547f62"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a33691e-0175-1000-975a-749fcdcdce10","testCaseResults":{"TestCaseResult":[{"id":"EID6a336958-0175-1000-9c79-51a36e328e1d","testStepResults":{"TestStepResult":[{"id":"EID6a336962-0175-1000-005c-5af4a81fbca8","parent":{"ref":"EID6a336958-0175-1000-9c79-51a36e328e1d"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:15:55Z","duration":18,"status":"PASSED"},{"id":"EID6a336974-0175-1000-4d30-1c0c2cdc64d1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a336a32-0175-1000-f510-626815288c46","parent":{"ref":"EID6a336974-0175-1000-4d30-1c0c2cdc64d1"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:15:55Z","duration":0,"status":"PASSED"},{"id":"EID6a336a32-0175-1000-33c8-c988da67f8d6","parent":{"ref":"EID6a336974-0175-1000-4d30-1c0c2cdc64d1"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:15:55Z","duration":0,"status":"PASSED"},{"id":"EID6a336a32-0175-1000-68a2-230f901122b3","parent":{"ref":"EID6a336974-0175-1000-4d30-1c0c2cdc64d1"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:15:55Z","duration":0,"status":"PASSED"},{"id":"EID6a336a32-0175-1000-4b6f-1f15e4b0e854","parent":{"ref":"EID6a336974-0175-1000-4d30-1c0c2cdc64d1"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:15:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb69742c6-a728-4526-9dd0-41fc4956766d"},{"ref":"EID15c0c951-ee64-4921-a9cc-3863e04ef9aa"},{"ref":"EID2e12239e-a9e3-4399-b231-e8e11ef40fb5"}]},"parent":{"ref":"EID6a336958-0175-1000-9c79-51a36e328e1d"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:15:55Z","duration":88,"status":"PASSED"}]},"parent":{"ref":"EID6a33691e-0175-1000-975a-749fcdcdce10"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:15:55Z","duration":219,"status":"PASSED"},{"id":"EID6a336a33-0175-1000-536c-d92e1362745b","testStepResults":{"TestStepResult":{"id":"EID6a336a33-0175-1000-685a-c8b5fec332ea","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a336aae-0175-1000-608b-976adb440344","parent":{"ref":"EID6a336a33-0175-1000-685a-c8b5fec332ea"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:15:55Z","duration":0,"status":"PASSED"},{"id":"EID6a336aae-0175-1000-b36a-9f4f68f2d3be","parent":{"ref":"EID6a336a33-0175-1000-685a-c8b5fec332ea"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:15:55Z","duration":0,"status":"PASSED"},{"id":"EID6a336aae-0175-1000-36c3-d963baaed93c","parent":{"ref":"EID6a336a33-0175-1000-685a-c8b5fec332ea"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:15:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDeff2df7a-83d2-4f2c-9fcc-413e7ee6c099"},{"ref":"EIDfbe29c9d-5847-4f6c-85a0-5e75dfd32b0f"},{"ref":"EID550f5940-71bb-4108-bcc6-43574aba8d2b"}]},"parent":{"ref":"EID6a336a33-0175-1000-536c-d92e1362745b"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:15:55Z","duration":28,"status":"PASSED"}},"parent":{"ref":"EID6a33691e-0175-1000-975a-749fcdcdce10"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:15:55Z","duration":124,"status":"PASSED"}]},"parent":{"ref":"EIDcac72028-9175-48c8-ad83-6974052eeeee"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:15:55Z","duration":401,"status":"PASSED"},{"id":"EID6a336aaf-0175-1000-7d93-e8d2440a68d5","testCaseResults":{"TestCaseResult":[{"id":"EID6a336aaf-0175-1000-e728-3a67db997152","testStepResults":{"TestStepResult":[{"id":"EID6a336aaf-0175-1000-5542-f69e35ec7ba3","parent":{"ref":"EID6a336aaf-0175-1000-e728-3a67db997152"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:15:55Z","duration":28,"status":"PASSED"},{"id":"EID6a336aaf-0175-1000-2d69-547ed9744486","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a336bdd-0175-1000-01bc-c62677a83ee5","parent":{"ref":"EID6a336aaf-0175-1000-2d69-547ed9744486"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:15:56Z","duration":0,"status":"PASSED"},{"id":"EID6a336bdd-0175-1000-e8a7-0bad9695edc3","parent":{"ref":"EID6a336aaf-0175-1000-2d69-547ed9744486"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:15:56Z","duration":0,"status":"PASSED"},{"id":"EID6a336bde-0175-1000-4767-87cfa3bbd5af","parent":{"ref":"EID6a336aaf-0175-1000-2d69-547ed9744486"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:15:56Z","duration":0,"status":"PASSED"},{"id":"EID6a336bde-0175-1000-57f4-c97a23b1190d","parent":{"ref":"EID6a336aaf-0175-1000-2d69-547ed9744486"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:15:56Z","duration":0,"status":"PASSED"},{"id":"EID6a336bde-0175-1000-05da-301f844b77c0","parent":{"ref":"EID6a336aaf-0175-1000-2d69-547ed9744486"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:15:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7596f9cf-13a8-4a65-b7ef-d27622ab7489"},{"ref":"EID774e4ae8-a1e2-4a28-b1b6-ae51bf9c51c9"},{"ref":"EID09b067fd-83b5-46c6-88d0-5f17d24ce5ed"}]},"parent":{"ref":"EID6a336aaf-0175-1000-e728-3a67db997152"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:15:55Z","duration":53,"status":"PASSED"}]},"parent":{"ref":"EID6a336aaf-0175-1000-7d93-e8d2440a68d5"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:15:55Z","duration":303,"status":"PASSED"},{"id":"EID6a336bde-0175-1000-c7e7-6ca92b5db1f6","testStepResults":{"TestStepResult":[{"id":"EID6a336bde-0175-1000-abf1-771485b6071d","attachments":{"attachment":[{"ref":"EID2cd2ab3e-d015-4c2b-87a6-dcdcb44ccedb"},{"ref":"EIDc09663e8-36e2-4c1a-bf32-ffd25307e879"}]},"parent":{"ref":"EID6a336bde-0175-1000-c7e7-6ca92b5db1f6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:15:56Z","duration":76,"status":"PASSED"},{"id":"EID6a336c63-0175-1000-16ab-f14ee6620556","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a336cc7-0175-1000-192a-e9d2f764eadc","parent":{"ref":"EID6a336c63-0175-1000-16ab-f14ee6620556"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:15:56Z","duration":0,"status":"PASSED"},{"id":"EID6a336cc7-0175-1000-9e92-1507eeffca3a","parent":{"ref":"EID6a336c63-0175-1000-16ab-f14ee6620556"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:15:56Z","duration":0,"status":"PASSED"},{"id":"EID6a336cc7-0175-1000-a46c-f280a43e4340","parent":{"ref":"EID6a336c63-0175-1000-16ab-f14ee6620556"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:15:56Z","duration":0,"status":"PASSED"},{"id":"EID6a336cc7-0175-1000-13e6-7b80d554461c","parent":{"ref":"EID6a336c63-0175-1000-16ab-f14ee6620556"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:15:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID10c7995e-a5ef-4c4a-8fe0-1481ef7075f1"},{"ref":"EID3e0086ad-40bf-4c07-870d-70c72f9ee34c"},{"ref":"EIDab712c81-1c03-487a-b565-46d3ba867cbb"}]},"parent":{"ref":"EID6a336bde-0175-1000-c7e7-6ca92b5db1f6"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:15:56Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6a336aaf-0175-1000-7d93-e8d2440a68d5"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:15:56Z","duration":233,"status":"PASSED"},{"id":"EID6a336cc7-0175-1000-216c-fa7392fdcb06","testStepResults":{"TestStepResult":[{"id":"EID6a336cc7-0175-1000-d6ac-173d0c1a0054","attachments":{"attachment":[{"ref":"EIDaca16b6a-6a68-4ca3-9529-c0e78a7eb136"},{"ref":"EIDad03b350-662a-4d17-be4d-6b43812f1241"}]},"parent":{"ref":"EID6a336cc7-0175-1000-216c-fa7392fdcb06"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:15:56Z","duration":116,"status":"PASSED"},{"id":"EID6a336dbf-0175-1000-bd53-0a8b8e29f9fe","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33711b-0175-1000-4b7c-da96470db8ce","parent":{"ref":"EID6a336dbf-0175-1000-bd53-0a8b8e29f9fe"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:15:57Z","duration":0,"status":"PASSED"},{"id":"EID6a33711b-0175-1000-6b4c-8ddde0a03cdc","parent":{"ref":"EID6a336dbf-0175-1000-bd53-0a8b8e29f9fe"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:15:57Z","duration":0,"status":"PASSED"},{"id":"EID6a33711b-0175-1000-6cd5-f5004a1f95fd","parent":{"ref":"EID6a336dbf-0175-1000-bd53-0a8b8e29f9fe"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:15:57Z","duration":0,"status":"PASSED"},{"id":"EID6a33711b-0175-1000-40b6-1a93080c564f","parent":{"ref":"EID6a336dbf-0175-1000-bd53-0a8b8e29f9fe"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:15:57Z","duration":0,"status":"PASSED"},{"id":"EID6a33711b-0175-1000-df94-20953db4be0f","parent":{"ref":"EID6a336dbf-0175-1000-bd53-0a8b8e29f9fe"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:15:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6a165adf-3c5a-4774-be45-417a0aff11c3"},{"ref":"EID64d22676-a8e5-4ff2-ab9c-5135519ef903"},{"ref":"EID65e9ea46-e5af-441a-8a74-3f49df7a3247"}]},"parent":{"ref":"EID6a336cc7-0175-1000-216c-fa7392fdcb06"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:15:56Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6a336aaf-0175-1000-7d93-e8d2440a68d5"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:15:56Z","duration":1553,"status":"PASSED"},{"id":"EID6a3372e1-0175-1000-989e-650ed74c3d53","testStepResults":{"TestStepResult":[{"id":"EID6a3372e1-0175-1000-1ea8-c3cd1fcccf62","attachments":{"attachment":[{"ref":"EIDa284cd1b-89e6-4bdf-b371-a5346f1c8be5"},{"ref":"EIDacb4dfcb-bed4-4c0f-8dbc-6e9956369b21"}]},"parent":{"ref":"EID6a3372e1-0175-1000-989e-650ed74c3d53"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:15:58Z","duration":70,"status":"PASSED"},{"id":"EID6a3373c9-0175-1000-8de2-c15511030cc3","parent":{"ref":"EID6a3372e1-0175-1000-989e-650ed74c3d53"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:15:58Z","duration":0,"status":"PASSED"},{"id":"EID6a3373d3-0175-1000-8358-eb8bcf21ec36","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33749a-0175-1000-6447-d6a92bb2d831","parent":{"ref":"EID6a3373d3-0175-1000-8358-eb8bcf21ec36"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:15:58Z","duration":0,"status":"PASSED"},{"id":"EID6a33749a-0175-1000-04e3-61615b914da2","parent":{"ref":"EID6a3373d3-0175-1000-8358-eb8bcf21ec36"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:15:58Z","duration":0,"status":"PASSED"},{"id":"EID6a33749a-0175-1000-c9f7-69760dde79f9","parent":{"ref":"EID6a3373d3-0175-1000-8358-eb8bcf21ec36"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:15:58Z","duration":0,"status":"PASSED"},{"id":"EID6a33749a-0175-1000-047b-620bd98591cc","parent":{"ref":"EID6a3373d3-0175-1000-8358-eb8bcf21ec36"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:15:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc9dbd398-7c7a-4ae0-a58c-c11b66335488"},{"ref":"EIDd2ae4701-40be-4554-9dcc-398dd6feeb4f"},{"ref":"EID9c5c2a75-d309-4db1-8e17-6c73d6b088b6"}]},"parent":{"ref":"EID6a3372e1-0175-1000-989e-650ed74c3d53"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:15:58Z","duration":43,"status":"PASSED"},{"id":"EID6a33749a-0175-1000-8df6-5f71cf31ae93","attachments":{"attachment":{"ref":"EID7816f26b-f305-48b6-9ac7-7acdb46abc6d"}},"parent":{"ref":"EID6a3372e1-0175-1000-989e-650ed74c3d53"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:15:58Z","duration":1,"status":"PASSED"},{"id":"EID6a3374a9-0175-1000-9d59-b8417bfb3954","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3375c8-0175-1000-fbb4-61ff2cbf1129","parent":{"ref":"EID6a3374a9-0175-1000-9d59-b8417bfb3954"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:15:58Z","duration":0,"status":"PASSED"},{"id":"EID6a3375c8-0175-1000-047e-3fab754b0810","parent":{"ref":"EID6a3374a9-0175-1000-9d59-b8417bfb3954"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:15:58Z","duration":0,"status":"PASSED"},{"id":"EID6a3375c8-0175-1000-a208-c2d47748cd69","parent":{"ref":"EID6a3374a9-0175-1000-9d59-b8417bfb3954"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:15:58Z","duration":0,"status":"PASSED"},{"id":"EID6a3375c8-0175-1000-14d8-1433496d3cfe","parent":{"ref":"EID6a3374a9-0175-1000-9d59-b8417bfb3954"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:15:58Z","duration":0,"status":"PASSED"},{"id":"EID6a3375c8-0175-1000-eb06-86dc7c821a9b","parent":{"ref":"EID6a3374a9-0175-1000-9d59-b8417bfb3954"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:15:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID663928ae-2ee7-40d7-b0a5-afb92d351cb7"},{"ref":"EID3aacc323-b996-4497-989e-083a8407928e"},{"ref":"EID3b1a504b-1cbe-4327-9144-1815a4186d0e"}]},"parent":{"ref":"EID6a3372e1-0175-1000-989e-650ed74c3d53"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:15:58Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6a336aaf-0175-1000-7d93-e8d2440a68d5"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:15:58Z","duration":743,"status":"PASSED"},{"id":"EID6a3375c9-0175-1000-432a-f1814023d576","testStepResults":{"TestStepResult":[{"id":"EID6a3375c9-0175-1000-bc4b-bb5cc484d3f5","attachments":{"attachment":[{"ref":"EID9625428c-f6cb-4a17-aabc-4889ce410079"},{"ref":"EID43e3ba54-7518-4f57-a159-77143126953a"}]},"parent":{"ref":"EID6a3375c9-0175-1000-432a-f1814023d576"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:15:58Z","duration":252,"status":"PASSED"},{"id":"EID6a3376ed-0175-1000-b56c-86c261a94f9f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a337752-0175-1000-eb0e-795c8497c22e","parent":{"ref":"EID6a3376ed-0175-1000-b56c-86c261a94f9f"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:15:59Z","duration":0,"status":"PASSED"},{"id":"EID6a337752-0175-1000-f3bc-c2ab7064a023","parent":{"ref":"EID6a3376ed-0175-1000-b56c-86c261a94f9f"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:15:59Z","duration":0,"status":"PASSED"},{"id":"EID6a337752-0175-1000-d66c-3b3fc5176a50","parent":{"ref":"EID6a3376ed-0175-1000-b56c-86c261a94f9f"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:15:59Z","duration":0,"status":"PASSED"},{"id":"EID6a337752-0175-1000-b9c8-5bbe2cfa4f26","parent":{"ref":"EID6a3376ed-0175-1000-b56c-86c261a94f9f"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:15:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2533c2fc-11c2-4dfa-8cb4-47a7b024926e"},{"ref":"EID475f3003-1d56-4879-9f98-0a15bbd4dd36"},{"ref":"EID8da03f10-528e-4e71-a7c2-37f3e8f73831"}]},"parent":{"ref":"EID6a3375c9-0175-1000-432a-f1814023d576"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:15:59Z","duration":29,"status":"PASSED"}]},"parent":{"ref":"EID6a336aaf-0175-1000-7d93-e8d2440a68d5"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:15:58Z","duration":393,"status":"PASSED"},{"id":"EID6a337753-0175-1000-0ba6-68b5631c75d2","testStepResults":{"TestStepResult":[{"id":"EID6a337753-0175-1000-7695-18cb9b1df073","attachments":{"attachment":[{"ref":"EIDfa8ea716-765b-4763-bbda-f224c9641600"},{"ref":"EID7e01fb64-bb73-4421-a0ca-7b0fc8b3939f"}]},"parent":{"ref":"EID6a337753-0175-1000-0ba6-68b5631c75d2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:15:59Z","duration":221,"status":"PASSED"},{"id":"EID6a33787a-0175-1000-ad41-3cd31c9807e5","parent":{"ref":"EID6a337753-0175-1000-0ba6-68b5631c75d2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:15:59Z","duration":0,"status":"PASSED"},{"id":"EID6a33787a-0175-1000-6aab-9dba24066af8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33791d-0175-1000-0da8-6a7d984f940e","parent":{"ref":"EID6a33787a-0175-1000-6aab-9dba24066af8"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:15:59Z","duration":0,"status":"PASSED"},{"id":"EID6a33791d-0175-1000-798a-c0873a9ac374","parent":{"ref":"EID6a33787a-0175-1000-6aab-9dba24066af8"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:15:59Z","duration":0,"status":"PASSED"},{"id":"EID6a33791d-0175-1000-ca4f-230f0fa709f4","parent":{"ref":"EID6a33787a-0175-1000-6aab-9dba24066af8"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:15:59Z","duration":0,"status":"PASSED"},{"id":"EID6a33791d-0175-1000-578c-aa8d64945e6e","parent":{"ref":"EID6a33787a-0175-1000-6aab-9dba24066af8"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:15:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDeef002ce-5c92-4218-9910-0ee7f70cfafd"},{"ref":"EIDe4bac67b-62cb-44cc-a9b7-ea5ca2192754"},{"ref":"EID4a239a59-936b-452e-8926-bf2149f0cbeb"}]},"parent":{"ref":"EID6a337753-0175-1000-0ba6-68b5631c75d2"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:15:59Z","duration":21,"status":"PASSED"},{"id":"EID6a33791e-0175-1000-db77-6333afc16a7b","attachments":{"attachment":{"ref":"EID2b264a59-3478-407c-b27c-56db44e1eaec"}},"parent":{"ref":"EID6a337753-0175-1000-0ba6-68b5631c75d2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:15:59Z","duration":0,"status":"PASSED"},{"id":"EID6a33792a-0175-1000-f126-4a064e2eed68","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3379f0-0175-1000-c926-aa130f6d1a10","parent":{"ref":"EID6a33792a-0175-1000-f126-4a064e2eed68"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:15:59Z","duration":0,"status":"PASSED"},{"id":"EID6a3379f0-0175-1000-afed-d7d152cd7b54","parent":{"ref":"EID6a33792a-0175-1000-f126-4a064e2eed68"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:15:59Z","duration":0,"status":"PASSED"},{"id":"EID6a3379f0-0175-1000-358c-7eb4e8d28446","parent":{"ref":"EID6a33792a-0175-1000-f126-4a064e2eed68"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:15:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDca4b1b47-f499-4a43-b709-3e5600803012"},{"ref":"EID1154075f-d1e3-4f8d-8947-c49c8ab90a30"},{"ref":"EIDa2aa0877-22b7-4278-b6ec-03ed3b590fb8"}]},"parent":{"ref":"EID6a337753-0175-1000-0ba6-68b5631c75d2"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:15:59Z","duration":79,"status":"PASSED"},{"id":"EID6a3379f1-0175-1000-955d-7575df7f4c47","attachments":{"attachment":{"ref":"EIDcbd0047c-b9de-4223-ac2c-22ccd53b3059"}},"parent":{"ref":"EID6a337753-0175-1000-0ba6-68b5631c75d2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-27T13:15:59Z","duration":0,"status":"PASSED"},{"id":"EID6a3379fd-0175-1000-8281-67a22630e4a2","attachments":{"attachment":{"ref":"EID46f619cf-4d51-43ce-970f-a98f13164153"}},"parent":{"ref":"EID6a337753-0175-1000-0ba6-68b5631c75d2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-27T13:15:59Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a336aaf-0175-1000-7d93-e8d2440a68d5"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:15:59Z","duration":697,"status":"PASSED"},{"id":"EID6a337a0c-0175-1000-3f13-27676bc6846c","testStepResults":{"TestStepResult":[{"id":"EID6a337a0c-0175-1000-b90b-38c6d95e48b2","attachments":{"attachment":[{"ref":"EID91e7c4dc-a202-48ed-8793-31ea522c93ba"},{"ref":"EIDaf1c1a07-4db7-41bb-b53c-5a3ef889f64d"}]},"parent":{"ref":"EID6a337a0c-0175-1000-3f13-27676bc6846c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:15:59Z","duration":90,"status":"PASSED"},{"id":"EID6a337a8f-0175-1000-8c9f-af87d4adca3a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a337afc-0175-1000-613d-db9fd37d1f64","parent":{"ref":"EID6a337a8f-0175-1000-8c9f-af87d4adca3a"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:16:00Z","duration":0,"status":"PASSED"},{"id":"EID6a337afc-0175-1000-500a-0bf17d5957e9","parent":{"ref":"EID6a337a8f-0175-1000-8c9f-af87d4adca3a"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:16:00Z","duration":0,"status":"PASSED"},{"id":"EID6a337afc-0175-1000-649d-f591c6aae994","parent":{"ref":"EID6a337a8f-0175-1000-8c9f-af87d4adca3a"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:16:00Z","duration":0,"status":"PASSED"},{"id":"EID6a337afc-0175-1000-b845-9df23a133021","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a337a8f-0175-1000-8c9f-af87d4adca3a"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:16:00Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID0be9a590-363f-40ae-8890-2d819ba4091c"},{"ref":"EID4b8be115-034e-45ab-954c-7ef404d262c4"},{"ref":"EID994daa76-3119-490f-a2a1-f362c4d18e80"}]},"parent":{"ref":"EID6a337a0c-0175-1000-3f13-27676bc6846c"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:16:00Z","duration":21,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a336aaf-0175-1000-7d93-e8d2440a68d5"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:15:59Z","duration":240,"status":"PASSED_MANUAL"},{"id":"EID6a337afd-0175-1000-c79d-10987b90dfe6","testStepResults":{"TestStepResult":{"id":"EID6a337afd-0175-1000-cc35-3d572e9969f4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a337ba5-0175-1000-461d-2a2219f8a1d5","parent":{"ref":"EID6a337afd-0175-1000-cc35-3d572e9969f4"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:16:00Z","duration":0,"status":"PASSED"},{"id":"EID6a337ba5-0175-1000-a5b5-bbec1970c80e","parent":{"ref":"EID6a337afd-0175-1000-cc35-3d572e9969f4"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:16:00Z","duration":0,"status":"PASSED"},{"id":"EID6a337ba5-0175-1000-1563-cc388b14420c","parent":{"ref":"EID6a337afd-0175-1000-cc35-3d572e9969f4"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:16:00Z","duration":0,"status":"PASSED"},{"id":"EID6a337ba5-0175-1000-3ace-9d43236d0f2b","parent":{"ref":"EID6a337afd-0175-1000-cc35-3d572e9969f4"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:16:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa79ba3f9-e2e2-4e02-8924-c1d43a507dca"},{"ref":"EID0454a54c-0d02-4c30-9d55-7422d0bfa3b0"},{"ref":"EIDfb71959e-72ef-4cd7-9450-a73e159ac8bd"}]},"parent":{"ref":"EID6a337afd-0175-1000-c79d-10987b90dfe6"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:16:00Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6a336aaf-0175-1000-7d93-e8d2440a68d5"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:16:00Z","duration":168,"status":"PASSED"},{"id":"EID6a337ba5-0175-1000-09c3-14e5e74a43f4","testStepResults":{"TestStepResult":{"id":"EID6a337ba6-0175-1000-7fd0-06b407c3cfc8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a337c17-0175-1000-91c1-4fd3d54b5e8d","parent":{"ref":"EID6a337ba6-0175-1000-7fd0-06b407c3cfc8"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:16:00Z","duration":0,"status":"PASSED"},{"id":"EID6a337c17-0175-1000-e411-2ba50d15971d","parent":{"ref":"EID6a337ba6-0175-1000-7fd0-06b407c3cfc8"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:16:00Z","duration":0,"status":"PASSED"},{"id":"EID6a337c17-0175-1000-b9ee-0633f6411881","parent":{"ref":"EID6a337ba6-0175-1000-7fd0-06b407c3cfc8"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:16:00Z","duration":0,"status":"PASSED"},{"id":"EID6a337c17-0175-1000-7c72-ba09ce24bb49","parent":{"ref":"EID6a337ba6-0175-1000-7fd0-06b407c3cfc8"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:16:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd90be212-eb4b-4474-9ba7-ce28b081d053"},{"ref":"EID64a31963-e339-496a-95dc-3a8cb4b0a867"},{"ref":"EIDe3f98998-2580-43e5-95c3-dd53d8e2e033"}]},"parent":{"ref":"EID6a337ba5-0175-1000-09c3-14e5e74a43f4"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:16:00Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6a336aaf-0175-1000-7d93-e8d2440a68d5"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:16:00Z","duration":114,"status":"PASSED"},{"id":"EID6a337c17-0175-1000-361d-a8df80419176","testStepResults":{"TestStepResult":[{"id":"EID6a337c17-0175-1000-3efd-0b2ea8b036cf","attachments":{"attachment":[{"ref":"EIDd4babcb7-1eda-4be6-a9ad-94cedce00034"},{"ref":"EIDfd2c8104-a20e-4907-86cd-d6751642ced4"},{"ref":"EID5506d481-e14e-4d29-81fa-e76404971ca7"},{"ref":"EID3b851a6e-a9b4-433c-b2b1-70c99ba6db14"},{"ref":"EID33e96d42-0228-4d72-ba21-53f77c85bb18"},{"ref":"EID26d000c0-2193-4719-b794-35f928322c46"},{"ref":"EID901b734c-b1e7-46f2-a72b-0e9f4df8fc42"},{"ref":"EID6281388c-48cc-4f7a-b807-84eb88cf4c36"},{"ref":"EID1ddbd611-d1d5-43dc-bb7d-a7a9b7bd0984"},{"ref":"EIDc45ddb23-98e9-46ab-a0b3-316e56e29581"},{"ref":"EIDf7f8f5ce-5fae-4a1d-ad89-83fd28dbae63"},{"ref":"EIDf918566f-d414-430e-b412-4b4fd9ca1527"}]},"parent":{"ref":"EID6a337c17-0175-1000-361d-a8df80419176"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:16:00Z","duration":318,"status":"PASSED"},{"id":"EID6a337ed8-0175-1000-1cb3-38c31e260ca3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a337f4a-0175-1000-2a2a-1cb3f55c4741","parent":{"ref":"EID6a337ed8-0175-1000-1cb3-38c31e260ca3"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6a337f4a-0175-1000-1931-917707a710a6","parent":{"ref":"EID6a337ed8-0175-1000-1cb3-38c31e260ca3"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6a337f4a-0175-1000-fce7-95d903f9c33a","parent":{"ref":"EID6a337ed8-0175-1000-1cb3-38c31e260ca3"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6a337f4a-0175-1000-c2c4-3a2f0f7a3093","parent":{"ref":"EID6a337ed8-0175-1000-1cb3-38c31e260ca3"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6a337f4a-0175-1000-b25d-5cfb87185b90","parent":{"ref":"EID6a337ed8-0175-1000-1cb3-38c31e260ca3"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbe12160b-e386-418c-92c4-adc7d4c9c994"},{"ref":"EID67314a4a-6f1f-4823-9b74-b8fbb45a0a28"},{"ref":"EIDc80b0f23-c5c8-46b5-88f1-2d2675c454c9"}]},"parent":{"ref":"EID6a337c17-0175-1000-361d-a8df80419176"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-27T13:16:01Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6a336aaf-0175-1000-7d93-e8d2440a68d5"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:16:00Z","duration":819,"status":"PASSED"},{"id":"EID6a337f4b-0175-1000-0409-e0d67c5ad24f","testStepResults":{"TestStepResult":{"id":"EID6a337f4b-0175-1000-7a49-815e5fdf3bca","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a337fc9-0175-1000-0968-e377d6a8861f","parent":{"ref":"EID6a337f4b-0175-1000-7a49-815e5fdf3bca"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6a337fc9-0175-1000-9c8a-7d2d0aeabdcf","parent":{"ref":"EID6a337f4b-0175-1000-7a49-815e5fdf3bca"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6a337fc9-0175-1000-8cd8-8be12bdac37b","parent":{"ref":"EID6a337f4b-0175-1000-7a49-815e5fdf3bca"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6a337fc9-0175-1000-187d-13bdafa524e0","parent":{"ref":"EID6a337f4b-0175-1000-7a49-815e5fdf3bca"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa1695220-3142-43da-abeb-5f37e987aecc"},{"ref":"EID7cfa17db-65db-49a9-96f1-913686d676f0"},{"ref":"EIDdde722f0-eb17-4774-8daa-43b79d074450"}]},"parent":{"ref":"EID6a337f4b-0175-1000-0409-e0d67c5ad24f"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:16:01Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6a336aaf-0175-1000-7d93-e8d2440a68d5"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:16:01Z","duration":127,"status":"PASSED"},{"id":"EID6a337fca-0175-1000-078f-e1837cb31f28","testStepResults":{"TestStepResult":{"id":"EID6a337fca-0175-1000-df63-5018a07b93c8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a338078-0175-1000-edb5-359c48144e85","parent":{"ref":"EID6a337fca-0175-1000-df63-5018a07b93c8"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6a338078-0175-1000-085e-67ba02afb252","parent":{"ref":"EID6a337fca-0175-1000-df63-5018a07b93c8"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6a338078-0175-1000-9c37-cd982bf58c24","parent":{"ref":"EID6a337fca-0175-1000-df63-5018a07b93c8"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6a338078-0175-1000-14dd-85961b99b5fa","parent":{"ref":"EID6a337fca-0175-1000-df63-5018a07b93c8"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6a338078-0175-1000-afaf-4fb2fd4f319c","parent":{"ref":"EID6a337fca-0175-1000-df63-5018a07b93c8"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6a338078-0175-1000-59ff-c15b1e35c1e6","parent":{"ref":"EID6a337fca-0175-1000-df63-5018a07b93c8"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID14d986ef-67ae-4af5-8187-a3514ccbf24b"},{"ref":"EID9ef1172c-dee9-4eed-a000-851efd875731"},{"ref":"EID140d2730-83f0-4750-ae5c-ee94eacb3453"}]},"parent":{"ref":"EID6a337fca-0175-1000-078f-e1837cb31f28"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:16:01Z","duration":24,"status":"PASSED"}},"parent":{"ref":"EID6a336aaf-0175-1000-7d93-e8d2440a68d5"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:16:01Z","duration":174,"status":"PASSED"},{"id":"EID6a338078-0175-1000-9ab2-d5e228569a9c","testStepResults":{"TestStepResult":{"id":"EID6a338078-0175-1000-7687-c6fc3212d216","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33810d-0175-1000-2cd3-caf2a12ca543","parent":{"ref":"EID6a338078-0175-1000-7687-c6fc3212d216"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6a33810d-0175-1000-b9e3-f26c2b68a5da","parent":{"ref":"EID6a338078-0175-1000-7687-c6fc3212d216"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6a33810d-0175-1000-5f86-f5f1bb8363af","parent":{"ref":"EID6a338078-0175-1000-7687-c6fc3212d216"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6a33810d-0175-1000-dfb5-e3a91e7d5d84","parent":{"ref":"EID6a338078-0175-1000-7687-c6fc3212d216"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6a33810d-0175-1000-de08-57ce4af4d2d4","parent":{"ref":"EID6a338078-0175-1000-7687-c6fc3212d216"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6a33810d-0175-1000-2070-cefaa5dabf5f","parent":{"ref":"EID6a338078-0175-1000-7687-c6fc3212d216"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb33f197a-db13-446c-a603-386e5cfe5cee"},{"ref":"EIDb18b0e53-cb0f-44a7-8a51-e967fa941117"},{"ref":"EIDb7b0e7dd-92d8-492e-b22c-95dc37a01a77"}]},"parent":{"ref":"EID6a338078-0175-1000-9ab2-d5e228569a9c"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:16:01Z","duration":33,"status":"PASSED"}},"parent":{"ref":"EID6a336aaf-0175-1000-7d93-e8d2440a68d5"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:16:01Z","duration":149,"status":"PASSED"},{"id":"EID6a33810d-0175-1000-eeec-bf3cef0daa8e","testStepResults":{"TestStepResult":{"id":"EID6a33810d-0175-1000-7356-0d7c965e57df","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33819f-0175-1000-63de-36dc32ac9af8","parent":{"ref":"EID6a33810d-0175-1000-7356-0d7c965e57df"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6a33819f-0175-1000-dc8b-b1dba52ee919","parent":{"ref":"EID6a33810d-0175-1000-7356-0d7c965e57df"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6a33819f-0175-1000-1c2e-b1988f878afe","parent":{"ref":"EID6a33810d-0175-1000-7356-0d7c965e57df"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"},{"id":"EID6a33819f-0175-1000-ab81-255d9554dd75","parent":{"ref":"EID6a33810d-0175-1000-7356-0d7c965e57df"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:16:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7f32a776-fa39-461b-89bc-6e8b4da48c52"},{"ref":"EIDfac6ce5b-7632-4612-931c-4d664bd1b592"},{"ref":"EID96d03d69-9ec0-4900-bff4-f1daafe70375"}]},"parent":{"ref":"EID6a33810d-0175-1000-eeec-bf3cef0daa8e"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:16:01Z","duration":25,"status":"PASSED"}},"parent":{"ref":"EID6a336aaf-0175-1000-7d93-e8d2440a68d5"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:16:01Z","duration":156,"status":"PASSED"},{"id":"EID6a3381aa-0175-1000-3bbe-9953a9adac30","testStepResults":{"TestStepResult":[{"id":"EID6a3381aa-0175-1000-ce92-1126345ab1a1","attachments":{"attachment":[{"ref":"EID69933817-bc3f-431e-a913-28b5a4ea20e4"},{"ref":"EIDae0d3cf9-dd11-4466-8af5-253b9ba5b0f3"},{"ref":"EIDab641061-50d9-40a2-8de5-1f2e3165498e"},{"ref":"EIDa101ac94-8ef5-4f41-ad27-0eda6ee50eb6"}]},"parent":{"ref":"EID6a3381aa-0175-1000-3bbe-9953a9adac30"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:16:01Z","duration":180,"status":"PASSED"},{"id":"EID6a338292-0175-1000-1f6b-23c47cf677d9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a338311-0175-1000-8918-17b54a3589c8","parent":{"ref":"EID6a338292-0175-1000-1f6b-23c47cf677d9"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6a338311-0175-1000-1d12-91975cbae950","parent":{"ref":"EID6a338292-0175-1000-1f6b-23c47cf677d9"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6a338311-0175-1000-5d20-22b3a8056603","parent":{"ref":"EID6a338292-0175-1000-1f6b-23c47cf677d9"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6a338311-0175-1000-6d7a-bbdcbe37898d","parent":{"ref":"EID6a338292-0175-1000-1f6b-23c47cf677d9"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7080b2db-ef09-41c8-a868-d0d29bc15d24"},{"ref":"EID76d8ea10-2c61-46aa-80eb-182542bc118a"},{"ref":"EID56ad155d-04e5-406f-90ce-838e5ec2493b"}]},"parent":{"ref":"EID6a3381aa-0175-1000-3bbe-9953a9adac30"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:16:02Z","duration":62,"status":"PASSED"}]},"parent":{"ref":"EID6a336aaf-0175-1000-7d93-e8d2440a68d5"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:16:01Z","duration":372,"status":"PASSED"},{"id":"EID6a33831e-0175-1000-5200-48f0663faa0f","testStepResults":{"TestStepResult":{"id":"EID6a33831e-0175-1000-0c48-93a5d4cb1ffe","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a338393-0175-1000-a957-90a4cccdec40","parent":{"ref":"EID6a33831e-0175-1000-0c48-93a5d4cb1ffe"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6a338393-0175-1000-9bfd-77e9262f1c9b","parent":{"ref":"EID6a33831e-0175-1000-0c48-93a5d4cb1ffe"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6a338393-0175-1000-ccd1-11fe29d63fb6","parent":{"ref":"EID6a33831e-0175-1000-0c48-93a5d4cb1ffe"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6a338393-0175-1000-4bd9-85a6d9040f38","parent":{"ref":"EID6a33831e-0175-1000-0c48-93a5d4cb1ffe"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa24fdaa3-a61c-48ab-b577-7f9e61ef7d43"},{"ref":"EID200b4f7c-954e-4d35-a6f0-341f0d54d99d"},{"ref":"EID66a09a37-772f-480e-834e-246643f2846f"}]},"parent":{"ref":"EID6a33831e-0175-1000-5200-48f0663faa0f"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:16:02Z","duration":26,"status":"PASSED"}},"parent":{"ref":"EID6a336aaf-0175-1000-7d93-e8d2440a68d5"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:16:02Z","duration":117,"status":"PASSED"},{"id":"EID6a338393-0175-1000-cc98-3ddc55816dcd","testStepResults":{"TestStepResult":[{"id":"EID6a338393-0175-1000-99d0-464e9addc019","parent":{"ref":"EID6a338393-0175-1000-cc98-3ddc55816dcd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6a338393-0175-1000-3104-4cd5cd66d2d9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3383f1-0175-1000-75af-6064699fbdcb","parent":{"ref":"EID6a338393-0175-1000-3104-4cd5cd66d2d9"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6a3383f1-0175-1000-75dd-1a80288cd213","parent":{"ref":"EID6a338393-0175-1000-3104-4cd5cd66d2d9"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6a3383f1-0175-1000-8a6d-2e5c37b47431","parent":{"ref":"EID6a338393-0175-1000-3104-4cd5cd66d2d9"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6a3383f1-0175-1000-12fb-f0f0506814cd","parent":{"ref":"EID6a338393-0175-1000-3104-4cd5cd66d2d9"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID57fd35af-275b-4347-ba06-680f9d657083"},{"ref":"EID1c9641f1-c83c-4def-89ec-7f9b1fd45ce7"},{"ref":"EID835fe445-cc1e-485f-9730-e7dc516707f9"}]},"parent":{"ref":"EID6a338393-0175-1000-cc98-3ddc55816dcd"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:16:02Z","duration":21,"status":"PASSED"},{"id":"EID6a3383f1-0175-1000-318f-5fca88b620dc","attachments":{"attachment":{"ref":"EID4a73887b-f8d3-41ea-8f18-a14243b87e16"}},"parent":{"ref":"EID6a338393-0175-1000-cc98-3ddc55816dcd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/63db16c5-c828-4922-95dd-5db67bc9c203.json"},"startTimestamp":"2020-10-27T13:16:02Z","duration":1,"status":"PASSED"},{"id":"EID6a338402-0175-1000-112f-087d0b3308ed","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3384ef-0175-1000-20f8-08bf95c238a0","parent":{"ref":"EID6a338402-0175-1000-112f-087d0b3308ed"},"resultedFrom":{"ref":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6a3384ef-0175-1000-6b6e-bfca4b9a5298","parent":{"ref":"EID6a338402-0175-1000-112f-087d0b3308ed"},"resultedFrom":{"ref":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6a3384ef-0175-1000-2f69-c36eeb251263","parent":{"ref":"EID6a338402-0175-1000-112f-087d0b3308ed"},"resultedFrom":{"ref":"EID234062a4-45c2-4013-9038-71b8cc9a7d36"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6a3384ef-0175-1000-bfdf-d001b052252d","parent":{"ref":"EID6a338402-0175-1000-112f-087d0b3308ed"},"resultedFrom":{"ref":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa9f1d14b-8409-4fa2-997b-c40127a3ff34"},{"ref":"EID4323ab20-491a-4175-9d73-9d15513d6c8f"},{"ref":"EID3d6e3ca2-ab11-44ff-9d33-554ac7115e1c"}]},"parent":{"ref":"EID6a338393-0175-1000-cc98-3ddc55816dcd"},"resultedFrom":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"startTimestamp":"2020-10-27T13:16:02Z","duration":157,"status":"PASSED"},{"id":"EID6a3384ef-0175-1000-6df9-c80f7d94eb38","attachments":{"attachment":{"ref":"EIDa899ff4d-43e4-4a7d-b0e1-762ae4d77997"}},"parent":{"ref":"EID6a338393-0175-1000-cc98-3ddc55816dcd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/18c66972-5d73-4718-8e9c-439d4032a9fe.json"},"startTimestamp":"2020-10-27T13:16:02Z","duration":2,"status":"PASSED"},{"id":"EID6a3384fd-0175-1000-7a0e-01641ef3b774","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3385b0-0175-1000-46b1-1f04f91097ab","parent":{"ref":"EID6a3384fd-0175-1000-7a0e-01641ef3b774"},"resultedFrom":{"ref":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6a3385b0-0175-1000-cc7f-24025fc14716","parent":{"ref":"EID6a3384fd-0175-1000-7a0e-01641ef3b774"},"resultedFrom":{"ref":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6a3385b0-0175-1000-b10c-514227e7765e","parent":{"ref":"EID6a3384fd-0175-1000-7a0e-01641ef3b774"},"resultedFrom":{"ref":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6a3385b0-0175-1000-ab76-50c3b6e25f50","parent":{"ref":"EID6a3384fd-0175-1000-7a0e-01641ef3b774"},"resultedFrom":{"ref":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe2c9cd7c-86ea-4b4e-9472-fc5ecab165cf"},{"ref":"EIDbb4c2f57-0dac-4a6e-8c2a-24b5d3cacd73"},{"ref":"EIDb3644461-cc8b-44d6-83fc-51521ef0d3f2"}]},"parent":{"ref":"EID6a338393-0175-1000-cc98-3ddc55816dcd"},"resultedFrom":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"startTimestamp":"2020-10-27T13:16:02Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6a336aaf-0175-1000-7d93-e8d2440a68d5"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:16:02Z","duration":541,"status":"PASSED"}]},"parent":{"ref":"EIDcac72028-9175-48c8-ad83-6974052eeeee"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:15:55Z","duration":6913,"status":"PASSED_MANUAL"},{"id":"EID6a3385b0-0175-1000-de1b-3ae83ab577d4","testCaseResults":{"TestCaseResult":[{"id":"EID6a3385b0-0175-1000-f1bb-b6b3429156e3","testStepResults":{"TestStepResult":[{"id":"EID6a3385b0-0175-1000-e5f8-e432fb774f8c","parent":{"ref":"EID6a3385b0-0175-1000-f1bb-b6b3429156e3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6a3385b1-0175-1000-dabd-78742fce394f","parent":{"ref":"EID6a3385b0-0175-1000-f1bb-b6b3429156e3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:16:02Z","duration":26,"status":"PASSED"},{"id":"EID6a3385b1-0175-1000-096d-84966b882251","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a338630-0175-1000-bfa2-5e10dfba8f3f","parent":{"ref":"EID6a3385b1-0175-1000-096d-84966b882251"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6a338630-0175-1000-730b-1424679b45d0","parent":{"ref":"EID6a3385b1-0175-1000-096d-84966b882251"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6a338630-0175-1000-3f2f-5efed204ba46","parent":{"ref":"EID6a3385b1-0175-1000-096d-84966b882251"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd2076ce9-b642-45c5-ad22-3eb935cc3ef0"},{"ref":"EID50e823f2-2bd4-485f-b38c-65a493a42840"},{"ref":"EID9f8b7c60-3266-4ed6-9d77-5f50e979334a"}]},"parent":{"ref":"EID6a3385b0-0175-1000-f1bb-b6b3429156e3"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:16:02Z","duration":25,"status":"PASSED"},{"id":"EID6a338631-0175-1000-1d37-0f30f2d9e56b","attachments":{"attachment":{"ref":"EID0aafe9c6-dd8b-42b6-b5df-2b38101f8d0c"}},"parent":{"ref":"EID6a3385b0-0175-1000-f1bb-b6b3429156e3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:16:02Z","duration":0,"status":"PASSED"},{"id":"EID6a33863d-0175-1000-a6ed-485c7c00d7cc","parent":{"ref":"EID6a3385b0-0175-1000-f1bb-b6b3429156e3"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:16:03Z","duration":17,"status":"PASSED"}]},"parent":{"ref":"EID6a3385b0-0175-1000-de1b-3ae83ab577d4"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:16:02Z","duration":159,"status":"PASSED"},{"id":"EID6a33864f-0175-1000-949a-50391475a04c","testStepResults":{"TestStepResult":[{"id":"EID6a33864f-0175-1000-170c-03773b785f42","parent":{"ref":"EID6a33864f-0175-1000-949a-50391475a04c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:16:03Z","duration":28,"status":"PASSED"},{"id":"EID6a33864f-0175-1000-d29a-24006e7e74bb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3386ad-0175-1000-b655-4094df18ef9c","parent":{"ref":"EID6a33864f-0175-1000-d29a-24006e7e74bb"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6a3386ad-0175-1000-e00b-fbf922db8cb4","parent":{"ref":"EID6a33864f-0175-1000-d29a-24006e7e74bb"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6a3386ad-0175-1000-a858-89f20ffe0000","parent":{"ref":"EID6a33864f-0175-1000-d29a-24006e7e74bb"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6a3386ad-0175-1000-7787-62eb512bbfb4","parent":{"ref":"EID6a33864f-0175-1000-d29a-24006e7e74bb"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6a3386ad-0175-1000-e217-0305775867bb","parent":{"ref":"EID6a33864f-0175-1000-d29a-24006e7e74bb"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID532e6dae-88ff-4dcc-aa6c-4ec8add4e097"},{"ref":"EIDad140a17-3421-4d63-95fd-6a7e158396eb"},{"ref":"EIDaf879f57-da37-40f0-bd70-5ab8f0bfe56a"}]},"parent":{"ref":"EID6a33864f-0175-1000-949a-50391475a04c"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:16:03Z","duration":25,"status":"PASSED"}]},"parent":{"ref":"EID6a3385b0-0175-1000-de1b-3ae83ab577d4"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:16:03Z","duration":94,"status":"PASSED"},{"id":"EID6a3386ae-0175-1000-7ed0-17d09f4bddd3","testStepResults":{"TestStepResult":[{"id":"EID6a3386ae-0175-1000-8115-580833f1f174","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a338739-0175-1000-120c-7301538e1817","parent":{"ref":"EID6a3386ae-0175-1000-8115-580833f1f174"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6a338739-0175-1000-c21e-a1b6f47a6da3","parent":{"ref":"EID6a3386ae-0175-1000-8115-580833f1f174"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6a338739-0175-1000-901a-79909c8f1a06","parent":{"ref":"EID6a3386ae-0175-1000-8115-580833f1f174"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc44fa11e-bc2d-47be-82cb-0b3c1122c8c6"},{"ref":"EIDf51b3eb3-2523-40bb-80dd-b1c3f4f6d9b6"},{"ref":"EIDf81e3742-696f-41d3-afe8-8a1d995b021e"}]},"parent":{"ref":"EID6a3386ae-0175-1000-7ed0-17d09f4bddd3"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:16:03Z","duration":21,"status":"PASSED"},{"id":"EID6a33873a-0175-1000-f86b-4157686ef843","attachments":{"attachment":{"ref":"EIDd7bcd9ae-afc0-4bb7-ab14-f58378fba693"}},"parent":{"ref":"EID6a3386ae-0175-1000-7ed0-17d09f4bddd3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6a338769-0175-1000-cf98-42f59c4aa87c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3387df-0175-1000-0f8a-f8f9394365c5","parent":{"ref":"EID6a338769-0175-1000-cf98-42f59c4aa87c"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6a3387df-0175-1000-765a-94eca3dad9bf","parent":{"ref":"EID6a338769-0175-1000-cf98-42f59c4aa87c"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6a3387e0-0175-1000-d2a1-c3ff1b810b48","parent":{"ref":"EID6a338769-0175-1000-cf98-42f59c4aa87c"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6a3387e0-0175-1000-9356-d99d106a3ad0","parent":{"ref":"EID6a338769-0175-1000-cf98-42f59c4aa87c"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6a3387e0-0175-1000-ce7b-33def30d5607","parent":{"ref":"EID6a338769-0175-1000-cf98-42f59c4aa87c"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc669e284-892c-4823-ac27-82b9b0bb13f0"},{"ref":"EID61111157-81a7-45bc-a7f4-4e2997dc7e7f"},{"ref":"EIDcde8df6b-54cb-46aa-9155-7af014764670"}]},"parent":{"ref":"EID6a3386ae-0175-1000-7ed0-17d09f4bddd3"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-27T13:16:03Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6a3385b0-0175-1000-de1b-3ae83ab577d4"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:16:03Z","duration":306,"status":"PASSED"},{"id":"EID6a3387e0-0175-1000-b3b3-d3fd49927603","testStepResults":{"TestStepResult":[{"id":"EID6a3387e0-0175-1000-91f0-552761fde612","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a338871-0175-1000-f906-b67332e64ed1","parent":{"ref":"EID6a3387e0-0175-1000-91f0-552761fde612"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6a338871-0175-1000-fd58-60c03d872041","parent":{"ref":"EID6a3387e0-0175-1000-91f0-552761fde612"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6a338871-0175-1000-5ef8-7fbcbeff06ed","parent":{"ref":"EID6a3387e0-0175-1000-91f0-552761fde612"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6a338871-0175-1000-6e7c-bd765bed6b64","parent":{"ref":"EID6a3387e0-0175-1000-91f0-552761fde612"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID97ba8e15-8751-46dc-8706-4403705704a0"},{"ref":"EIDe464e1ea-b7a4-4b39-8e98-723e85168817"},{"ref":"EID8d071031-69df-4f4a-8ae1-231523b947c0"}]},"parent":{"ref":"EID6a3387e0-0175-1000-b3b3-d3fd49927603"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:16:03Z","duration":24,"status":"PASSED"},{"id":"EID6a338871-0175-1000-abe9-c21457528094","attachments":{"attachment":{"ref":"EIDce7ee34b-28f0-478e-9ee0-5815db6f5e29"}},"parent":{"ref":"EID6a3387e0-0175-1000-b3b3-d3fd49927603"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-27T13:16:03Z","duration":1,"status":"PASSED"},{"id":"EID6a33887e-0175-1000-d70d-15b778308cbf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3388a9-0175-1000-28e9-388e2a98b229","parent":{"ref":"EID6a33887e-0175-1000-d70d-15b778308cbf"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6a3388a9-0175-1000-2818-8599b7abd7b5","parent":{"ref":"EID6a33887e-0175-1000-d70d-15b778308cbf"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID535367ed-d582-4854-baf0-c91e1e7f6022"},{"ref":"EIDa600e51b-3420-4d9f-b41d-02d0fcfe5434"}]},"parent":{"ref":"EID6a3387e0-0175-1000-b3b3-d3fd49927603"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-27T13:16:03Z","duration":39,"status":"PASSED"},{"id":"EID6a3388a9-0175-1000-83b3-cec2b0dc3f00","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33891e-0175-1000-31dd-2522da5d24c2","parent":{"ref":"EID6a3388a9-0175-1000-83b3-cec2b0dc3f00"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6a33891e-0175-1000-5fba-feb369bb4979","parent":{"ref":"EID6a3388a9-0175-1000-83b3-cec2b0dc3f00"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6a33891e-0175-1000-e48f-72c4a32fc3ae","parent":{"ref":"EID6a3388a9-0175-1000-83b3-cec2b0dc3f00"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6a33891e-0175-1000-7398-a8e6f41ad251","parent":{"ref":"EID6a3388a9-0175-1000-83b3-cec2b0dc3f00"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID24520391-11fd-4f98-aa5d-c003bac70fd5"},{"ref":"EID68e4dc46-6409-4252-a2af-b0258ac266b8"},{"ref":"EID88aeaaa0-905c-471a-bdd2-518cd2ebb35d"}]},"parent":{"ref":"EID6a3387e0-0175-1000-b3b3-d3fd49927603"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-27T13:16:03Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6a3385b0-0175-1000-de1b-3ae83ab577d4"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:16:03Z","duration":319,"status":"PASSED"},{"id":"EID6a33891f-0175-1000-48cf-622761c7dcff","testStepResults":{"TestStepResult":{"id":"EID6a33891f-0175-1000-5d25-cad49fe03934","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a338a05-0175-1000-1599-132a3e1df6ae","parent":{"ref":"EID6a33891f-0175-1000-5d25-cad49fe03934"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6a338a05-0175-1000-f9db-b787d769b295","parent":{"ref":"EID6a33891f-0175-1000-5d25-cad49fe03934"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"},{"id":"EID6a338a05-0175-1000-49db-752b6f01901e","parent":{"ref":"EID6a33891f-0175-1000-5d25-cad49fe03934"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:16:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9b19d116-7a73-4690-9c81-927d783433ce"},{"ref":"EID8969488e-1140-45c0-adf5-9cc67bd6ccd5"},{"ref":"EID4ebe3d94-2a9e-4406-8582-8138cead6594"}]},"parent":{"ref":"EID6a33891f-0175-1000-48cf-622761c7dcff"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:16:03Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6a3385b0-0175-1000-de1b-3ae83ab577d4"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:16:03Z","duration":230,"status":"PASSED"},{"id":"EID6a338a06-0175-1000-517d-b67fa0b7c6c2","testStepResults":{"TestStepResult":{"id":"EID6a338a06-0175-1000-f1bf-5a848a950949","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a338a50-0175-1000-6883-2cd5bac72e32","parent":{"ref":"EID6a338a06-0175-1000-f1bf-5a848a950949"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338a50-0175-1000-574d-c058c244493c","parent":{"ref":"EID6a338a06-0175-1000-f1bf-5a848a950949"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338a50-0175-1000-6c98-b4a2d3bb9f21","parent":{"ref":"EID6a338a06-0175-1000-f1bf-5a848a950949"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0a96890e-3444-4cec-8515-9cec80747313"},{"ref":"EIDead87bf3-73f8-4bc1-8e09-98b5c38644ff"},{"ref":"EIDebb7f000-3f43-495d-96b0-278b1c3b7f3d"}]},"parent":{"ref":"EID6a338a06-0175-1000-517d-b67fa0b7c6c2"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:16:03Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6a3385b0-0175-1000-de1b-3ae83ab577d4"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:16:03Z","duration":75,"status":"PASSED"},{"id":"EID6a338a51-0175-1000-63cc-4e8feddad7c5","testStepResults":{"TestStepResult":{"id":"EID6a338a51-0175-1000-1210-c6a22571605e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a338b07-0175-1000-4713-542092755e69","parent":{"ref":"EID6a338a51-0175-1000-1210-c6a22571605e"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338b07-0175-1000-fb82-da13a914b563","parent":{"ref":"EID6a338a51-0175-1000-1210-c6a22571605e"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338b07-0175-1000-7490-c38e8d55c49b","parent":{"ref":"EID6a338a51-0175-1000-1210-c6a22571605e"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338b07-0175-1000-1f62-1ee294bb77a6","parent":{"ref":"EID6a338a51-0175-1000-1210-c6a22571605e"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338b07-0175-1000-4edf-f3b527605b2b","parent":{"ref":"EID6a338a51-0175-1000-1210-c6a22571605e"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID23190e18-ab39-4376-ad80-e483b4f9be1e"},{"ref":"EID44d6966c-5dcf-473e-973a-ab62b4e2eaad"},{"ref":"EID0866ca10-7da9-4f5f-99c3-cf89c71701c5"}]},"parent":{"ref":"EID6a338a51-0175-1000-63cc-4e8feddad7c5"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:16:04Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6a3385b0-0175-1000-de1b-3ae83ab577d4"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:16:04Z","duration":183,"status":"PASSED"},{"id":"EID6a338b08-0175-1000-3043-360a18ee712e","testStepResults":{"TestStepResult":{"id":"EID6a338b08-0175-1000-1b16-28c5377bcafc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a338b86-0175-1000-961a-8c334cd54c68","parent":{"ref":"EID6a338b08-0175-1000-1b16-28c5377bcafc"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338b86-0175-1000-f860-298db774bafa","parent":{"ref":"EID6a338b08-0175-1000-1b16-28c5377bcafc"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338b86-0175-1000-ef33-3aa0ef912d3a","parent":{"ref":"EID6a338b08-0175-1000-1b16-28c5377bcafc"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDded1b53a-0c86-4322-ae23-3ba47c78a984"},{"ref":"EID6a2b5e8e-53e1-428a-ba56-468c5ec5819d"},{"ref":"EID461fbf97-a213-4ef3-94ff-451561fae286"}]},"parent":{"ref":"EID6a338b08-0175-1000-3043-360a18ee712e"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:16:04Z","duration":24,"status":"PASSED"}},"parent":{"ref":"EID6a3385b0-0175-1000-de1b-3ae83ab577d4"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:16:04Z","duration":126,"status":"PASSED"},{"id":"EID6a338b87-0175-1000-0f8d-64fc13a1614a","testStepResults":{"TestStepResult":{"id":"EID6a338b87-0175-1000-e138-9250797f4758","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a338bda-0175-1000-2ce9-6be5489073c2","parent":{"ref":"EID6a338b87-0175-1000-e138-9250797f4758"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338bda-0175-1000-2baa-b559d9de05d6","parent":{"ref":"EID6a338b87-0175-1000-e138-9250797f4758"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338bda-0175-1000-b58c-c30206d22b9a","parent":{"ref":"EID6a338b87-0175-1000-e138-9250797f4758"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9f4d4fb9-01e5-4866-8d02-c21acba1ccb4"},{"ref":"EID9ae5c084-e2a2-4e5a-8973-f002a871d8e9"},{"ref":"EIDe5a919d1-4f2b-4508-8bb1-2ca63e38efe2"}]},"parent":{"ref":"EID6a338b87-0175-1000-0f8d-64fc13a1614a"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:16:04Z","duration":24,"status":"PASSED"}},"parent":{"ref":"EID6a3385b0-0175-1000-de1b-3ae83ab577d4"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:16:04Z","duration":83,"status":"PASSED"},{"id":"EID6a338bda-0175-1000-ffb8-e29af1e497ff","testStepResults":{"TestStepResult":{"id":"EID6a338be3-0175-1000-e45a-5139faa15064","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a338c46-0175-1000-1402-57983f05f764","parent":{"ref":"EID6a338be3-0175-1000-e45a-5139faa15064"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338c46-0175-1000-726e-ee25971d7e39","parent":{"ref":"EID6a338be3-0175-1000-e45a-5139faa15064"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338c46-0175-1000-5768-ec9c6015bb37","parent":{"ref":"EID6a338be3-0175-1000-e45a-5139faa15064"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338c46-0175-1000-071c-d4d172271b34","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6a338be3-0175-1000-e45a-5139faa15064"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID8862a4fb-e836-4fde-9202-2d90b5a356ca"},{"ref":"EIDf5722b48-126f-4dcc-96d4-49c88fd0f26a"},{"ref":"EID8b1ca9f8-c6c4-4477-9161-e3e84cdf5102"}]},"parent":{"ref":"EID6a338bda-0175-1000-ffb8-e29af1e497ff"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:16:04Z","duration":20,"status":"FAILED"}},"parent":{"ref":"EID6a3385b0-0175-1000-de1b-3ae83ab577d4"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:16:04Z","duration":108,"status":"FAILED"},{"id":"EID6a338c46-0175-1000-8b2e-cf22f5964cd9","testStepResults":{"TestStepResult":{"id":"EID6a338c46-0175-1000-cce4-febf1a00b024","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a338caa-0175-1000-0c4a-fe7c61dd51b0","parent":{"ref":"EID6a338c46-0175-1000-cce4-febf1a00b024"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338caa-0175-1000-5f7c-ab300fe0987c","parent":{"ref":"EID6a338c46-0175-1000-cce4-febf1a00b024"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338caa-0175-1000-3476-6ea8cb345e3e","parent":{"ref":"EID6a338c46-0175-1000-cce4-febf1a00b024"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338caa-0175-1000-830d-96a525d93d8e","parent":{"ref":"EID6a338c46-0175-1000-cce4-febf1a00b024"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9d55923e-258c-4e6e-930b-ab5dbb8e3d5c"},{"ref":"EID4a64e258-fda4-43a7-b78c-beafa5d5e2cd"},{"ref":"EID355f8d8e-568b-4aad-937f-37fe89c7e8a2"}]},"parent":{"ref":"EID6a338c46-0175-1000-8b2e-cf22f5964cd9"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:16:04Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6a3385b0-0175-1000-de1b-3ae83ab577d4"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:16:04Z","duration":100,"status":"PASSED"},{"id":"EID6a338caa-0175-1000-a72d-f58975e9466f","testStepResults":{"TestStepResult":[{"id":"EID6a338caa-0175-1000-0ac3-a6a3422d50f8","parent":{"ref":"EID6a338caa-0175-1000-a72d-f58975e9466f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338caa-0175-1000-a403-6637a7a29f31","parent":{"ref":"EID6a338caa-0175-1000-a72d-f58975e9466f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:16:04Z","duration":81,"status":"PASSED"},{"id":"EID6a338caa-0175-1000-5ca3-0db59188ba5e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a338d1d-0175-1000-c85a-7eb62d82454a","parent":{"ref":"EID6a338caa-0175-1000-5ca3-0db59188ba5e"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338d1d-0175-1000-b6ce-2bb783ee2c59","parent":{"ref":"EID6a338caa-0175-1000-5ca3-0db59188ba5e"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338d1d-0175-1000-1d54-8bc5cce8fd65","parent":{"ref":"EID6a338caa-0175-1000-5ca3-0db59188ba5e"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338d1d-0175-1000-df12-ae52c8b494ae","parent":{"ref":"EID6a338caa-0175-1000-5ca3-0db59188ba5e"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0082b9da-d2f0-474a-a26f-62e895f7c21c"},{"ref":"EID21478603-5948-4200-95e2-403d3b423dc2"},{"ref":"EIDe2e9fd82-02ff-4fd4-9551-9d74f35a6734"}]},"parent":{"ref":"EID6a338caa-0175-1000-a72d-f58975e9466f"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:16:04Z","duration":21,"status":"PASSED"},{"id":"EID6a338d1d-0175-1000-9d77-e718284b816d","attachments":{"attachment":{"ref":"EID1c9de539-a70c-4919-9f01-c98628ba5963"}},"parent":{"ref":"EID6a338caa-0175-1000-a72d-f58975e9466f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:16:04Z","duration":1,"status":"PASSED"},{"id":"EID6a338d28-0175-1000-1d09-b5c28beedbc2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a338dcd-0175-1000-a6ce-b3a957ba8f1d","parent":{"ref":"EID6a338d28-0175-1000-1d09-b5c28beedbc2"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338dcd-0175-1000-318f-01dfde4ba74d","parent":{"ref":"EID6a338d28-0175-1000-1d09-b5c28beedbc2"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338dcd-0175-1000-d40a-7c69d4c4cbd7","parent":{"ref":"EID6a338d28-0175-1000-1d09-b5c28beedbc2"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338dcd-0175-1000-980f-6b5ac722144e","parent":{"ref":"EID6a338d28-0175-1000-1d09-b5c28beedbc2"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338dce-0175-1000-1ff0-991eac7291b5","parent":{"ref":"EID6a338d28-0175-1000-1d09-b5c28beedbc2"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338dce-0175-1000-6f6f-2d46923b9c3e","parent":{"ref":"EID6a338d28-0175-1000-1d09-b5c28beedbc2"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338dce-0175-1000-cc2d-7d89cd88f9dd","parent":{"ref":"EID6a338d28-0175-1000-1d09-b5c28beedbc2"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf38f5218-e6d9-471d-9387-9ec23d5014d7"},{"ref":"EIDc130384d-9261-431e-bb49-196286405f2e"},{"ref":"EID1e0814a8-1749-45e9-8bbd-7bcb728220b2"}]},"parent":{"ref":"EID6a338caa-0175-1000-a72d-f58975e9466f"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:16:04Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6a3385b0-0175-1000-de1b-3ae83ab577d4"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:16:04Z","duration":292,"status":"PASSED"},{"id":"EID6a338dce-0175-1000-654c-c2db773a9988","testStepResults":{"TestStepResult":[{"id":"EID6a338dce-0175-1000-75eb-56c7ee42b819","parent":{"ref":"EID6a338dce-0175-1000-654c-c2db773a9988"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:16:04Z","duration":0,"status":"PASSED"},{"id":"EID6a338dce-0175-1000-5f6d-5d7672801f37","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a338f3d-0175-1000-e16a-9af9f0829ba7","parent":{"ref":"EID6a338dce-0175-1000-5f6d-5d7672801f37"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6a338f3d-0175-1000-206c-36e1b66b17f1","parent":{"ref":"EID6a338dce-0175-1000-5f6d-5d7672801f37"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6a338f3d-0175-1000-08a1-6f25f76cc94c","parent":{"ref":"EID6a338dce-0175-1000-5f6d-5d7672801f37"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6a338f3d-0175-1000-0696-43dc5af5e023","parent":{"ref":"EID6a338dce-0175-1000-5f6d-5d7672801f37"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:16:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd4cb7124-28f0-42cc-ad2a-4fe31c4e0152"},{"ref":"EIDf8e58d1c-01aa-49af-a74c-4c3b8b8a8186"},{"ref":"EID7030500f-8e35-4567-9928-7ec24c637e0f"}]},"parent":{"ref":"EID6a338dce-0175-1000-654c-c2db773a9988"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:16:04Z","duration":140,"status":"PASSED"},{"id":"EID6a338f3d-0175-1000-b9d1-075ffa9102af","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a338f4f-0175-1000-8da3-48c60dd14cbc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3390b3-0175-1000-c3a3-4add39caf3c8","parent":{"ref":"EID6a338f4f-0175-1000-8da3-48c60dd14cbc"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6a3390b3-0175-1000-2eff-91e61e81d9c4","parent":{"ref":"EID6a338f4f-0175-1000-8da3-48c60dd14cbc"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6a3390b3-0175-1000-e586-f616c4a957eb","parent":{"ref":"EID6a338f4f-0175-1000-8da3-48c60dd14cbc"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:16:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID34218333-845f-49ae-8d68-cbdd19fbd7eb"},{"ref":"EID1ae9ef85-62c9-44f5-99e5-2ca9f9e99285"},{"ref":"EID72152da1-2abe-4c33-a205-9eee85e308ce"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:16:05Z","duration":155,"status":"PASSED"},{"id":"EID6a3390bb-0175-1000-c166-ac2945688691","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a339195-0175-1000-88b5-2c37ef6e42f0","parent":{"ref":"EID6a3390bb-0175-1000-c166-ac2945688691"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6a339195-0175-1000-0159-6f807f2237e8","parent":{"ref":"EID6a3390bb-0175-1000-c166-ac2945688691"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:16:05Z","duration":0,"status":"PASSED"},{"id":"EID6a339195-0175-1000-f146-3d0e74aecb3d","parent":{"ref":"EID6a3390bb-0175-1000-c166-ac2945688691"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:16:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbcffb7d5-b573-49ee-be25-2e1f654a1c37"},{"ref":"EIDd1ac31b7-b9cc-4a25-bc47-e6ac687c14cd"},{"ref":"EID0a7d67fa-822a-4046-918a-c79c7ac71475"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:16:05Z","duration":155,"status":"PASSED"},{"id":"EID6a339197-0175-1000-142a-118d5d9b5550","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a339232-0175-1000-fcc7-788abc1f4498","parent":{"ref":"EID6a339197-0175-1000-142a-118d5d9b5550"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6a339232-0175-1000-5298-fbeff1e9f297","parent":{"ref":"EID6a339197-0175-1000-142a-118d5d9b5550"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6a339232-0175-1000-6fec-236440b9c148","parent":{"ref":"EID6a339197-0175-1000-142a-118d5d9b5550"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd7a50f8b-b497-4107-9db6-337759075969"},{"ref":"EIDc5589c76-ab96-4ace-a41e-a9cb49296e10"},{"ref":"EID1c03f3dd-ebfe-43ad-8f79-4b667c1da34e"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:16:05Z","duration":41,"status":"PASSED"}]},"parent":{"ref":"EID6a338dce-0175-1000-654c-c2db773a9988"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:16:05Z","duration":758,"status":"PASSED"},{"id":"EID6a339233-0175-1000-4a70-0ad43056cf7d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a339289-0175-1000-d04e-65238aa18ee3","parent":{"ref":"EID6a339233-0175-1000-4a70-0ad43056cf7d"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6a339289-0175-1000-d5fb-a2efda9b65a0","parent":{"ref":"EID6a339233-0175-1000-4a70-0ad43056cf7d"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6a339289-0175-1000-adae-180587579845","parent":{"ref":"EID6a339233-0175-1000-4a70-0ad43056cf7d"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6a339289-0175-1000-3ab1-1f55977d0e16","parent":{"ref":"EID6a339233-0175-1000-4a70-0ad43056cf7d"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe720ff00-cbc2-41e7-80b8-fc0073e38394"},{"ref":"EID5c6a5f74-4168-490a-b69e-99d82ff0bca9"},{"ref":"EID2b005165-ca51-4afe-8238-7a3a099e324d"}]},"parent":{"ref":"EID6a338dce-0175-1000-654c-c2db773a9988"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:16:06Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6a3385b0-0175-1000-de1b-3ae83ab577d4"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:16:04Z","duration":1211,"status":"PASSED"},{"id":"EID6a33928a-0175-1000-da58-e48b9edf1387","testStepResults":{"TestStepResult":{"id":"EID6a33928a-0175-1000-427b-eaaa7029af82","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3392fe-0175-1000-8489-7559d231840d","parent":{"ref":"EID6a33928a-0175-1000-427b-eaaa7029af82"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6a3392fe-0175-1000-ac33-d6d4bda97a18","parent":{"ref":"EID6a33928a-0175-1000-427b-eaaa7029af82"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6a3392fe-0175-1000-4211-7a8fb8683177","parent":{"ref":"EID6a33928a-0175-1000-427b-eaaa7029af82"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6a3392fe-0175-1000-6e30-e508232ea94e","parent":{"ref":"EID6a33928a-0175-1000-427b-eaaa7029af82"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc00bee1c-f2fe-4746-ad2c-5ac7acb22c58"},{"ref":"EID059774dd-f628-4dcc-b150-d8672c9cdd01"},{"ref":"EID6cb95178-1328-4cda-822b-e8dc19af0233"}]},"parent":{"ref":"EID6a33928a-0175-1000-da58-e48b9edf1387"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:16:06Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6a3385b0-0175-1000-de1b-3ae83ab577d4"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:16:06Z","duration":116,"status":"PASSED"}]},"parent":{"ref":"EIDcac72028-9175-48c8-ad83-6974052eeeee"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:16:02Z","duration":3406,"status":"FAILED"},{"id":"EID6a3392fe-0175-1000-f646-db6f7a83a27e","testCaseResults":{"TestCaseResult":[{"id":"EID6a3392fe-0175-1000-3605-09ffbd332cd3","testStepResults":{"TestStepResult":[{"id":"EID6a3392fe-0175-1000-e05f-de423aaf7103","parent":{"ref":"EID6a3392fe-0175-1000-3605-09ffbd332cd3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:16:06Z","duration":320,"status":"PASSED"},{"id":"EID6a3392fe-0175-1000-2b57-728aba136cc0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33934e-0175-1000-998f-6a7adae6cb65","parent":{"ref":"EID6a3392fe-0175-1000-2b57-728aba136cc0"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6a33934e-0175-1000-6191-0c49d0149d0d","parent":{"ref":"EID6a3392fe-0175-1000-2b57-728aba136cc0"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6a33934e-0175-1000-8ba0-c91a804f3712","parent":{"ref":"EID6a3392fe-0175-1000-2b57-728aba136cc0"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc2d3296d-c02f-4435-83e5-8c5944135c6b"},{"ref":"EIDe070f50c-9ad1-446f-be6d-3a5e4624f7ee"},{"ref":"EID3db04334-1989-4be4-843c-5ad24b19b433"}]},"parent":{"ref":"EID6a3392fe-0175-1000-3605-09ffbd332cd3"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-27T13:16:06Z","duration":22,"status":"PASSED"},{"id":"EID6a33934e-0175-1000-08c2-56b6b0b85445","attachments":{"attachment":{"ref":"EID0752b272-a4f2-42d9-89c4-31670ae1f831"}},"parent":{"ref":"EID6a3392fe-0175-1000-3605-09ffbd332cd3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a3392fe-0175-1000-f646-db6f7a83a27e"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:16:06Z","duration":92,"status":"PASSED"},{"id":"EID6a33935a-0175-1000-2ae4-875737e46860","testStepResults":{"TestStepResult":[{"id":"EID6a33935a-0175-1000-be26-c0694926597d","parent":{"ref":"EID6a33935a-0175-1000-2ae4-875737e46860"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:16:06Z","duration":320,"status":"PASSED"},{"id":"EID6a33935a-0175-1000-e736-5f784f69439d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a339479-0175-1000-482a-14961e90dd82","parent":{"ref":"EID6a33935a-0175-1000-e736-5f784f69439d"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6a339479-0175-1000-61fe-4c02283f5b64","parent":{"ref":"EID6a33935a-0175-1000-e736-5f784f69439d"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6a339479-0175-1000-4518-bcd9a3069351","parent":{"ref":"EID6a33935a-0175-1000-e736-5f784f69439d"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6a339479-0175-1000-708d-2917f2078032","parent":{"ref":"EID6a33935a-0175-1000-e736-5f784f69439d"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5546cd93-70fd-451d-a24c-6f3b9bbae388"},{"ref":"EID9eb96dd7-6f1f-4926-8dca-062ae10d6963"},{"ref":"EID7847da1f-0e49-4bb1-a487-85c0c84d1d9f"}]},"parent":{"ref":"EID6a33935a-0175-1000-2ae4-875737e46860"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-27T13:16:06Z","duration":76,"status":"PASSED"}]},"parent":{"ref":"EID6a3392fe-0175-1000-f646-db6f7a83a27e"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:16:06Z","duration":288,"status":"PASSED"},{"id":"EID6a33947a-0175-1000-96eb-db35ee695bcb","testStepResults":{"TestStepResult":[{"id":"EID6a33947a-0175-1000-dd57-881e1e033538","parent":{"ref":"EID6a33947a-0175-1000-96eb-db35ee695bcb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:16:06Z","duration":320,"status":"PASSED"},{"id":"EID6a33947a-0175-1000-9e2e-8059bf7778a9","parent":{"ref":"EID6a33947a-0175-1000-96eb-db35ee695bcb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6a33947a-0175-1000-ad97-999fd3581e72","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3395c6-0175-1000-2209-822625407aad","parent":{"ref":"EID6a33947a-0175-1000-ad97-999fd3581e72"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6a3395c6-0175-1000-0609-5170e4d3bbf7","parent":{"ref":"EID6a33947a-0175-1000-ad97-999fd3581e72"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6a3395c6-0175-1000-5857-b66e413e5f19","parent":{"ref":"EID6a33947a-0175-1000-ad97-999fd3581e72"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6a3395c6-0175-1000-1f02-291703df0693","parent":{"ref":"EID6a33947a-0175-1000-ad97-999fd3581e72"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6a3395c6-0175-1000-267c-95fd78de9064","parent":{"ref":"EID6a33947a-0175-1000-ad97-999fd3581e72"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6a3395c6-0175-1000-3058-24663f36c192","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}}},"parent":{"ref":"EID6a33947a-0175-1000-ad97-999fd3581e72"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"FAILED"},{"id":"EID6a3395c6-0175-1000-f6d3-8bdc61cdbe2b","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6a33947a-0175-1000-ad97-999fd3581e72"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID381d5f74-1a96-4aac-89d4-e13275206fbd"},{"ref":"EIDf7188524-9709-47a9-b9ca-901d59167aeb"},{"ref":"EID73c6512e-cd6a-41ab-9bcb-a93240f5f0ea"}]},"parent":{"ref":"EID6a33947a-0175-1000-96eb-db35ee695bcb"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-27T13:16:06Z","duration":76,"status":"FAILED"}]},"parent":{"ref":"EID6a3392fe-0175-1000-f646-db6f7a83a27e"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:16:06Z","duration":333,"status":"FAILED"},{"id":"EID6a3395c7-0175-1000-dea1-fc6a6ff695de","testStepResults":{"TestStepResult":[{"id":"EID6a3395c7-0175-1000-6f2e-74d42214c065","parent":{"ref":"EID6a3395c7-0175-1000-dea1-fc6a6ff695de"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:16:06Z","duration":320,"status":"PASSED"},{"id":"EID6a3395c7-0175-1000-a794-948989d24a4c","parent":{"ref":"EID6a3395c7-0175-1000-dea1-fc6a6ff695de"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-27T13:16:06Z","duration":0,"status":"PASSED"},{"id":"EID6a3395c7-0175-1000-c73e-132fc343f9db","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33969c-0175-1000-a0e0-1de8e539ad32","parent":{"ref":"EID6a3395c7-0175-1000-c73e-132fc343f9db"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-27T13:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6a33969c-0175-1000-4a27-7ac5a9cdedd6","parent":{"ref":"EID6a3395c7-0175-1000-c73e-132fc343f9db"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-27T13:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6a33969c-0175-1000-c631-8d0f70d9033c","parent":{"ref":"EID6a3395c7-0175-1000-c73e-132fc343f9db"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-27T13:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6a33969c-0175-1000-d135-b9378688fd19","parent":{"ref":"EID6a3395c7-0175-1000-c73e-132fc343f9db"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-27T13:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6a33969c-0175-1000-2623-45c83cb10f7f","parent":{"ref":"EID6a3395c7-0175-1000-c73e-132fc343f9db"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-27T13:16:07Z","duration":0,"status":"PASSED"},{"id":"EID6a33969c-0175-1000-5ec7-3e776b5b7e11","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6a3395c7-0175-1000-c73e-132fc343f9db"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-27T13:16:07Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDe5fbdefe-332e-46ee-a97c-73690ec022bd"},{"ref":"EID110375d9-bf30-488f-a363-f17ff2d40e5a"},{"ref":"EID27eaf261-42b1-403e-a0ad-53a2d126a970"}]},"parent":{"ref":"EID6a3395c7-0175-1000-dea1-fc6a6ff695de"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-27T13:16:06Z","duration":81,"status":"FAILED"}]},"parent":{"ref":"EID6a3392fe-0175-1000-f646-db6f7a83a27e"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:16:06Z","duration":271,"status":"FAILED"},{"id":"EID6a3396d6-0175-1000-b532-214c511f08ce","testStepResults":{"TestStepResult":[{"id":"EID6a3396d6-0175-1000-d48a-c9885c94a44a","parent":{"ref":"EID6a3396d6-0175-1000-b532-214c511f08ce"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:16:07Z","duration":320,"status":"PASSED"},{"id":"EID6a3396d6-0175-1000-077a-329f20de104c","messages":{"message":[{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}},{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}]},"attachments":{"attachment":[{"ref":"EIDb3949788-7685-4b02-917f-8b10542cd713"},{"ref":"EIDbb67bf0f-2cab-46be-8273-785f4fb62be3"},{"ref":"EIDa46fcdad-802a-4123-94c1-d94bfec5c989"},{"ref":"EID51ceadb3-18da-4f13-80ef-8ae566fd2114"},{"ref":"EIDc1506e66-c9fc-473f-b2cc-86fba1212ca5"},{"ref":"EID3d36b55f-033e-4e67-b583-8c1b0fa440ab"},{"ref":"EIDe677c92c-10db-4244-889e-589561e665b4"},{"ref":"EIDe0178677-a798-428c-8b18-0ac89926e030"},{"ref":"EIDe3e91a61-6bf1-4e6a-a25b-c948bb3c3e08"},{"ref":"EID5d575c90-2324-4e5a-810c-2566a3c8cf0f"},{"ref":"EID7b89f338-2d01-47f6-8a12-0d913cd61a54"},{"ref":"EID0bccb856-3acd-483d-9805-c08eb617b4d1"},{"ref":"EID20fa2c6b-d185-4e5a-9458-d67c09321d6d"},{"ref":"EIDc3eb77fc-9d7c-4049-9d14-40b691bddd66"},{"ref":"EID8bb06ff7-b9db-4bcb-9245-04cb91227b9e"}]},"parent":{"ref":"EID6a3396d6-0175-1000-b532-214c511f08ce"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-27T13:16:07Z","duration":494,"status":"SKIPPED"}]},"parent":{"ref":"EID6a3392fe-0175-1000-f646-db6f7a83a27e"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:16:07Z","duration":1076,"status":"SKIPPED"},{"id":"EID6a339b0a-0175-1000-7717-dd89a9a7eb25","testStepResults":{"TestStepResult":[{"id":"EID6a339b0a-0175-1000-f050-ed39d390fd42","parent":{"ref":"EID6a339b0a-0175-1000-7717-dd89a9a7eb25"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:16:08Z","duration":320,"status":"PASSED"},{"id":"EID6a339b0a-0175-1000-372b-02f76127f7c8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a339cea-0175-1000-3008-91eaeffc9232","parent":{"ref":"EID6a339b0a-0175-1000-372b-02f76127f7c8"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-27T13:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6a339cea-0175-1000-be8e-592a60392655","parent":{"ref":"EID6a339b0a-0175-1000-372b-02f76127f7c8"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-27T13:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6a339cea-0175-1000-3683-05f8af076f2c","parent":{"ref":"EID6a339b0a-0175-1000-372b-02f76127f7c8"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-27T13:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6a339cea-0175-1000-f83b-3c204c83365d","parent":{"ref":"EID6a339b0a-0175-1000-372b-02f76127f7c8"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-27T13:16:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDca189a55-d12a-492f-b95e-6d2511661257"},{"ref":"EID32ee2641-30a8-404b-8677-03d2c9c55ff8"},{"ref":"EID5e13805e-7383-4ae4-8b07-7672c9668a28"}]},"parent":{"ref":"EID6a339b0a-0175-1000-7717-dd89a9a7eb25"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-27T13:16:08Z","duration":75,"status":"PASSED"}]},"parent":{"ref":"EID6a3392fe-0175-1000-f646-db6f7a83a27e"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:16:08Z","duration":480,"status":"PASSED"},{"id":"EID6a339cea-0175-1000-42f8-788a2c16555f","testStepResults":{"TestStepResult":[{"id":"EID6a339ceb-0175-1000-30ca-02826c2cca97","parent":{"ref":"EID6a339cea-0175-1000-42f8-788a2c16555f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:16:08Z","duration":320,"status":"PASSED"},{"id":"EID6a339ceb-0175-1000-20b8-7a4941b08ff2","parent":{"ref":"EID6a339cea-0175-1000-42f8-788a2c16555f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-27T13:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6a339ceb-0175-1000-3a11-17e1f0e2afcc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a339d89-0175-1000-a3f2-6b42c3c19614","parent":{"ref":"EID6a339ceb-0175-1000-3a11-17e1f0e2afcc"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-27T13:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6a339d89-0175-1000-f324-f74544981f15","parent":{"ref":"EID6a339ceb-0175-1000-3a11-17e1f0e2afcc"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-27T13:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6a339d89-0175-1000-32fc-6310e08a3a52","parent":{"ref":"EID6a339ceb-0175-1000-3a11-17e1f0e2afcc"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-27T13:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6a339d89-0175-1000-b8fe-c9e107cc6f48","parent":{"ref":"EID6a339ceb-0175-1000-3a11-17e1f0e2afcc"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-27T13:16:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8125f3e2-ed06-46f6-80c4-cd5fb0d4c958"},{"ref":"EID507a74fb-b70b-467c-975d-cc86358970d1"},{"ref":"EIDe2ffdd17-49bd-42fe-a318-1320b240d17a"}]},"parent":{"ref":"EID6a339cea-0175-1000-42f8-788a2c16555f"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-27T13:16:08Z","duration":75,"status":"PASSED"},{"id":"EID6a339d8a-0175-1000-d65d-f73c3fa4fb27","attachments":{"attachment":{"ref":"EIDcb17dc08-959c-49a5-9a78-aae311e86b13"}},"parent":{"ref":"EID6a339cea-0175-1000-42f8-788a2c16555f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-27T13:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6a339d97-0175-1000-1c27-ae273cf5e9af","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a339da7-0175-1000-de56-83dc50a648d9","parent":{"ref":"EID6a339d97-0175-1000-1c27-ae273cf5e9af"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-27T13:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6a339da7-0175-1000-9122-eb030a78b5fb","parent":{"ref":"EID6a339d97-0175-1000-1c27-ae273cf5e9af"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-27T13:16:08Z","duration":0,"status":"PASSED"},{"id":"EID6a339da7-0175-1000-6dec-da818a1ad482","parent":{"ref":"EID6a339d97-0175-1000-1c27-ae273cf5e9af"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-27T13:16:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID258c0753-37af-4c11-afa8-dca671e928e1"},{"ref":"EIDef0ae17d-d821-40fd-8cc1-13160e255afd"}]},"parent":{"ref":"EID6a339cea-0175-1000-42f8-788a2c16555f"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-27T13:16:08Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a3392fe-0175-1000-f646-db6f7a83a27e"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:16:08Z","duration":189,"status":"PASSED"}]},"parent":{"ref":"EIDcac72028-9175-48c8-ad83-6974052eeeee"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:16:06Z","duration":2729,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"ServiceResponse","id":"EIDead87bf3-73f8-4bc1-8e09-98b5c38644ff","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDead87bf3-73f8-4bc1-8e09-98b5c38644ff"}},{"type":"ServiceEndpoint","id":"EIDc9dbd398-7c7a-4ae0-a58c-c11b66335488","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID110375d9-bf30-488f-a363-f17ff2d40e5a","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID110375d9-bf30-488f-a363-f17ff2d40e5a"}},{"type":"ServiceResponse","id":"EID44d6966c-5dcf-473e-973a-ab62b4e2eaad","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID44d6966c-5dcf-473e-973a-ab62b4e2eaad"}},{"type":"Message","id":"EID20fa2c6b-d185-4e5a-9458-d67c09321d6d","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID20fa2c6b-d185-4e5a-9458-d67c09321d6d"}},{"type":"GetParameter","id":"EID550f5940-71bb-4108-bcc6-43574aba8d2b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID461fbf97-a213-4ef3-94ff-451561fae286","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"Message","id":"EIDad03b350-662a-4d17-be4d-6b43812f1241","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDad03b350-662a-4d17-be4d-6b43812f1241"}},{"type":"ServiceEndpoint","id":"EIDa24fdaa3-a61c-48ab-b577-7f9e61ef7d43","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID7f32a776-fa39-461b-89bc-6e8b4da48c52","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID4323ab20-491a-4175-9d73-9d15513d6c8f","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID4323ab20-491a-4175-9d73-9d15513d6c8f"}},{"type":"ServiceEndpoint","id":"EIDd7a50f8b-b497-4107-9db6-337759075969","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EIDaca16b6a-6a68-4ca3-9529-c0e78a7eb136","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDaca16b6a-6a68-4ca3-9529-c0e78a7eb136"}},{"type":"ServiceEndpoint","id":"EID381d5f74-1a96-4aac-89d4-e13275206fbd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMDgwYTljZS1iODM2LTQ1YmMtOGZkZi0wN2RjYmU5NzEwMWQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDc669e284-892c-4823-ac27-82b9b0bb13f0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"GetParameter","id":"EID8b1ca9f8-c6c4-4477-9161-e3e84cdf5102","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"ServiceEndpoint","id":"EID0a96890e-3444-4cec-8515-9cec80747313","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"GetParameter","id":"EID355f8d8e-568b-4aad-937f-37fe89c7e8a2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"ServiceEndpoint","id":"EIDeef002ce-5c92-4218-9910-0ee7f70cfafd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID6cb95178-1328-4cda-822b-e8dc19af0233","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"ServiceEndpoint","id":"EID258c0753-37af-4c11-afa8-dca671e928e1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"Message","id":"EIDd4babcb7-1eda-4be6-a9ad-94cedce00034","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDd4babcb7-1eda-4be6-a9ad-94cedce00034"}},{"type":"GetParameter","id":"EID4a239a59-936b-452e-8926-bf2149f0cbeb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID475f3003-1d56-4879-9f98-0a15bbd4dd36","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID475f3003-1d56-4879-9f98-0a15bbd4dd36"}},{"type":"ServiceEndpoint","id":"EIDe5fbdefe-332e-46ee-a97c-73690ec022bd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMDgwYTljZS1iODM2LTQ1YmMtOGZkZi0wN2RjYmU5NzEwMWQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID8da03f10-528e-4e71-a7c2-37f3e8f73831","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID059774dd-f628-4dcc-b150-d8672c9cdd01","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID059774dd-f628-4dcc-b150-d8672c9cdd01"}},{"type":"ServiceEndpoint","id":"EIDeff2df7a-83d2-4f2c-9fcc-413e7ee6c099","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID7816f26b-f305-48b6-9ac7-7acdb46abc6d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID7816f26b-f305-48b6-9ac7-7acdb46abc6d"}},{"type":"ServiceResponse","id":"EIDf7188524-9709-47a9-b9ca-901d59167aeb","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDf7188524-9709-47a9-b9ca-901d59167aeb"}},{"type":"GetParameter","id":"EID1c03f3dd-ebfe-43ad-8f79-4b667c1da34e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EID4b8be115-034e-45ab-954c-7ef404d262c4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID4b8be115-034e-45ab-954c-7ef404d262c4"}},{"type":"Message","id":"EID26d000c0-2193-4719-b794-35f928322c46","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID26d000c0-2193-4719-b794-35f928322c46"}},{"type":"GetParameter","id":"EID9f8b7c60-3266-4ed6-9d77-5f50e979334a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID46f619cf-4d51-43ce-970f-a98f13164153","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID46f619cf-4d51-43ce-970f-a98f13164153"}},{"type":"ServiceEndpoint","id":"EIDc2d3296d-c02f-4435-83e5-8c5944135c6b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID0be9a590-363f-40ae-8890-2d819ba4091c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID27eaf261-42b1-403e-a0ad-53a2d126a970","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMDgwYTljZS1iODM2LTQ1YmMtOGZkZi0wN2RjYmU5NzEwMWQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID7e01fb64-bb73-4421-a0ca-7b0fc8b3939f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID7e01fb64-bb73-4421-a0ca-7b0fc8b3939f"}},{"type":"ServiceEndpoint","id":"EID8862a4fb-e836-4fde-9202-2d90b5a356ca","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"Message","id":"EID8bb06ff7-b9db-4bcb-9245-04cb91227b9e","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID8bb06ff7-b9db-4bcb-9245-04cb91227b9e"}},{"type":"GetParameter","id":"EIDe2ffdd17-49bd-42fe-a318-1320b240d17a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMDgwYTljZS1iODM2LTQ1YmMtOGZkZi0wN2RjYmU5NzEwMWQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID3b1a504b-1cbe-4327-9144-1815a4186d0e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDa101ac94-8ef5-4f41-ad27-0eda6ee50eb6","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDa101ac94-8ef5-4f41-ad27-0eda6ee50eb6"}},{"type":"ServiceResponse","id":"EID61111157-81a7-45bc-a7f4-4e2997dc7e7f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID61111157-81a7-45bc-a7f4-4e2997dc7e7f"}},{"type":"GetParameter","id":"EID3db04334-1989-4be4-843c-5ad24b19b433","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDdde722f0-eb17-4774-8daa-43b79d074450","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDd90be212-eb4b-4474-9ba7-ce28b081d053","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDc130384d-9261-431e-bb49-196286405f2e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDc130384d-9261-431e-bb49-196286405f2e"}},{"type":"GetParameter","id":"EID1e0814a8-1749-45e9-8bbd-7bcb728220b2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"ServiceResponse","id":"EID8969488e-1140-45c0-adf5-9cc67bd6ccd5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID8969488e-1140-45c0-adf5-9cc67bd6ccd5"}},{"type":"ServiceEndpoint","id":"EIDb69742c6-a728-4526-9dd0-41fc4956766d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID2cd2ab3e-d015-4c2b-87a6-dcdcb44ccedb","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID2cd2ab3e-d015-4c2b-87a6-dcdcb44ccedb"}},{"type":"ServiceEndpoint","id":"EID10c7995e-a5ef-4c4a-8fe0-1481ef7075f1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID7596f9cf-13a8-4a65-b7ef-d27622ab7489","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDa284cd1b-89e6-4bdf-b371-a5346f1c8be5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDa284cd1b-89e6-4bdf-b371-a5346f1c8be5"}},{"type":"ServiceResponse","id":"EIDe4bac67b-62cb-44cc-a9b7-ea5ca2192754","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDe4bac67b-62cb-44cc-a9b7-ea5ca2192754"}},{"type":"Message","id":"EID9625428c-f6cb-4a17-aabc-4889ce410079","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID9625428c-f6cb-4a17-aabc-4889ce410079"}},{"type":"ServiceResponse","id":"EID0454a54c-0d02-4c30-9d55-7422d0bfa3b0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID0454a54c-0d02-4c30-9d55-7422d0bfa3b0"}},{"type":"GetParameter","id":"EID4ebe3d94-2a9e-4406-8582-8138cead6594","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"ServiceResponse","id":"EID1ae9ef85-62c9-44f5-99e5-2ca9f9e99285","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID1ae9ef85-62c9-44f5-99e5-2ca9f9e99285"}},{"type":"ServiceEndpoint","id":"EIDded1b53a-0c86-4322-ae23-3ba47c78a984","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"ServiceEndpoint","id":"EID7080b2db-ef09-41c8-a868-d0d29bc15d24","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID76d8ea10-2c61-46aa-80eb-182542bc118a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID76d8ea10-2c61-46aa-80eb-182542bc118a"}},{"type":"ServiceEndpoint","id":"EIDa1695220-3142-43da-abeb-5f37e987aecc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID8125f3e2-ed06-46f6-80c4-cd5fb0d4c958","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMDgwYTljZS1iODM2LTQ1YmMtOGZkZi0wN2RjYmU5NzEwMWQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID2b005165-ca51-4afe-8238-7a3a099e324d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"ServiceEndpoint","id":"EID97ba8e15-8751-46dc-8706-4403705704a0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"Message","id":"EID0752b272-a4f2-42d9-89c4-31670ae1f831","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID0752b272-a4f2-42d9-89c4-31670ae1f831"}},{"type":"GetParameter","id":"EID0a7d67fa-822a-4046-918a-c79c7ac71475","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EIDc5589c76-ab96-4ace-a41e-a9cb49296e10","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDc5589c76-ab96-4ace-a41e-a9cb49296e10"}},{"type":"ServiceResponse","id":"EIDe070f50c-9ad1-446f-be6d-3a5e4624f7ee","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDe070f50c-9ad1-446f-be6d-3a5e4624f7ee"}},{"type":"ServiceEndpoint","id":"EIDbe12160b-e386-418c-92c4-adc7d4c9c994","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID4a64e258-fda4-43a7-b78c-beafa5d5e2cd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID4a64e258-fda4-43a7-b78c-beafa5d5e2cd"}},{"type":"ServiceResponse","id":"EIDd2ae4701-40be-4554-9dcc-398dd6feeb4f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDd2ae4701-40be-4554-9dcc-398dd6feeb4f"}},{"type":"GetParameter","id":"EID72152da1-2abe-4c33-a205-9eee85e308ce","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EIDc3eb77fc-9d7c-4049-9d14-40b691bddd66","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDc3eb77fc-9d7c-4049-9d14-40b691bddd66"}},{"type":"GetParameter","id":"EID0866ca10-7da9-4f5f-99c3-cf89c71701c5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"Message","id":"EIDcb17dc08-959c-49a5-9a78-aae311e86b13","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDcb17dc08-959c-49a5-9a78-aae311e86b13"}},{"type":"ServiceEndpoint","id":"EIDf38f5218-e6d9-471d-9387-9ec23d5014d7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"GetParameter","id":"EIDf81e3742-696f-41d3-afe8-8a1d995b021e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"Message","id":"EIDbb67bf0f-2cab-46be-8273-785f4fb62be3","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDbb67bf0f-2cab-46be-8273-785f4fb62be3"}},{"type":"ServiceResponse","id":"EIDad140a17-3421-4d63-95fd-6a7e158396eb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDad140a17-3421-4d63-95fd-6a7e158396eb"}},{"type":"GetParameter","id":"EID835fe445-cc1e-485f-9730-e7dc516707f9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID3b851a6e-a9b4-433c-b2b1-70c99ba6db14","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID3b851a6e-a9b4-433c-b2b1-70c99ba6db14"}},{"type":"ServiceResponse","id":"EID9ae5c084-e2a2-4e5a-8973-f002a871d8e9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID9ae5c084-e2a2-4e5a-8973-f002a871d8e9"}},{"type":"ServiceEndpoint","id":"EID5546cd93-70fd-451d-a24c-6f3b9bbae388","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMDgwYTljZS1iODM2LTQ1YmMtOGZkZi0wN2RjYmU5NzEwMWQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDc1506e66-c9fc-473f-b2cc-86fba1212ca5","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDc1506e66-c9fc-473f-b2cc-86fba1212ca5"}},{"type":"ServiceResponse","id":"EID32ee2641-30a8-404b-8677-03d2c9c55ff8","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID32ee2641-30a8-404b-8677-03d2c9c55ff8"}},{"type":"GetParameter","id":"EID3d6e3ca2-ab11-44ff-9d33-554ac7115e1c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L2Nzdw=="},{"type":"ServiceResponse","id":"EID507a74fb-b70b-467c-975d-cc86358970d1","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID507a74fb-b70b-467c-975d-cc86358970d1"}},{"type":"ServiceResponse","id":"EIDf8e58d1c-01aa-49af-a74c-4c3b8b8a8186","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDf8e58d1c-01aa-49af-a74c-4c3b8b8a8186"}},{"type":"GetParameter","id":"EID65e9ea46-e5af-441a-8a74-3f49df7a3247","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID994daa76-3119-490f-a2a1-f362c4d18e80","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID532e6dae-88ff-4dcc-aa6c-4ec8add4e097","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"GetParameter","id":"EIDb7b0e7dd-92d8-492e-b22c-95dc37a01a77","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDf51b3eb3-2523-40bb-80dd-b1c3f4f6d9b6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDf51b3eb3-2523-40bb-80dd-b1c3f4f6d9b6"}},{"type":"GetParameter","id":"EID7030500f-8e35-4567-9928-7ec24c637e0f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EIDe720ff00-cbc2-41e7-80b8-fc0073e38394","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"Message","id":"EIDe3e91a61-6bf1-4e6a-a25b-c948bb3c3e08","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDe3e91a61-6bf1-4e6a-a25b-c948bb3c3e08"}},{"type":"Message","id":"EID5d575c90-2324-4e5a-810c-2566a3c8cf0f","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID5d575c90-2324-4e5a-810c-2566a3c8cf0f"}},{"type":"Message","id":"EIDce7ee34b-28f0-478e-9ee0-5815db6f5e29","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDce7ee34b-28f0-478e-9ee0-5815db6f5e29"}},{"type":"GetParameter","id":"EIDef0ae17d-d821-40fd-8cc1-13160e255afd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceEndpoint","id":"EIDd4cb7124-28f0-42cc-ad2a-4fe31c4e0152","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EIDa600e51b-3420-4d9f-b41d-02d0fcfe5434","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9kb3dubG9hZHMvSW5zcGlyZV9SQ0Uuemlw"},{"type":"Message","id":"EID6281388c-48cc-4f7a-b807-84eb88cf4c36","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID6281388c-48cc-4f7a-b807-84eb88cf4c36"}},{"type":"ServiceEndpoint","id":"EIDd2076ce9-b642-45c5-ad22-3eb935cc3ef0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDe0178677-a798-428c-8b18-0ac89926e030","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDe0178677-a798-428c-8b18-0ac89926e030"}},{"type":"ServiceEndpoint","id":"EIDb33f197a-db13-446c-a603-386e5cfe5cee","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID34218333-845f-49ae-8d68-cbdd19fbd7eb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EID21478603-5948-4200-95e2-403d3b423dc2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID21478603-5948-4200-95e2-403d3b423dc2"}},{"type":"ServiceEndpoint","id":"EIDc00bee1c-f2fe-4746-ad2c-5ac7acb22c58","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"GetParameter","id":"EIDe2e9fd82-02ff-4fd4-9551-9d74f35a6734","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID2e12239e-a9e3-4399-b231-e8e11ef40fb5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDd1ac31b7-b9cc-4a25-bc47-e6ac687c14cd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDd1ac31b7-b9cc-4a25-bc47-e6ac687c14cd"}},{"type":"ServiceEndpoint","id":"EID535367ed-d582-4854-baf0-c91e1e7f6022","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9kb3dubG9hZHMvSW5zcGlyZV9SQ0Uuemlw"},{"type":"ServiceEndpoint","id":"EID663928ae-2ee7-40d7-b0a5-afb92d351cb7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDc80b0f23-c5c8-46b5-88f1-2d2675c454c9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID56ad155d-04e5-406f-90ce-838e5ec2493b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID5c6a5f74-4168-490a-b69e-99d82ff0bca9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID5c6a5f74-4168-490a-b69e-99d82ff0bca9"}},{"type":"GetParameter","id":"EID7847da1f-0e49-4bb1-a487-85c0c84d1d9f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMDgwYTljZS1iODM2LTQ1YmMtOGZkZi0wN2RjYmU5NzEwMWQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDaf1c1a07-4db7-41bb-b53c-5a3ef889f64d","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDaf1c1a07-4db7-41bb-b53c-5a3ef889f64d"}},{"type":"GetParameter","id":"EIDfb71959e-72ef-4cd7-9450-a73e159ac8bd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID7cfa17db-65db-49a9-96f1-913686d676f0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID7cfa17db-65db-49a9-96f1-913686d676f0"}},{"type":"GetParameter","id":"EIDab712c81-1c03-487a-b565-46d3ba867cbb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID2533c2fc-11c2-4dfa-8cb4-47a7b024926e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID14d986ef-67ae-4af5-8187-a3514ccbf24b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID774e4ae8-a1e2-4a28-b1b6-ae51bf9c51c9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID774e4ae8-a1e2-4a28-b1b6-ae51bf9c51c9"}},{"type":"Message","id":"EIDe677c92c-10db-4244-889e-589561e665b4","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDe677c92c-10db-4244-889e-589561e665b4"}},{"type":"ServiceResponse","id":"EID1c9641f1-c83c-4def-89ec-7f9b1fd45ce7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID1c9641f1-c83c-4def-89ec-7f9b1fd45ce7"}},{"type":"Message","id":"EID33e96d42-0228-4d72-ba21-53f77c85bb18","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID33e96d42-0228-4d72-ba21-53f77c85bb18"}},{"type":"GetParameter","id":"EIDe3f98998-2580-43e5-95c3-dd53d8e2e033","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID0082b9da-d2f0-474a-a26f-62e895f7c21c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID0bccb856-3acd-483d-9805-c08eb617b4d1","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID0bccb856-3acd-483d-9805-c08eb617b4d1"}},{"type":"GetParameter","id":"EIDcde8df6b-54cb-46aa-9155-7af014764670","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"Message","id":"EIDacb4dfcb-bed4-4c0f-8dbc-6e9956369b21","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDacb4dfcb-bed4-4c0f-8dbc-6e9956369b21"}},{"type":"ServiceEndpoint","id":"EID57fd35af-275b-4347-ba06-680f9d657083","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDf5722b48-126f-4dcc-96d4-49c88fd0f26a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDf5722b48-126f-4dcc-96d4-49c88fd0f26a"}},{"type":"Message","id":"EIDfa8ea716-765b-4763-bbda-f224c9641600","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDfa8ea716-765b-4763-bbda-f224c9641600"}},{"type":"Message","id":"EID1c9de539-a70c-4919-9f01-c98628ba5963","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID1c9de539-a70c-4919-9f01-c98628ba5963"}},{"type":"ServiceResponse","id":"EID50e823f2-2bd4-485f-b38c-65a493a42840","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID50e823f2-2bd4-485f-b38c-65a493a42840"}},{"type":"ServiceEndpoint","id":"EIDa9f1d14b-8409-4fa2-997b-c40127a3ff34","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L2Nzdw=="},{"type":"ServiceEndpoint","id":"EID6a165adf-3c5a-4774-be45-417a0aff11c3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID0aafe9c6-dd8b-42b6-b5df-2b38101f8d0c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID0aafe9c6-dd8b-42b6-b5df-2b38101f8d0c"}},{"type":"GetParameter","id":"EID66a09a37-772f-480e-834e-246643f2846f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID73c6512e-cd6a-41ab-9bcb-a93240f5f0ea","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMDgwYTljZS1iODM2LTQ1YmMtOGZkZi0wN2RjYmU5NzEwMWQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDaf879f57-da37-40f0-bd70-5ab8f0bfe56a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"ServiceEndpoint","id":"EID24520391-11fd-4f98-aa5d-c003bac70fd5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"ServiceResponse","id":"EID64a31963-e339-496a-95dc-3a8cb4b0a867","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID64a31963-e339-496a-95dc-3a8cb4b0a867"}},{"type":"Message","id":"EIDd7bcd9ae-afc0-4bb7-ab14-f58378fba693","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDd7bcd9ae-afc0-4bb7-ab14-f58378fba693"}},{"type":"GetParameter","id":"EIDb3644461-cc8b-44d6-83fc-51521ef0d3f2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID3e0086ad-40bf-4c07-870d-70c72f9ee34c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID3e0086ad-40bf-4c07-870d-70c72f9ee34c"}},{"type":"Message","id":"EIDf7f8f5ce-5fae-4a1d-ad89-83fd28dbae63","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDf7f8f5ce-5fae-4a1d-ad89-83fd28dbae63"}},{"type":"ServiceResponse","id":"EID9eb96dd7-6f1f-4926-8dca-062ae10d6963","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID9eb96dd7-6f1f-4926-8dca-062ae10d6963"}},{"type":"Message","id":"EID5506d481-e14e-4d29-81fa-e76404971ca7","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID5506d481-e14e-4d29-81fa-e76404971ca7"}},{"type":"ServiceResponse","id":"EID64d22676-a8e5-4ff2-ab9c-5135519ef903","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID64d22676-a8e5-4ff2-ab9c-5135519ef903"}},{"type":"ServiceResponse","id":"EIDfbe29c9d-5847-4f6c-85a0-5e75dfd32b0f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDfbe29c9d-5847-4f6c-85a0-5e75dfd32b0f"}},{"type":"GetParameter","id":"EID140d2730-83f0-4750-ae5c-ee94eacb3453","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID901b734c-b1e7-46f2-a72b-0e9f4df8fc42","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID901b734c-b1e7-46f2-a72b-0e9f4df8fc42"}},{"type":"ServiceResponse","id":"EID67314a4a-6f1f-4823-9b74-b8fbb45a0a28","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID67314a4a-6f1f-4823-9b74-b8fbb45a0a28"}},{"type":"Message","id":"EID69933817-bc3f-431e-a913-28b5a4ea20e4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID69933817-bc3f-431e-a913-28b5a4ea20e4"}},{"type":"ServiceResponse","id":"EIDfac6ce5b-7632-4612-931c-4d664bd1b592","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDfac6ce5b-7632-4612-931c-4d664bd1b592"}},{"type":"Message","id":"EIDab641061-50d9-40a2-8de5-1f2e3165498e","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDab641061-50d9-40a2-8de5-1f2e3165498e"}},{"type":"LogFile","id":"EIDdd8acf1d-7774-46e2-baac-413ce7d57909","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDdd8acf1d-7774-46e2-baac-413ce7d57909"}},{"type":"Message","id":"EID2b264a59-3478-407c-b27c-56db44e1eaec","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID2b264a59-3478-407c-b27c-56db44e1eaec"}},{"type":"ServiceResponse","id":"EIDb18b0e53-cb0f-44a7-8a51-e967fa941117","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDb18b0e53-cb0f-44a7-8a51-e967fa941117"}},{"type":"ServiceResponse","id":"EID68e4dc46-6409-4252-a2af-b0258ac266b8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID68e4dc46-6409-4252-a2af-b0258ac266b8"}},{"type":"Message","id":"EID1ddbd611-d1d5-43dc-bb7d-a7a9b7bd0984","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID1ddbd611-d1d5-43dc-bb7d-a7a9b7bd0984"}},{"type":"ServiceEndpoint","id":"EID9b19d116-7a73-4690-9c81-927d783433ce","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"ServiceEndpoint","id":"EIDbcffb7d5-b573-49ee-be25-2e1f654a1c37","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EIDca4b1b47-f499-4a43-b709-3e5600803012","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMDgwYTljZS1iODM2LTQ1YmMtOGZkZi0wN2RjYmU5NzEwMWQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID91e7c4dc-a202-48ed-8793-31ea522c93ba","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID91e7c4dc-a202-48ed-8793-31ea522c93ba"}},{"type":"Message","id":"EIDa899ff4d-43e4-4a7d-b0e1-762ae4d77997","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDa899ff4d-43e4-4a7d-b0e1-762ae4d77997"}},{"type":"Message","id":"EID51ceadb3-18da-4f13-80ef-8ae566fd2114","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID51ceadb3-18da-4f13-80ef-8ae566fd2114"}},{"type":"Message","id":"EID3d36b55f-033e-4e67-b583-8c1b0fa440ab","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID3d36b55f-033e-4e67-b583-8c1b0fa440ab"}},{"type":"GetParameter","id":"EID88aeaaa0-905c-471a-bdd2-518cd2ebb35d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"GetParameter","id":"EID09b067fd-83b5-46c6-88d0-5f17d24ce5ed","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDe5a919d1-4f2b-4508-8bb1-2ca63e38efe2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"ServiceEndpoint","id":"EID9f4d4fb9-01e5-4866-8d02-c21acba1ccb4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"ServiceResponse","id":"EID15c0c951-ee64-4921-a9cc-3863e04ef9aa","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID15c0c951-ee64-4921-a9cc-3863e04ef9aa"}},{"type":"Message","id":"EIDc45ddb23-98e9-46ab-a0b3-316e56e29581","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDc45ddb23-98e9-46ab-a0b3-316e56e29581"}},{"type":"ServiceResponse","id":"EIDe464e1ea-b7a4-4b39-8e98-723e85168817","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDe464e1ea-b7a4-4b39-8e98-723e85168817"}},{"type":"Message","id":"EIDb3949788-7685-4b02-917f-8b10542cd713","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDb3949788-7685-4b02-917f-8b10542cd713"}},{"type":"ServiceEndpoint","id":"EIDca189a55-d12a-492f-b95e-6d2511661257","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMDgwYTljZS1iODM2LTQ1YmMtOGZkZi0wN2RjYmU5NzEwMWQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDa2aa0877-22b7-4278-b6ec-03ed3b590fb8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMDgwYTljZS1iODM2LTQ1YmMtOGZkZi0wN2RjYmU5NzEwMWQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDcbd0047c-b9de-4223-ac2c-22ccd53b3059","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDcbd0047c-b9de-4223-ac2c-22ccd53b3059"}},{"type":"Message","id":"EIDf918566f-d414-430e-b412-4b4fd9ca1527","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDf918566f-d414-430e-b412-4b4fd9ca1527"}},{"type":"ServiceResponse","id":"EID3aacc323-b996-4497-989e-083a8407928e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID3aacc323-b996-4497-989e-083a8407928e"}},{"type":"Message","id":"EIDfd2c8104-a20e-4907-86cd-d6751642ced4","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDfd2c8104-a20e-4907-86cd-d6751642ced4"}},{"type":"GetParameter","id":"EID96d03d69-9ec0-4900-bff4-f1daafe70375","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID9ef1172c-dee9-4eed-a000-851efd875731","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID9ef1172c-dee9-4eed-a000-851efd875731"}},{"type":"ServiceEndpoint","id":"EIDe2c9cd7c-86ea-4b4e-9472-fc5ecab165cf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID6a2b5e8e-53e1-428a-ba56-468c5ec5819d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID6a2b5e8e-53e1-428a-ba56-468c5ec5819d"}},{"type":"Message","id":"EID43e3ba54-7518-4f57-a159-77143126953a","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID43e3ba54-7518-4f57-a159-77143126953a"}},{"type":"GetParameter","id":"EID9c5c2a75-d309-4db1-8e17-6c73d6b088b6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDc09663e8-36e2-4c1a-bf32-ffd25307e879","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDc09663e8-36e2-4c1a-bf32-ffd25307e879"}},{"type":"ServiceEndpoint","id":"EID23190e18-ab39-4376-ad80-e483b4f9be1e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"Message","id":"EID7b89f338-2d01-47f6-8a12-0d913cd61a54","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID7b89f338-2d01-47f6-8a12-0d913cd61a54"}},{"type":"ServiceEndpoint","id":"EIDa79ba3f9-e2e2-4e02-8924-c1d43a507dca","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID200b4f7c-954e-4d35-a6f0-341f0d54d99d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID200b4f7c-954e-4d35-a6f0-341f0d54d99d"}},{"type":"ServiceEndpoint","id":"EID9d55923e-258c-4e6e-930b-ab5dbb8e3d5c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"ServiceResponse","id":"EIDbb4c2f57-0dac-4a6e-8c2a-24b5d3cacd73","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDbb4c2f57-0dac-4a6e-8c2a-24b5d3cacd73"}},{"type":"ServiceResponse","id":"EID1154075f-d1e3-4f8d-8947-c49c8ab90a30","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID1154075f-d1e3-4f8d-8947-c49c8ab90a30"}},{"type":"Message","id":"EIDa46fcdad-802a-4123-94c1-d94bfec5c989","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDa46fcdad-802a-4123-94c1-d94bfec5c989"}},{"type":"GetParameter","id":"EID8d071031-69df-4f4a-8ae1-231523b947c0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"ServiceEndpoint","id":"EIDc44fa11e-bc2d-47be-82cb-0b3c1122c8c6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"Message","id":"EID4a73887b-f8d3-41ea-8f18-a14243b87e16","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EID4a73887b-f8d3-41ea-8f18-a14243b87e16"}},{"type":"Message","id":"EIDae0d3cf9-dd11-4466-8af5-253b9ba5b0f3","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDcac72028-9175-48c8-ad83-6974052eeeee/Attachments/EIDae0d3cf9-dd11-4466-8af5-253b9ba5b0f3"}},{"type":"GetParameter","id":"EIDebb7f000-3f43-495d-96b0-278b1c3b7f3d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvcmNlL3BzLWNoL2F0b20vdjFfMC9wcy1jaC54bWw="},{"type":"GetParameter","id":"EID5e13805e-7383-4ae4-8b07-7672c9668a28","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8wMDgwYTljZS1iODM2LTQ1YmMtOGZkZi0wN2RjYmU5NzEwMWQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:15:55Z","duration":13882,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:16:21.500 [print] EIDca62f0a7-8922-43a5-8174-fb16627693d7
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:16:21.500 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:16:21.500 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:16:21.500 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:16:21.500 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/ca62f0a7-8922-43a5-8174-fb16627693d7.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:16:21.500 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/ca62f0a7-8922-43a5-8174-fb16627693d7.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:16:21.501 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDca62f0a7-8922-43a5-8174-fb16627693d7/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.013
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.008
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.002
* print jsonFailedStepmessages 0.000
13:16:21.526 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
13:16:21.527 [print] [
  "TR.missingLinkToRegistry",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* print sortedrefs 0.000
13:16:21.527 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingLinkToRegistry"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
2.940
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:13:31.234 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/sr/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.940
13:13:31.235 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 277
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/sr/wfs?request=GetCapabilities"}}}

13:13:34.171 response time in milliseconds: 2830.56
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:13:33 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804413965","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:13:34.175 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
8.202
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:12:20.609 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 8.199
13:12:20.613 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 320
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS"}}}

13:12:28.795 response time in milliseconds: 8074.04
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:12:28 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804348612","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:12:28.810 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
2.939
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.002
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.001
13:12:33.789 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.928
13:12:33.792 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 320
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS"}}}

13:12:36.714 response time in milliseconds: 2818.58
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:12:36 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804356502","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.006
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:12:36.725 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1.168
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.003
* print testRunRequest 0.000
13:18:04.572 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.164
13:18:04.573 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 290
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/wfs?request=GetCapabilities"}}}

13:18:05.737 response time in milliseconds: 1162.66
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:18:05 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027","timestamp":"1603804685652","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/bestandbodemgebruik2015/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:18:05.737 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1:48.621
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:10:35.097 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 5.245
13:10:35.102 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 286
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml"}}}

13:10:40.340 response time in milliseconds: 4483.68
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:10:39 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:10:37 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/af469ba4-660e-459c-a8b1-63ae3525598a.json","testRuns":{"TestRun":{"id":"EIDaf469ba4-660e-459c-a8b1-63ae3525598a","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:10:37.389Z","testTasks":{"TestTask":{"id":"EIDb67adac4-7acb-4a06-a662-8d04485c4e08","parent":{"ref":"EIDaf469ba4-660e-459c-a8b1-63ae3525598a"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID4b2e83c9-2f31-42cf-8cc8-0dd6f3b4b23b"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDaf469ba4-660e-459c-a8b1-63ae3525598a/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID4b2e83c9-2f31-42cf-8cc8-0dd6f3b4b23b","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:10:35.537Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:10:36.804Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.009
13:10:40.354 [print] EIDaf469ba4-660e-459c-a8b1-63ae3525598a
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:10:40.355 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:10:40.355 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:10:40.356 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/af469ba4-660e-459c-a8b1-63ae3525598a.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:10:40.356 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDaf469ba4-660e-459c-a8b1-63ae3525598a/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.002
13:10:40.360 [print] statuspath TestRuns/EIDaf469ba4-660e-459c-a8b1-63ae3525598a
* print 'progresspath ', progresspath 0.000
13:10:40.360 [print] progresspath  TestRuns/EIDaf469ba4-660e-459c-a8b1-63ae3525598a/progress
Given path progresspath 0.000
When method GET 0.543
13:10:40.362 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf469ba4-660e-459c-a8b1-63ae3525598a/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:40.903 response time in milliseconds: 540.30
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:10:40 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"7","max":"8","log":["27.10.2020 13:10:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:37 UTC 2020)","27.10.2020 13:10:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:37 - Preparing 1 Test Task:","27.10.2020 13:10:37 -  TestTask 1 (b67adac4-7acb-4a06-a662-8d04485c4e08)","27.10.2020 13:10:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:37 -  with parameters: ","27.10.2020 13:10:37 - etf.testcases = *","27.10.2020 13:10:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:37 - Setting state to CREATED","27.10.2020 13:10:37 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:37 - Starting TestRun.af469ba4-660e-459c-a8b1-63ae3525598a at 2020-10-27T13:10:39Z","27.10.2020 13:10:39 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:39 - Project Properties: ","27.10.2020 13:10:39 - etf.testcases - * ","27.10.2020 13:10:39 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:10:39 - username -  ","27.10.2020 13:10:39 - authUser -  ","27.10.2020 13:10:39 - authMethod - basic ","27.10.2020 13:10:39 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:10:40.904 [print] {
  "val": "7",
  "max": "8",
  "log": [
    "27.10.2020 13:10:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:37 UTC 2020)",
    "27.10.2020 13:10:37 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:10:37 - Preparing 1 Test Task:",
    "27.10.2020 13:10:37 -  TestTask 1 (b67adac4-7acb-4a06-a662-8d04485c4e08)",
    "27.10.2020 13:10:37 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:10:37 -  with parameters: ",
    "27.10.2020 13:10:37 - etf.testcases = *",
    "27.10.2020 13:10:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:10:37 - Setting state to CREATED",
    "27.10.2020 13:10:37 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:10:37 - Starting TestRun.af469ba4-660e-459c-a8b1-63ae3525598a at 2020-10-27T13:10:39Z",
    "27.10.2020 13:10:39 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:10:39 - Project Properties: ",
    "27.10.2020 13:10:39 - etf.testcases - * ",
    "27.10.2020 13:10:39 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ",
    "27.10.2020 13:10:39 - username -  ",
    "27.10.2020 13:10:39 - authUser -  ",
    "27.10.2020 13:10:39 - authMethod - basic ",
    "27.10.2020 13:10:39 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 1:12.451
13:10:40.905 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf469ba4-660e-459c-a8b1-63ae3525598a/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:41.415 response time in milliseconds: 509.34
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:10:41 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["27.10.2020 13:10:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:37 UTC 2020)","27.10.2020 13:10:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:37 - Preparing 1 Test Task:","27.10.2020 13:10:37 -  TestTask 1 (b67adac4-7acb-4a06-a662-8d04485c4e08)","27.10.2020 13:10:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:37 -  with parameters: ","27.10.2020 13:10:37 - etf.testcases = *","27.10.2020 13:10:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:37 - Setting state to CREATED","27.10.2020 13:10:37 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:37 - Starting TestRun.af469ba4-660e-459c-a8b1-63ae3525598a at 2020-10-27T13:10:39Z","27.10.2020 13:10:39 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:39 - Project Properties: ","27.10.2020 13:10:39 - etf.testcases - * ","27.10.2020 13:10:39 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:10:39 - username -  ","27.10.2020 13:10:39 - authUser -  ","27.10.2020 13:10:39 - authMethod - basic ","27.10.2020 13:10:39 - TestRunTask initialized"]}

13:10:41.420 retry condition not satisfied: response.val == response.max
13:10:41.420 sleeping before retry #1
13:10:46.421 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf469ba4-660e-459c-a8b1-63ae3525598a/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:46.935 response time in milliseconds: 510.18
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:10:46 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"41","max":"42","log":["27.10.2020 13:10:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:37 UTC 2020)","27.10.2020 13:10:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:37 - Preparing 1 Test Task:","27.10.2020 13:10:37 -  TestTask 1 (b67adac4-7acb-4a06-a662-8d04485c4e08)","27.10.2020 13:10:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:37 -  with parameters: ","27.10.2020 13:10:37 - etf.testcases = *","27.10.2020 13:10:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:37 - Setting state to CREATED","27.10.2020 13:10:37 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:37 - Starting TestRun.af469ba4-660e-459c-a8b1-63ae3525598a at 2020-10-27T13:10:39Z","27.10.2020 13:10:39 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:39 - Project Properties: ","27.10.2020 13:10:39 - etf.testcases - * ","27.10.2020 13:10:39 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:10:39 - username -  ","27.10.2020 13:10:39 - authUser -  ","27.10.2020 13:10:39 - authMethod - basic ","27.10.2020 13:10:39 - TestRunTask initialized"]}

13:10:46.937 retry condition not satisfied: response.val == response.max
13:10:46.937 sleeping before retry #2
13:10:51.939 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf469ba4-660e-459c-a8b1-63ae3525598a/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:52.499 response time in milliseconds: 557.19
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:10:52 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"74","max":"75","log":["27.10.2020 13:10:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:37 UTC 2020)","27.10.2020 13:10:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:37 - Preparing 1 Test Task:","27.10.2020 13:10:37 -  TestTask 1 (b67adac4-7acb-4a06-a662-8d04485c4e08)","27.10.2020 13:10:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:37 -  with parameters: ","27.10.2020 13:10:37 - etf.testcases = *","27.10.2020 13:10:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:37 - Setting state to CREATED","27.10.2020 13:10:37 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:37 - Starting TestRun.af469ba4-660e-459c-a8b1-63ae3525598a at 2020-10-27T13:10:39Z","27.10.2020 13:10:39 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:39 - Project Properties: ","27.10.2020 13:10:39 - etf.testcases - * ","27.10.2020 13:10:39 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:10:39 - username -  ","27.10.2020 13:10:39 - authUser -  ","27.10.2020 13:10:39 - authMethod - basic ","27.10.2020 13:10:39 - TestRunTask initialized"]}

13:10:52.501 retry condition not satisfied: response.val == response.max
13:10:52.502 sleeping before retry #3
13:10:57.503 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf469ba4-660e-459c-a8b1-63ae3525598a/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:58.078 response time in milliseconds: 571.66
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:10:58 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"127","max":"128","log":["27.10.2020 13:10:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:37 UTC 2020)","27.10.2020 13:10:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:37 - Preparing 1 Test Task:","27.10.2020 13:10:37 -  TestTask 1 (b67adac4-7acb-4a06-a662-8d04485c4e08)","27.10.2020 13:10:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:37 -  with parameters: ","27.10.2020 13:10:37 - etf.testcases = *","27.10.2020 13:10:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:37 - Setting state to CREATED","27.10.2020 13:10:37 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:37 - Starting TestRun.af469ba4-660e-459c-a8b1-63ae3525598a at 2020-10-27T13:10:39Z","27.10.2020 13:10:39 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:39 - Project Properties: ","27.10.2020 13:10:39 - etf.testcases - * ","27.10.2020 13:10:39 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:10:39 - username -  ","27.10.2020 13:10:39 - authUser -  ","27.10.2020 13:10:39 - authMethod - basic ","27.10.2020 13:10:39 - TestRunTask initialized","27.10.2020 13:10:55 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:10:58.080 retry condition not satisfied: response.val == response.max
13:10:58.080 sleeping before retry #4
13:11:03.082 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf469ba4-660e-459c-a8b1-63ae3525598a/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:03.640 response time in milliseconds: 557.87
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:11:03 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:10:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:37 UTC 2020)","27.10.2020 13:10:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:37 - Preparing 1 Test Task:","27.10.2020 13:10:37 -  TestTask 1 (b67adac4-7acb-4a06-a662-8d04485c4e08)","27.10.2020 13:10:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:37 -  with parameters: ","27.10.2020 13:10:37 - etf.testcases = *","27.10.2020 13:10:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:37 - Setting state to CREATED","27.10.2020 13:10:37 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:37 - Starting TestRun.af469ba4-660e-459c-a8b1-63ae3525598a at 2020-10-27T13:10:39Z","27.10.2020 13:10:39 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:39 - Project Properties: ","27.10.2020 13:10:39 - etf.testcases - * ","27.10.2020 13:10:39 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:10:39 - username -  ","27.10.2020 13:10:39 - authUser -  ","27.10.2020 13:10:39 - authMethod - basic ","27.10.2020 13:10:39 - TestRunTask initialized","27.10.2020 13:10:55 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:11:03.641 retry condition not satisfied: response.val == response.max
13:11:03.641 sleeping before retry #5
13:11:08.642 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf469ba4-660e-459c-a8b1-63ae3525598a/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:09.160 response time in milliseconds: 517.13
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:11:09 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:10:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:37 UTC 2020)","27.10.2020 13:10:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:37 - Preparing 1 Test Task:","27.10.2020 13:10:37 -  TestTask 1 (b67adac4-7acb-4a06-a662-8d04485c4e08)","27.10.2020 13:10:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:37 -  with parameters: ","27.10.2020 13:10:37 - etf.testcases = *","27.10.2020 13:10:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:37 - Setting state to CREATED","27.10.2020 13:10:37 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:37 - Starting TestRun.af469ba4-660e-459c-a8b1-63ae3525598a at 2020-10-27T13:10:39Z","27.10.2020 13:10:39 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:39 - Project Properties: ","27.10.2020 13:10:39 - etf.testcases - * ","27.10.2020 13:10:39 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:10:39 - username -  ","27.10.2020 13:10:39 - authUser -  ","27.10.2020 13:10:39 - authMethod - basic ","27.10.2020 13:10:39 - TestRunTask initialized","27.10.2020 13:10:55 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:11:03 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:11:05 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:11:09.161 retry condition not satisfied: response.val == response.max
13:11:09.161 sleeping before retry #6
13:11:14.162 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf469ba4-660e-459c-a8b1-63ae3525598a/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:14.668 response time in milliseconds: 502.70
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:11:14 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:10:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:37 UTC 2020)","27.10.2020 13:10:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:37 - Preparing 1 Test Task:","27.10.2020 13:10:37 -  TestTask 1 (b67adac4-7acb-4a06-a662-8d04485c4e08)","27.10.2020 13:10:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:37 -  with parameters: ","27.10.2020 13:10:37 - etf.testcases = *","27.10.2020 13:10:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:37 - Setting state to CREATED","27.10.2020 13:10:37 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:37 - Starting TestRun.af469ba4-660e-459c-a8b1-63ae3525598a at 2020-10-27T13:10:39Z","27.10.2020 13:10:39 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:39 - Project Properties: ","27.10.2020 13:10:39 - etf.testcases - * ","27.10.2020 13:10:39 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:10:39 - username -  ","27.10.2020 13:10:39 - authUser -  ","27.10.2020 13:10:39 - authMethod - basic ","27.10.2020 13:10:39 - TestRunTask initialized","27.10.2020 13:10:55 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:11:03 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:11:05 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:11:14.668 retry condition not satisfied: response.val == response.max
13:11:14.668 sleeping before retry #7
13:11:19.669 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf469ba4-660e-459c-a8b1-63ae3525598a/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:20.181 response time in milliseconds: 511.13
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Tue, 27 Oct 2020 13:11:20 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:10:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:37 UTC 2020)","27.10.2020 13:10:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:37 - Preparing 1 Test Task:","27.10.2020 13:10:37 -  TestTask 1 (b67adac4-7acb-4a06-a662-8d04485c4e08)","27.10.2020 13:10:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:37 -  with parameters: ","27.10.2020 13:10:37 - etf.testcases = *","27.10.2020 13:10:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:37 - Setting state to CREATED","27.10.2020 13:10:37 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:37 - Starting TestRun.af469ba4-660e-459c-a8b1-63ae3525598a at 2020-10-27T13:10:39Z","27.10.2020 13:10:39 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:39 - Project Properties: ","27.10.2020 13:10:39 - etf.testcases - * ","27.10.2020 13:10:39 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:10:39 - username -  ","27.10.2020 13:10:39 - authUser -  ","27.10.2020 13:10:39 - authMethod - basic ","27.10.2020 13:10:39 - TestRunTask initialized","27.10.2020 13:10:55 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:11:03 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:11:05 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:11:20.183 retry condition not satisfied: response.val == response.max
13:11:20.183 sleeping before retry #8
13:11:25.184 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf469ba4-660e-459c-a8b1-63ae3525598a/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:25.722 response time in milliseconds: 528.46
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Tue, 27 Oct 2020 13:11:25 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:10:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:37 UTC 2020)","27.10.2020 13:10:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:37 - Preparing 1 Test Task:","27.10.2020 13:10:37 -  TestTask 1 (b67adac4-7acb-4a06-a662-8d04485c4e08)","27.10.2020 13:10:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:37 -  with parameters: ","27.10.2020 13:10:37 - etf.testcases = *","27.10.2020 13:10:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:37 - Setting state to CREATED","27.10.2020 13:10:37 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:37 - Starting TestRun.af469ba4-660e-459c-a8b1-63ae3525598a at 2020-10-27T13:10:39Z","27.10.2020 13:10:39 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:39 - Project Properties: ","27.10.2020 13:10:39 - etf.testcases - * ","27.10.2020 13:10:39 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:10:39 - username -  ","27.10.2020 13:10:39 - authUser -  ","27.10.2020 13:10:39 - authMethod - basic ","27.10.2020 13:10:39 - TestRunTask initialized","27.10.2020 13:10:55 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:11:03 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:11:05 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:11:25.723 retry condition not satisfied: response.val == response.max
13:11:25.723 sleeping before retry #9
13:11:30.724 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf469ba4-660e-459c-a8b1-63ae3525598a/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:31.236 response time in milliseconds: 510.78
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Tue, 27 Oct 2020 13:11:31 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:10:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:37 UTC 2020)","27.10.2020 13:10:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:37 - Preparing 1 Test Task:","27.10.2020 13:10:37 -  TestTask 1 (b67adac4-7acb-4a06-a662-8d04485c4e08)","27.10.2020 13:10:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:37 -  with parameters: ","27.10.2020 13:10:37 - etf.testcases = *","27.10.2020 13:10:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:37 - Setting state to CREATED","27.10.2020 13:10:37 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:37 - Starting TestRun.af469ba4-660e-459c-a8b1-63ae3525598a at 2020-10-27T13:10:39Z","27.10.2020 13:10:39 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:39 - Project Properties: ","27.10.2020 13:10:39 - etf.testcases - * ","27.10.2020 13:10:39 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:10:39 - username -  ","27.10.2020 13:10:39 - authUser -  ","27.10.2020 13:10:39 - authMethod - basic ","27.10.2020 13:10:39 - TestRunTask initialized","27.10.2020 13:10:55 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:11:03 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:11:05 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:11:31.236 retry condition not satisfied: response.val == response.max
13:11:31.236 sleeping before retry #10
13:11:36.238 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf469ba4-660e-459c-a8b1-63ae3525598a/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:36.750 response time in milliseconds: 512.08
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Tue, 27 Oct 2020 13:11:36 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:10:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:37 UTC 2020)","27.10.2020 13:10:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:37 - Preparing 1 Test Task:","27.10.2020 13:10:37 -  TestTask 1 (b67adac4-7acb-4a06-a662-8d04485c4e08)","27.10.2020 13:10:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:37 -  with parameters: ","27.10.2020 13:10:37 - etf.testcases = *","27.10.2020 13:10:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:37 - Setting state to CREATED","27.10.2020 13:10:37 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:37 - Starting TestRun.af469ba4-660e-459c-a8b1-63ae3525598a at 2020-10-27T13:10:39Z","27.10.2020 13:10:39 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:39 - Project Properties: ","27.10.2020 13:10:39 - etf.testcases - * ","27.10.2020 13:10:39 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:10:39 - username -  ","27.10.2020 13:10:39 - authUser -  ","27.10.2020 13:10:39 - authMethod - basic ","27.10.2020 13:10:39 - TestRunTask initialized","27.10.2020 13:10:55 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:11:03 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:11:05 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:11:36.751 retry condition not satisfied: response.val == response.max
13:11:36.751 sleeping before retry #11
13:11:41.752 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf469ba4-660e-459c-a8b1-63ae3525598a/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:42.272 response time in milliseconds: 518.62
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Tue, 27 Oct 2020 13:11:42 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:10:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:37 UTC 2020)","27.10.2020 13:10:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:37 - Preparing 1 Test Task:","27.10.2020 13:10:37 -  TestTask 1 (b67adac4-7acb-4a06-a662-8d04485c4e08)","27.10.2020 13:10:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:37 -  with parameters: ","27.10.2020 13:10:37 - etf.testcases = *","27.10.2020 13:10:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:37 - Setting state to CREATED","27.10.2020 13:10:37 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:37 - Starting TestRun.af469ba4-660e-459c-a8b1-63ae3525598a at 2020-10-27T13:10:39Z","27.10.2020 13:10:39 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:39 - Project Properties: ","27.10.2020 13:10:39 - etf.testcases - * ","27.10.2020 13:10:39 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:10:39 - username -  ","27.10.2020 13:10:39 - authUser -  ","27.10.2020 13:10:39 - authMethod - basic ","27.10.2020 13:10:39 - TestRunTask initialized","27.10.2020 13:10:55 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:11:03 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:11:05 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:11:42.275 retry condition not satisfied: response.val == response.max
13:11:42.275 sleeping before retry #12
13:11:47.276 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf469ba4-660e-459c-a8b1-63ae3525598a/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:47.795 response time in milliseconds: 517.92
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Tue, 27 Oct 2020 13:11:47 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:10:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:37 UTC 2020)","27.10.2020 13:10:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:37 - Preparing 1 Test Task:","27.10.2020 13:10:37 -  TestTask 1 (b67adac4-7acb-4a06-a662-8d04485c4e08)","27.10.2020 13:10:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:37 -  with parameters: ","27.10.2020 13:10:37 - etf.testcases = *","27.10.2020 13:10:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:37 - Setting state to CREATED","27.10.2020 13:10:37 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:37 - Starting TestRun.af469ba4-660e-459c-a8b1-63ae3525598a at 2020-10-27T13:10:39Z","27.10.2020 13:10:39 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:39 - Project Properties: ","27.10.2020 13:10:39 - etf.testcases - * ","27.10.2020 13:10:39 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:10:39 - username -  ","27.10.2020 13:10:39 - authUser -  ","27.10.2020 13:10:39 - authMethod - basic ","27.10.2020 13:10:39 - TestRunTask initialized","27.10.2020 13:10:55 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:11:03 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:11:04 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:11:05 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:11:47.798 retry condition not satisfied: response.val == response.max
13:11:47.798 sleeping before retry #13
13:11:52.800 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf469ba4-660e-459c-a8b1-63ae3525598a/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:53.353 response time in milliseconds: 553.10
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Tue, 27 Oct 2020 13:11:53 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"100","max":"100","log":["Already completed"]}

13:11:53.355 retry condition satisfied
* print response 0.000
13:11:53.356 [print] {
  "val": "100",
  "max": "100",
  "log": [
    "Already completed"
  ]
}
Given path statuspath 0.000
When method GET 30.362
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:67 - 
java.net.SocketTimeoutException: Read timed out
13:11:53.358 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf469ba4-660e-459c-a8b1-63ae3525598a
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:12:23.719 java.net.SocketTimeoutException: Read timed out, http call failed after 30361 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDaf469ba4-660e-459c-a8b1-63ae3525598a
13:12:23.719 http request failed: 
java.net.SocketTimeoutException: Read timed out
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
3.177
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.001
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:10:33.639 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/hy-p/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.174
13:10:33.642 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 279
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/hy-p/wfs?request=GetCapabilities"}}}

13:10:36.813 response time in milliseconds: 3066.65
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:10:36 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804236637","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:10:36.814 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
4.887
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:13:53.072 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/tn-w/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 4.886
13:13:53.073 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 278
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nl/rws/tn-w/wfs?request=GetCapabilities"}}}

13:13:57.958 response time in milliseconds: 4778.54
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:13:57 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804437779","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:13:57.959 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
2.079
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:21:03.961 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.078
13:21:03.962 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 320
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/wfs/v1_0?request=GetCapabilities&service=WFS"}}}

13:21:06.040 response time in milliseconds: 1972.17
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:21:05 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804865863","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:21:06.040 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1.398
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:21:32.794 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/schelpdierenpercelen/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.397
13:21:32.795 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 287
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/schelpdierenpercelen/wfs?request=GetCapabilities"}}}

13:21:34.191 response time in milliseconds: 1395.70
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:21:34 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804894104","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:21:34.192 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
8.102
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:12:23.742 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 8.100
13:12:23.743 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}

13:12:31.842 response time in milliseconds: 7993.80
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:12:31 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027","timestamp":"1603804351662","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.002
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:12:31.844 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
37.828
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.008
* print testRunRequest 0.001
13:09:45.234 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.002
And request inspireload 0.000
When method post 6.107
13:09:45.345 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 287
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml"}}}

13:09:51.294 response time in milliseconds: 5165.90
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:09:50 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:09:48 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/25840f1a-12f9-4723-b5e1-a0492146c6a1.json","testRuns":{"TestRun":{"id":"EID25840f1a-12f9-4723-b5e1-a0492146c6a1","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:09:47.876Z","testTasks":{"TestTask":{"id":"EIDd4f74283-24e6-4beb-ba47-11f915c113f7","parent":{"ref":"EID25840f1a-12f9-4723-b5e1-a0492146c6a1"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID263e8213-fe9f-453d-90e4-cf07b74b4d85"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID25840f1a-12f9-4723-b5e1-a0492146c6a1/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID263e8213-fe9f-453d-90e4-cf07b74b4d85","remoteResource":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:09:46.295Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:09:47.323Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.017
* print response.EtfItemCollection.testRuns.TestRun.id 0.028
13:09:51.391 [print] EID25840f1a-12f9-4723-b5e1-a0492146c6a1
* print response.EtfItemCollection.testRuns.TestRun.status 0.005
13:09:51.397 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.022
13:09:51.419 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.021
13:09:51.441 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/25840f1a-12f9-4723-b5e1-a0492146c6a1.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.012
13:09:51.454 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID25840f1a-12f9-4723-b5e1-a0492146c6a1/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.021
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.017
* print 'statuspath', statuspath 0.016
13:09:51.518 [print] statuspath TestRuns/EID25840f1a-12f9-4723-b5e1-a0492146c6a1
* print 'progresspath ', progresspath 0.017
13:09:51.536 [print] progresspath  TestRuns/EID25840f1a-12f9-4723-b5e1-a0492146c6a1/progress
Given path progresspath 0.000
When method GET 0.575
13:09:51.540 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID25840f1a-12f9-4723-b5e1-a0492146c6a1/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:09:52.112 response time in milliseconds: 567.90
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:09:52 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"7","max":"8","log":["27.10.2020 13:09:47 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:09:47 UTC 2020)","27.10.2020 13:09:47 - Resolving Executable Test Suite dependencies","27.10.2020 13:09:47 - Preparing 1 Test Task:","27.10.2020 13:09:47 -  TestTask 1 (d4f74283-24e6-4beb-ba47-11f915c113f7)","27.10.2020 13:09:47 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:09:47 -  with parameters: ","27.10.2020 13:09:47 - etf.testcases = *","27.10.2020 13:09:48 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:09:48 - Setting state to CREATED","27.10.2020 13:09:48 - Changed state from CREATED to INITIALIZING","27.10.2020 13:09:48 - Starting TestRun.25840f1a-12f9-4723-b5e1-a0492146c6a1 at 2020-10-27T13:09:50Z","27.10.2020 13:09:50 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:09:50 - Project Properties: ","27.10.2020 13:09:50 - etf.testcases - * ","27.10.2020 13:09:50 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","27.10.2020 13:09:50 - username -  ","27.10.2020 13:09:50 - authUser -  ","27.10.2020 13:09:50 - authMethod - basic ","27.10.2020 13:09:50 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.005
13:09:52.118 [print] {
  "val": "7",
  "max": "8",
  "log": [
    "27.10.2020 13:09:47 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:09:47 UTC 2020)",
    "27.10.2020 13:09:47 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:09:47 - Preparing 1 Test Task:",
    "27.10.2020 13:09:47 -  TestTask 1 (d4f74283-24e6-4beb-ba47-11f915c113f7)",
    "27.10.2020 13:09:47 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:09:47 -  with parameters: ",
    "27.10.2020 13:09:47 - etf.testcases = *",
    "27.10.2020 13:09:48 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:09:48 - Setting state to CREATED",
    "27.10.2020 13:09:48 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:09:48 - Starting TestRun.25840f1a-12f9-4723-b5e1-a0492146c6a1 at 2020-10-27T13:09:50Z",
    "27.10.2020 13:09:50 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:09:50 - Project Properties: ",
    "27.10.2020 13:09:50 - etf.testcases - * ",
    "27.10.2020 13:09:50 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ",
    "27.10.2020 13:09:50 - username -  ",
    "27.10.2020 13:09:50 - authUser -  ",
    "27.10.2020 13:09:50 - authMethod - basic ",
    "27.10.2020 13:09:50 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 24.529
13:09:52.132 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID25840f1a-12f9-4723-b5e1-a0492146c6a1/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:09:52.704 response time in milliseconds: 570.11
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:09:52 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["27.10.2020 13:09:47 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:09:47 UTC 2020)","27.10.2020 13:09:47 - Resolving Executable Test Suite dependencies","27.10.2020 13:09:47 - Preparing 1 Test Task:","27.10.2020 13:09:47 -  TestTask 1 (d4f74283-24e6-4beb-ba47-11f915c113f7)","27.10.2020 13:09:47 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:09:47 -  with parameters: ","27.10.2020 13:09:47 - etf.testcases = *","27.10.2020 13:09:48 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:09:48 - Setting state to CREATED","27.10.2020 13:09:48 - Changed state from CREATED to INITIALIZING","27.10.2020 13:09:48 - Starting TestRun.25840f1a-12f9-4723-b5e1-a0492146c6a1 at 2020-10-27T13:09:50Z","27.10.2020 13:09:50 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:09:50 - Project Properties: ","27.10.2020 13:09:50 - etf.testcases - * ","27.10.2020 13:09:50 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","27.10.2020 13:09:50 - username -  ","27.10.2020 13:09:50 - authUser -  ","27.10.2020 13:09:50 - authMethod - basic ","27.10.2020 13:09:50 - TestRunTask initialized"]}

13:09:52.722 retry condition not satisfied: response.val == response.max
13:09:52.725 sleeping before retry #1
13:09:57.727 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID25840f1a-12f9-4723-b5e1-a0492146c6a1/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:09:58.254 response time in milliseconds: 524.49
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:09:58 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"78","max":"79","log":["27.10.2020 13:09:47 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:09:47 UTC 2020)","27.10.2020 13:09:47 - Resolving Executable Test Suite dependencies","27.10.2020 13:09:47 - Preparing 1 Test Task:","27.10.2020 13:09:47 -  TestTask 1 (d4f74283-24e6-4beb-ba47-11f915c113f7)","27.10.2020 13:09:47 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:09:47 -  with parameters: ","27.10.2020 13:09:47 - etf.testcases = *","27.10.2020 13:09:48 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:09:48 - Setting state to CREATED","27.10.2020 13:09:48 - Changed state from CREATED to INITIALIZING","27.10.2020 13:09:48 - Starting TestRun.25840f1a-12f9-4723-b5e1-a0492146c6a1 at 2020-10-27T13:09:50Z","27.10.2020 13:09:50 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:09:50 - Project Properties: ","27.10.2020 13:09:50 - etf.testcases - * ","27.10.2020 13:09:50 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","27.10.2020 13:09:50 - username -  ","27.10.2020 13:09:50 - authUser -  ","27.10.2020 13:09:50 - authMethod - basic ","27.10.2020 13:09:50 - TestRunTask initialized"]}

13:09:58.260 retry condition not satisfied: response.val == response.max
13:09:58.260 sleeping before retry #2
13:10:03.263 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID25840f1a-12f9-4723-b5e1-a0492146c6a1/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:04.084 response time in milliseconds: 819.97
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:10:04 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"141","max":"142","log":["27.10.2020 13:09:47 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:09:47 UTC 2020)","27.10.2020 13:09:47 - Resolving Executable Test Suite dependencies","27.10.2020 13:09:47 - Preparing 1 Test Task:","27.10.2020 13:09:47 -  TestTask 1 (d4f74283-24e6-4beb-ba47-11f915c113f7)","27.10.2020 13:09:47 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:09:47 -  with parameters: ","27.10.2020 13:09:47 - etf.testcases = *","27.10.2020 13:09:48 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:09:48 - Setting state to CREATED","27.10.2020 13:09:48 - Changed state from CREATED to INITIALIZING","27.10.2020 13:09:48 - Starting TestRun.25840f1a-12f9-4723-b5e1-a0492146c6a1 at 2020-10-27T13:09:50Z","27.10.2020 13:09:50 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:09:50 - Project Properties: ","27.10.2020 13:09:50 - etf.testcases - * ","27.10.2020 13:09:50 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","27.10.2020 13:09:50 - username -  ","27.10.2020 13:09:50 - authUser -  ","27.10.2020 13:09:50 - authMethod - basic ","27.10.2020 13:09:50 - TestRunTask initialized"]}

13:10:04.085 retry condition not satisfied: response.val == response.max
13:10:04.085 sleeping before retry #3
13:10:09.087 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID25840f1a-12f9-4723-b5e1-a0492146c6a1/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:09.610 response time in milliseconds: 521.60
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:10:09 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"192","max":"193","log":["27.10.2020 13:09:47 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:09:47 UTC 2020)","27.10.2020 13:09:47 - Resolving Executable Test Suite dependencies","27.10.2020 13:09:47 - Preparing 1 Test Task:","27.10.2020 13:09:47 -  TestTask 1 (d4f74283-24e6-4beb-ba47-11f915c113f7)","27.10.2020 13:09:47 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:09:47 -  with parameters: ","27.10.2020 13:09:47 - etf.testcases = *","27.10.2020 13:09:48 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:09:48 - Setting state to CREATED","27.10.2020 13:09:48 - Changed state from CREATED to INITIALIZING","27.10.2020 13:09:48 - Starting TestRun.25840f1a-12f9-4723-b5e1-a0492146c6a1 at 2020-10-27T13:09:50Z","27.10.2020 13:09:50 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:09:50 - Project Properties: ","27.10.2020 13:09:50 - etf.testcases - * ","27.10.2020 13:09:50 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","27.10.2020 13:09:50 - username -  ","27.10.2020 13:09:50 - authUser -  ","27.10.2020 13:09:50 - authMethod - basic ","27.10.2020 13:09:50 - TestRunTask initialized","27.10.2020 13:10:08 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:10:08 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:10:09 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

13:10:09.611 retry condition not satisfied: response.val == response.max
13:10:09.612 sleeping before retry #4
13:10:14.613 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID25840f1a-12f9-4723-b5e1-a0492146c6a1/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:16.647 response time in milliseconds: 2032.52
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:10:16 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:10:16.648 retry condition satisfied
* print response 0.000
13:10:16.648 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 5.693
13:10:16.650 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID25840f1a-12f9-4723-b5e1-a0492146c6a1
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:22.285 response time in milliseconds: 4535.69
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Cache-Control: public, max-age=120
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:10:21 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Last-Modified: Tue, 27 Oct 2020 13:10:15 GMT
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/25840f1a-12f9-4723-b5e1-a0492146c6a1.json","testRuns":{"TestRun":{"id":"EID25840f1a-12f9-4723-b5e1-a0492146c6a1","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:09:47.876Z","testTasks":{"TestTask":{"id":"EIDd4f74283-24e6-4beb-ba47-11f915c113f7","parent":{"ref":"EID25840f1a-12f9-4723-b5e1-a0492146c6a1"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID263e8213-fe9f-453d-90e4-cf07b74b4d85"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EIDdc520223-b292-425b-a62b-f5b0bebf84f3"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID25840f1a-12f9-4723-b5e1-a0492146c6a1/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID263e8213-fe9f-453d-90e4-cf07b74b4d85","remoteResource":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:09:46.295Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:09:47.323Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EIDdc520223-b292-425b-a62b-f5b0bebf84f3","testObject":{"ref":"EID263e8213-fe9f-453d-90e4-cf07b74b4d85"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a2dd5d4-0175-1000-91a4-6a23afcd2a06","testCaseResults":{"TestCaseResult":[{"id":"EID6a2dd5d4-0175-1000-2f0c-feb1e557388b","testStepResults":{"TestStepResult":[{"id":"EID6a2dd5de-0175-1000-4e86-67ef6cbc844f","parent":{"ref":"EID6a2dd5d4-0175-1000-2f0c-feb1e557388b"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:09:50Z","duration":14,"status":"PASSED"},{"id":"EID6a2dd5ec-0175-1000-355a-62b666300e36","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2dd883-0175-1000-5be7-1ff1aa2d8726","parent":{"ref":"EID6a2dd5ec-0175-1000-355a-62b666300e36"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:09:50Z","duration":0,"status":"PASSED"},{"id":"EID6a2dd884-0175-1000-3802-8aa007466e1d","parent":{"ref":"EID6a2dd5ec-0175-1000-355a-62b666300e36"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:09:50Z","duration":0,"status":"PASSED"},{"id":"EID6a2dd884-0175-1000-941a-1e5966ac34e7","parent":{"ref":"EID6a2dd5ec-0175-1000-355a-62b666300e36"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:09:50Z","duration":0,"status":"PASSED"},{"id":"EID6a2dd884-0175-1000-b32f-3666a6e466db","parent":{"ref":"EID6a2dd5ec-0175-1000-355a-62b666300e36"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:09:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc3da837c-fea1-4a07-91a2-f3044d4ed973"},{"ref":"EID41a92ed6-37f8-4efc-b598-dbcae929858e"},{"ref":"EID66b4499d-7691-4ad9-9b95-e331b32337ff"}]},"parent":{"ref":"EID6a2dd5d4-0175-1000-2f0c-feb1e557388b"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:09:50Z","duration":591,"status":"PASSED"}]},"parent":{"ref":"EID6a2dd5d4-0175-1000-91a4-6a23afcd2a06"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:09:50Z","duration":688,"status":"PASSED"},{"id":"EID6a2dd884-0175-1000-70d6-50ace92bff49","testStepResults":{"TestStepResult":{"id":"EID6a2dd884-0175-1000-0fd2-a4f116f2398a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ddc06-0175-1000-c8fb-f84481143ac0","parent":{"ref":"EID6a2dd884-0175-1000-0fd2-a4f116f2398a"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:09:51Z","duration":0,"status":"PASSED"},{"id":"EID6a2ddc06-0175-1000-b0d0-8da3f41395d0","parent":{"ref":"EID6a2dd884-0175-1000-0fd2-a4f116f2398a"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:09:51Z","duration":0,"status":"PASSED"},{"id":"EID6a2ddc06-0175-1000-77a2-cffc3715e422","parent":{"ref":"EID6a2dd884-0175-1000-0fd2-a4f116f2398a"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:09:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc2a38419-c383-4ef6-b3fe-045ea46727cb"},{"ref":"EIDc5579673-7d0b-4122-b323-c533c0902c54"},{"ref":"EID50c792b7-8d7e-4eef-8d84-351e0fe79925"}]},"parent":{"ref":"EID6a2dd884-0175-1000-70d6-50ace92bff49"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:09:50Z","duration":830,"status":"PASSED"}},"parent":{"ref":"EID6a2dd5d4-0175-1000-91a4-6a23afcd2a06"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:09:50Z","duration":914,"status":"PASSED"}]},"parent":{"ref":"EIDdc520223-b292-425b-a62b-f5b0bebf84f3"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:09:50Z","duration":1602,"status":"PASSED"},{"id":"EID6a2ddc16-0175-1000-b8c4-9f3bf48e121f","testCaseResults":{"TestCaseResult":[{"id":"EID6a2ddc16-0175-1000-daf8-592313e59c8d","testStepResults":{"TestStepResult":[{"id":"EID6a2ddc16-0175-1000-2db1-97ddf3e86437","parent":{"ref":"EID6a2ddc16-0175-1000-daf8-592313e59c8d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:09:51Z","duration":830,"status":"PASSED"},{"id":"EID6a2ddc16-0175-1000-6581-83b91e3eff87","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ddd1e-0175-1000-c101-4a6ce1261def","parent":{"ref":"EID6a2ddc16-0175-1000-6581-83b91e3eff87"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:09:52Z","duration":0,"status":"PASSED"},{"id":"EID6a2ddd1e-0175-1000-b5d2-25d90044b765","parent":{"ref":"EID6a2ddc16-0175-1000-6581-83b91e3eff87"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:09:52Z","duration":0,"status":"PASSED"},{"id":"EID6a2ddd1e-0175-1000-0fef-251d497bf235","parent":{"ref":"EID6a2ddc16-0175-1000-6581-83b91e3eff87"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:09:52Z","duration":0,"status":"PASSED"},{"id":"EID6a2ddd1e-0175-1000-b2ff-f672a7a2f3f1","parent":{"ref":"EID6a2ddc16-0175-1000-6581-83b91e3eff87"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:09:52Z","duration":0,"status":"PASSED"},{"id":"EID6a2ddd1e-0175-1000-5ffc-0d452c94c653","parent":{"ref":"EID6a2ddc16-0175-1000-6581-83b91e3eff87"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:09:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID220200c6-4f72-4214-ac8e-ea4150257e4a"},{"ref":"EID570abc90-378d-4773-9032-eb64555583d8"},{"ref":"EIDa076acfc-77e0-4df9-8374-dc373cc16741"}]},"parent":{"ref":"EID6a2ddc16-0175-1000-daf8-592313e59c8d"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:09:51Z","duration":123,"status":"PASSED"}]},"parent":{"ref":"EID6a2ddc16-0175-1000-b8c4-9f3bf48e121f"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:09:51Z","duration":264,"status":"PASSED"},{"id":"EID6a2ddd1e-0175-1000-de3d-ff3e52102747","testStepResults":{"TestStepResult":[{"id":"EID6a2ddd1e-0175-1000-75a3-a4784a401373","attachments":{"attachment":[{"ref":"EIDea5041f4-320a-4b7f-bcbd-70b644471034"},{"ref":"EID7a94a5fb-14d6-45aa-b490-4b9b15ecf425"}]},"parent":{"ref":"EID6a2ddd1e-0175-1000-de3d-ff3e52102747"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:09:52Z","duration":184,"status":"PASSED"},{"id":"EID6a2dde05-0175-1000-6f68-b9ec9b222cff","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2ddf31-0175-1000-4678-4ad51fe65c65","parent":{"ref":"EID6a2dde05-0175-1000-6f68-b9ec9b222cff"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:09:52Z","duration":0,"status":"PASSED"},{"id":"EID6a2ddf31-0175-1000-6a1a-4c9ff72c3f90","parent":{"ref":"EID6a2dde05-0175-1000-6f68-b9ec9b222cff"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:09:52Z","duration":0,"status":"PASSED"},{"id":"EID6a2ddf31-0175-1000-a44c-729e4ea8bb9e","parent":{"ref":"EID6a2dde05-0175-1000-6f68-b9ec9b222cff"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:09:52Z","duration":0,"status":"PASSED"},{"id":"EID6a2ddf31-0175-1000-d661-999ce33c5ff3","parent":{"ref":"EID6a2dde05-0175-1000-6f68-b9ec9b222cff"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:09:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdbbc2610-f053-4350-8c8c-192444937171"},{"ref":"EID0240abec-5dd7-4f0b-afa0-ea09696ab689"},{"ref":"EID2fb0fe37-c3cf-4e17-b62f-4f4a67773fdf"}]},"parent":{"ref":"EID6a2ddd1e-0175-1000-de3d-ff3e52102747"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:09:52Z","duration":230,"status":"PASSED"}]},"parent":{"ref":"EID6a2ddc16-0175-1000-b8c4-9f3bf48e121f"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:09:52Z","duration":543,"status":"PASSED"},{"id":"EID6a2ddf3d-0175-1000-1a65-19075ddccd83","testStepResults":{"TestStepResult":[{"id":"EID6a2ddf3d-0175-1000-d2ae-163f2a951386","attachments":{"attachment":[{"ref":"EID8bf68118-79f4-4e7d-bdb9-0135295f5a7e"},{"ref":"EID50abce09-9cdb-417e-927d-2aa24e755e19"}]},"parent":{"ref":"EID6a2ddf3d-0175-1000-1a65-19075ddccd83"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:09:52Z","duration":113,"status":"PASSED"},{"id":"EID6a2de023-0175-1000-a91a-784f80e67ae8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2de0cb-0175-1000-a72d-9d2e506a9c33","parent":{"ref":"EID6a2de023-0175-1000-a91a-784f80e67ae8"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:09:52Z","duration":0,"status":"PASSED"},{"id":"EID6a2de0cb-0175-1000-c509-4714b78567d2","parent":{"ref":"EID6a2de023-0175-1000-a91a-784f80e67ae8"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:09:52Z","duration":0,"status":"PASSED"},{"id":"EID6a2de0cb-0175-1000-2cf8-afd02f790ed1","parent":{"ref":"EID6a2de023-0175-1000-a91a-784f80e67ae8"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:09:52Z","duration":0,"status":"PASSED"},{"id":"EID6a2de0cb-0175-1000-7e48-18e3d4c40a84","parent":{"ref":"EID6a2de023-0175-1000-a91a-784f80e67ae8"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:09:52Z","duration":0,"status":"PASSED"},{"id":"EID6a2de0cb-0175-1000-403c-dafd9a7aebc9","parent":{"ref":"EID6a2de023-0175-1000-a91a-784f80e67ae8"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:09:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID22225405-a7db-4d7d-bd68-05a4f8f42a73"},{"ref":"EID9e4a9472-6fb7-4786-bad7-23a38462e5d3"},{"ref":"EIDe5a90a8f-45d7-48ce-b090-667e519bed9c"}]},"parent":{"ref":"EID6a2ddf3d-0175-1000-1a65-19075ddccd83"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:09:52Z","duration":93,"status":"PASSED"}]},"parent":{"ref":"EID6a2ddc16-0175-1000-b8c4-9f3bf48e121f"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:09:52Z","duration":398,"status":"PASSED"},{"id":"EID6a2de0cb-0175-1000-4f39-b4107f12aeb9","testStepResults":{"TestStepResult":[{"id":"EID6a2de0cb-0175-1000-0b5c-32fa7ede1dfc","attachments":{"attachment":[{"ref":"EID57d85728-d1e2-437c-b9c4-670a6635e874"},{"ref":"EIDac97bd07-3c2c-41fe-82b6-690f556c4b99"}]},"parent":{"ref":"EID6a2de0cb-0175-1000-4f39-b4107f12aeb9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:09:52Z","duration":156,"status":"PASSED"},{"id":"EID6a2de1a1-0175-1000-32ce-70c463f8e92d","parent":{"ref":"EID6a2de0cb-0175-1000-4f39-b4107f12aeb9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:09:53Z","duration":0,"status":"PASSED"},{"id":"EID6a2de1a1-0175-1000-6cf4-1aa1288f83e4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2de26e-0175-1000-0493-f559b76c3f62","parent":{"ref":"EID6a2de1a1-0175-1000-6cf4-1aa1288f83e4"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:09:53Z","duration":0,"status":"PASSED"},{"id":"EID6a2de26e-0175-1000-ab2c-c9db989366f9","parent":{"ref":"EID6a2de1a1-0175-1000-6cf4-1aa1288f83e4"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:09:53Z","duration":0,"status":"PASSED"},{"id":"EID6a2de26e-0175-1000-2313-e3ecc28307a0","parent":{"ref":"EID6a2de1a1-0175-1000-6cf4-1aa1288f83e4"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:09:53Z","duration":0,"status":"PASSED"},{"id":"EID6a2de26e-0175-1000-e6d6-475bdaa38555","parent":{"ref":"EID6a2de1a1-0175-1000-6cf4-1aa1288f83e4"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:09:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0ec0ea9a-ff22-4640-b4ed-987ced4dbf20"},{"ref":"EIDa3bba419-7482-4c90-806c-8a3487df62b3"},{"ref":"EID64b35c90-2325-4868-b8f5-5de312915fd6"}]},"parent":{"ref":"EID6a2de0cb-0175-1000-4f39-b4107f12aeb9"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:09:53Z","duration":105,"status":"PASSED"},{"id":"EID6a2de26e-0175-1000-fbf7-4d2c1b26c53c","attachments":{"attachment":{"ref":"EIDf197d372-2e1f-425a-882b-ba5648e5d401"}},"parent":{"ref":"EID6a2de0cb-0175-1000-4f39-b4107f12aeb9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:09:53Z","duration":0,"status":"PASSED"},{"id":"EID6a2de279-0175-1000-17ee-c9853e71919a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2de347-0175-1000-ca6d-fc70fed9851d","parent":{"ref":"EID6a2de279-0175-1000-17ee-c9853e71919a"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:09:53Z","duration":0,"status":"PASSED"},{"id":"EID6a2de347-0175-1000-c679-b2a9c9b74d13","parent":{"ref":"EID6a2de279-0175-1000-17ee-c9853e71919a"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:09:53Z","duration":0,"status":"PASSED"},{"id":"EID6a2de347-0175-1000-f0b5-f110d9d5fe7b","parent":{"ref":"EID6a2de279-0175-1000-17ee-c9853e71919a"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:09:53Z","duration":0,"status":"PASSED"},{"id":"EID6a2de347-0175-1000-9d4d-9c7aff2ba019","parent":{"ref":"EID6a2de279-0175-1000-17ee-c9853e71919a"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:09:53Z","duration":0,"status":"PASSED"},{"id":"EID6a2de347-0175-1000-1690-98f4ea0a7bea","parent":{"ref":"EID6a2de279-0175-1000-17ee-c9853e71919a"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:09:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID55ac2657-6663-40b7-b88a-8f2f95bedc8e"},{"ref":"EID7a1b87f7-d148-41df-8c77-db0ba3f2e5d8"},{"ref":"EID3ef76ae7-a875-410b-8dcf-8a50d6947eb1"}]},"parent":{"ref":"EID6a2de0cb-0175-1000-4f39-b4107f12aeb9"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:09:53Z","duration":46,"status":"PASSED"}]},"parent":{"ref":"EID6a2ddc16-0175-1000-b8c4-9f3bf48e121f"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:09:52Z","duration":636,"status":"PASSED"},{"id":"EID6a2de347-0175-1000-83f3-26bab60654b7","testStepResults":{"TestStepResult":[{"id":"EID6a2de347-0175-1000-8d38-a06916ead097","attachments":{"attachment":[{"ref":"EID6b00080b-5f03-44aa-931a-456df2e4888a"},{"ref":"EID5ae90c1b-2b1d-46a0-b98c-3c2dcc510889"}]},"parent":{"ref":"EID6a2de347-0175-1000-83f3-26bab60654b7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:09:53Z","duration":194,"status":"PASSED"},{"id":"EID6a2de485-0175-1000-3815-7d349c325791","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2de52a-0175-1000-6f44-6b32f415ddd0","parent":{"ref":"EID6a2de485-0175-1000-3815-7d349c325791"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:09:54Z","duration":0,"status":"PASSED"},{"id":"EID6a2de52a-0175-1000-b1a0-c8efa4e8a301","parent":{"ref":"EID6a2de485-0175-1000-3815-7d349c325791"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:09:54Z","duration":0,"status":"PASSED"},{"id":"EID6a2de52a-0175-1000-e50e-8ae6a98f6cc9","parent":{"ref":"EID6a2de485-0175-1000-3815-7d349c325791"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:09:54Z","duration":0,"status":"PASSED"},{"id":"EID6a2de52a-0175-1000-b5ba-00a1046c3882","parent":{"ref":"EID6a2de485-0175-1000-3815-7d349c325791"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:09:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa8c01d4b-b07e-488b-96a2-c76fd82d7ed9"},{"ref":"EIDbe4ab9fa-7e05-4cbc-badf-a06bea89e9cd"},{"ref":"EID9ba2241f-fe36-4fc6-bfab-f61a4c6def4d"}]},"parent":{"ref":"EID6a2de347-0175-1000-83f3-26bab60654b7"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:09:53Z","duration":66,"status":"PASSED"}]},"parent":{"ref":"EID6a2ddc16-0175-1000-b8c4-9f3bf48e121f"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:09:53Z","duration":484,"status":"PASSED"},{"id":"EID6a2de52b-0175-1000-d5fe-c6796117609c","testStepResults":{"TestStepResult":[{"id":"EID6a2de52b-0175-1000-4f7e-cc600241cc51","attachments":{"attachment":[{"ref":"EID7d0e16be-48c2-45e0-984a-427ab6554025"},{"ref":"EIDcc2816aa-1e60-4213-b43c-6aa54b99a397"}]},"parent":{"ref":"EID6a2de52b-0175-1000-d5fe-c6796117609c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:09:54Z","duration":390,"status":"PASSED"},{"id":"EID6a2de702-0175-1000-e1a3-871459338491","parent":{"ref":"EID6a2de52b-0175-1000-d5fe-c6796117609c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:09:54Z","duration":11,"status":"PASSED"},{"id":"EID6a2de70d-0175-1000-d933-709f53c40751","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2de7d1-0175-1000-9a34-be28dc117a9f","parent":{"ref":"EID6a2de70d-0175-1000-d933-709f53c40751"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:09:54Z","duration":0,"status":"PASSED"},{"id":"EID6a2de7d1-0175-1000-706f-f457739f832e","parent":{"ref":"EID6a2de70d-0175-1000-d933-709f53c40751"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:09:54Z","duration":0,"status":"PASSED"},{"id":"EID6a2de7d1-0175-1000-d216-98c9d6ba8e32","parent":{"ref":"EID6a2de70d-0175-1000-d933-709f53c40751"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:09:54Z","duration":0,"status":"PASSED"},{"id":"EID6a2de7d1-0175-1000-2b3c-f68285cfe4c5","parent":{"ref":"EID6a2de70d-0175-1000-d933-709f53c40751"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:09:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd444127c-743a-43bd-8f25-0d5b31deafc2"},{"ref":"EID39517bd0-2741-4fa3-9bf2-29f390b13f67"},{"ref":"EIDd001c49c-90e8-42b5-91b5-a0406159053b"}]},"parent":{"ref":"EID6a2de52b-0175-1000-d5fe-c6796117609c"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:09:54Z","duration":118,"status":"PASSED"},{"id":"EID6a2de7d1-0175-1000-2083-9437746b6f2f","attachments":{"attachment":{"ref":"EIDc6398891-f817-4f07-96d2-6cd584ba905d"}},"parent":{"ref":"EID6a2de52b-0175-1000-d5fe-c6796117609c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:09:54Z","duration":1,"status":"PASSED"},{"id":"EID6a2de7e5-0175-1000-ee23-e6d16d69b8c3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2de92e-0175-1000-23ea-c7b8fe7e1934","parent":{"ref":"EID6a2de7e5-0175-1000-ee23-e6d16d69b8c3"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:09:55Z","duration":0,"status":"PASSED"},{"id":"EID6a2de92e-0175-1000-133d-95975012f68b","parent":{"ref":"EID6a2de7e5-0175-1000-ee23-e6d16d69b8c3"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:09:55Z","duration":0,"status":"PASSED"},{"id":"EID6a2de92e-0175-1000-2408-77ade3746b24","parent":{"ref":"EID6a2de7e5-0175-1000-ee23-e6d16d69b8c3"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:09:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID92bf8b08-4dd8-4702-b20b-8fc83336d385"},{"ref":"EID503663e6-c52e-4f02-b642-d5f8b67087ef"},{"ref":"EIDbd453ed3-7e76-4f1a-b54d-6e9748e704d9"}]},"parent":{"ref":"EID6a2de52b-0175-1000-d5fe-c6796117609c"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:09:54Z","duration":267,"status":"PASSED"},{"id":"EID6a2de92e-0175-1000-1385-4f0284c64d5d","attachments":{"attachment":{"ref":"EID88b37c68-392b-4517-9c89-583ee8ea9a48"}},"parent":{"ref":"EID6a2de52b-0175-1000-d5fe-c6796117609c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-27T13:09:55Z","duration":1,"status":"PASSED"},{"id":"EID6a2de93a-0175-1000-878c-45e4839632e2","attachments":{"attachment":{"ref":"EID185b0aa4-3f79-410f-a446-f6cebce61d12"}},"parent":{"ref":"EID6a2de52b-0175-1000-d5fe-c6796117609c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-27T13:09:55Z","duration":2,"status":"PASSED"}]},"parent":{"ref":"EID6a2ddc16-0175-1000-b8c4-9f3bf48e121f"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:09:54Z","duration":1067,"status":"PASSED"},{"id":"EID6a2de956-0175-1000-7565-f595e69b9fb4","testStepResults":{"TestStepResult":[{"id":"EID6a2de956-0175-1000-aa81-932a8f7db15b","attachments":{"attachment":[{"ref":"EID9d55e9bc-8dce-45e7-85f7-d6203868bf04"},{"ref":"EID1bb9a6ab-011a-4cec-9bcd-19755e771d35"}]},"parent":{"ref":"EID6a2de956-0175-1000-7565-f595e69b9fb4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:09:55Z","duration":176,"status":"PASSED"},{"id":"EID6a2dea31-0175-1000-78d9-cfd36b1250ee","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2deb6d-0175-1000-68e3-e6250119daca","parent":{"ref":"EID6a2dea31-0175-1000-78d9-cfd36b1250ee"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:09:55Z","duration":0,"status":"PASSED"},{"id":"EID6a2deb6d-0175-1000-59cc-fd3344004932","parent":{"ref":"EID6a2dea31-0175-1000-78d9-cfd36b1250ee"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:09:55Z","duration":0,"status":"PASSED"},{"id":"EID6a2deb6d-0175-1000-9d12-6b60225dd737","parent":{"ref":"EID6a2dea31-0175-1000-78d9-cfd36b1250ee"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:09:55Z","duration":0,"status":"PASSED"},{"id":"EID6a2deb6d-0175-1000-c7fd-c65b7a12d38d","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a2dea31-0175-1000-78d9-cfd36b1250ee"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:09:55Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID68a1af62-39b7-4cf7-8f94-4440be745be9"},{"ref":"EIDe2cebbbb-a38c-4398-816d-987a56e2dd97"},{"ref":"EID2188fe7b-520b-4694-9e9b-d1c686dbdc3d"}]},"parent":{"ref":"EID6a2de956-0175-1000-7565-f595e69b9fb4"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:09:55Z","duration":213,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a2ddc16-0175-1000-b8c4-9f3bf48e121f"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:09:55Z","duration":535,"status":"PASSED_MANUAL"},{"id":"EID6a2deb76-0175-1000-b172-e2a592498740","testStepResults":{"TestStepResult":{"id":"EID6a2deb76-0175-1000-0f95-3c8febfcba5e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2dec22-0175-1000-98c5-8d92b16f111b","parent":{"ref":"EID6a2deb76-0175-1000-0f95-3c8febfcba5e"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:09:55Z","duration":0,"status":"PASSED"},{"id":"EID6a2dec22-0175-1000-c265-dc69ba3f45f4","parent":{"ref":"EID6a2deb76-0175-1000-0f95-3c8febfcba5e"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:09:55Z","duration":0,"status":"PASSED"},{"id":"EID6a2dec22-0175-1000-3eb0-f3677ed5b9da","parent":{"ref":"EID6a2deb76-0175-1000-0f95-3c8febfcba5e"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:09:55Z","duration":0,"status":"PASSED"},{"id":"EID6a2dec22-0175-1000-d665-27c706320175","parent":{"ref":"EID6a2deb76-0175-1000-0f95-3c8febfcba5e"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:09:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4eac6679-a5b5-46e4-9b52-199fca0eb621"},{"ref":"EID2a2b27a9-992f-412b-b55e-3a8737598a56"},{"ref":"EID548ffdaa-448c-477e-8669-8678cdcdf401"}]},"parent":{"ref":"EID6a2deb76-0175-1000-b172-e2a592498740"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:09:55Z","duration":91,"status":"PASSED"}},"parent":{"ref":"EID6a2ddc16-0175-1000-b8c4-9f3bf48e121f"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:09:55Z","duration":172,"status":"PASSED"},{"id":"EID6a2dec22-0175-1000-1325-8e1c655a8ef1","testStepResults":{"TestStepResult":{"id":"EID6a2dec22-0175-1000-add0-6b0256c76a01","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2dec99-0175-1000-54a6-b4bb3cb3a3f5","parent":{"ref":"EID6a2dec22-0175-1000-add0-6b0256c76a01"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:09:55Z","duration":0,"status":"PASSED"},{"id":"EID6a2dec99-0175-1000-57bc-21651ccaec16","parent":{"ref":"EID6a2dec22-0175-1000-add0-6b0256c76a01"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:09:55Z","duration":0,"status":"PASSED"},{"id":"EID6a2dec99-0175-1000-6087-56ea4842e8a6","parent":{"ref":"EID6a2dec22-0175-1000-add0-6b0256c76a01"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:09:55Z","duration":0,"status":"PASSED"},{"id":"EID6a2dec99-0175-1000-3fd0-acda8536d335","parent":{"ref":"EID6a2dec22-0175-1000-add0-6b0256c76a01"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:09:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7c827069-6466-4d13-9410-5070fc86b460"},{"ref":"EID31d92420-3c02-4eab-8517-7aef8ee21111"},{"ref":"EID98f9ff9d-d037-45a0-9091-280d05c3d865"}]},"parent":{"ref":"EID6a2dec22-0175-1000-1325-8e1c655a8ef1"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:09:55Z","duration":44,"status":"PASSED"}},"parent":{"ref":"EID6a2ddc16-0175-1000-b8c4-9f3bf48e121f"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:09:55Z","duration":119,"status":"PASSED"},{"id":"EID6a2dec99-0175-1000-99fe-5dca0531db2f","testStepResults":{"TestStepResult":[{"id":"EID6a2dec99-0175-1000-20ee-54e9c1070fc5","attachments":{"attachment":[{"ref":"EIDab0d787f-2008-46e3-8700-dc0574caeb3d"},{"ref":"EID778c234b-7169-4d26-a520-52c5faf8db37"},{"ref":"EID8d572fda-5a3f-48dc-90dc-b8076908f775"},{"ref":"EID3ec65a3a-d56e-4d7f-a814-5eb146f951e5"},{"ref":"EID613c50b6-f60d-445d-95ca-3b7ab5fe6325"},{"ref":"EID5ee64b08-d4b9-4787-afb1-eae7e3a23fa5"},{"ref":"EIDf326702d-1445-475a-a125-c045bcb64386"},{"ref":"EID2705a382-6107-4d02-8785-5483b78ee1ea"},{"ref":"EIDc11faba7-1fa9-417d-9cfb-2f931e6501ec"},{"ref":"EIDff385805-375a-468a-9615-e4016a713938"},{"ref":"EID96799780-d1c5-4156-880d-16992e6ef7c0"},{"ref":"EID92794e3e-96ea-47a8-ba63-def6571b0b61"}]},"parent":{"ref":"EID6a2dec99-0175-1000-99fe-5dca0531db2f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:09:55Z","duration":491,"status":"PASSED"},{"id":"EID6a2def7a-0175-1000-82df-c5ff611f9aab","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2df001-0175-1000-3b9d-c0df00d7f738","parent":{"ref":"EID6a2def7a-0175-1000-82df-c5ff611f9aab"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-27T13:09:56Z","duration":0,"status":"PASSED"},{"id":"EID6a2df001-0175-1000-d804-c70f7f3f1deb","parent":{"ref":"EID6a2def7a-0175-1000-82df-c5ff611f9aab"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-27T13:09:56Z","duration":0,"status":"PASSED"},{"id":"EID6a2df001-0175-1000-ddd1-6149d5ee626c","parent":{"ref":"EID6a2def7a-0175-1000-82df-c5ff611f9aab"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-27T13:09:56Z","duration":0,"status":"PASSED"},{"id":"EID6a2df001-0175-1000-e93e-9bef8b5b9276","parent":{"ref":"EID6a2def7a-0175-1000-82df-c5ff611f9aab"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-27T13:09:56Z","duration":0,"status":"PASSED"},{"id":"EID6a2df001-0175-1000-38cf-7cac5c38ce53","parent":{"ref":"EID6a2def7a-0175-1000-82df-c5ff611f9aab"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-27T13:09:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfeeeadd9-2788-4c7e-9861-b31e9da53d6d"},{"ref":"EIDecfb7b64-4582-4864-acb7-94a62abca7d1"},{"ref":"EIDa4542427-35c8-422b-bd75-38e0dbc795fb"}]},"parent":{"ref":"EID6a2dec99-0175-1000-99fe-5dca0531db2f"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-27T13:09:56Z","duration":38,"status":"PASSED"}]},"parent":{"ref":"EID6a2ddc16-0175-1000-b8c4-9f3bf48e121f"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:09:55Z","duration":872,"status":"PASSED"},{"id":"EID6a2df011-0175-1000-ce54-c0da8d1527d0","testStepResults":{"TestStepResult":{"id":"EID6a2df011-0175-1000-4b63-d36f47af62d5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2df0bf-0175-1000-7148-ba658a08caff","parent":{"ref":"EID6a2df011-0175-1000-4b63-d36f47af62d5"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:09:57Z","duration":0,"status":"PASSED"},{"id":"EID6a2df0bf-0175-1000-74f3-0f14957303f4","parent":{"ref":"EID6a2df011-0175-1000-4b63-d36f47af62d5"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:09:57Z","duration":0,"status":"PASSED"},{"id":"EID6a2df0bf-0175-1000-e726-b9d11fb9964a","parent":{"ref":"EID6a2df011-0175-1000-4b63-d36f47af62d5"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:09:57Z","duration":0,"status":"PASSED"},{"id":"EID6a2df0bf-0175-1000-b8f9-70b38469d131","parent":{"ref":"EID6a2df011-0175-1000-4b63-d36f47af62d5"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:09:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf1fc3717-a77d-4960-8b74-b2de1a60a2b7"},{"ref":"EID13a9ea9d-cae8-4e4b-beb0-ca63e81834d7"},{"ref":"EIDab7a921d-1cfa-4552-a146-6a24bce075bb"}]},"parent":{"ref":"EID6a2df011-0175-1000-ce54-c0da8d1527d0"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:09:56Z","duration":101,"status":"PASSED"}},"parent":{"ref":"EID6a2ddc16-0175-1000-b8c4-9f3bf48e121f"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:09:56Z","duration":175,"status":"PASSED"},{"id":"EID6a2df0c0-0175-1000-0d4b-b29eae3af943","testStepResults":{"TestStepResult":{"id":"EID6a2df0c0-0175-1000-2521-72a08c19b72e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2df213-0175-1000-7e7e-b5680f06dd08","parent":{"ref":"EID6a2df0c0-0175-1000-2521-72a08c19b72e"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:09:57Z","duration":0,"status":"PASSED"},{"id":"EID6a2df213-0175-1000-75b6-516b2167f794","parent":{"ref":"EID6a2df0c0-0175-1000-2521-72a08c19b72e"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:09:57Z","duration":0,"status":"PASSED"},{"id":"EID6a2df213-0175-1000-6ac4-a3ed085b48c5","parent":{"ref":"EID6a2df0c0-0175-1000-2521-72a08c19b72e"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:09:57Z","duration":0,"status":"PASSED"},{"id":"EID6a2df213-0175-1000-7801-b00b31eecb36","parent":{"ref":"EID6a2df0c0-0175-1000-2521-72a08c19b72e"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:09:57Z","duration":0,"status":"PASSED"},{"id":"EID6a2df213-0175-1000-bbb2-926c592f4a7c","parent":{"ref":"EID6a2df0c0-0175-1000-2521-72a08c19b72e"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:09:57Z","duration":0,"status":"PASSED"},{"id":"EID6a2df213-0175-1000-b762-cb58b6088276","parent":{"ref":"EID6a2df0c0-0175-1000-2521-72a08c19b72e"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:09:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID17ed1997-f0bd-4867-8499-eb7f430a89bf"},{"ref":"EID5e30021d-5c2e-4946-aaff-700c5f4e2a95"},{"ref":"EIDb01e50ce-174d-4a64-8bce-3796848b3cb6"}]},"parent":{"ref":"EID6a2df0c0-0175-1000-0d4b-b29eae3af943"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:09:57Z","duration":240,"status":"PASSED"}},"parent":{"ref":"EID6a2ddc16-0175-1000-b8c4-9f3bf48e121f"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:09:57Z","duration":339,"status":"PASSED"},{"id":"EID6a2df21d-0175-1000-d674-6a3584872808","testStepResults":{"TestStepResult":{"id":"EID6a2df21d-0175-1000-5be0-f0bf91c1c7e7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2df2d8-0175-1000-b202-a17dd8ec1c5e","parent":{"ref":"EID6a2df21d-0175-1000-5be0-f0bf91c1c7e7"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:09:57Z","duration":0,"status":"PASSED"},{"id":"EID6a2df2d8-0175-1000-5ee2-2c351bdae933","parent":{"ref":"EID6a2df21d-0175-1000-5be0-f0bf91c1c7e7"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:09:57Z","duration":0,"status":"PASSED"},{"id":"EID6a2df2d8-0175-1000-645b-1c71824c2516","parent":{"ref":"EID6a2df21d-0175-1000-5be0-f0bf91c1c7e7"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:09:57Z","duration":0,"status":"PASSED"},{"id":"EID6a2df2d8-0175-1000-27ca-6164121a4a3f","parent":{"ref":"EID6a2df21d-0175-1000-5be0-f0bf91c1c7e7"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:09:57Z","duration":0,"status":"PASSED"},{"id":"EID6a2df2d8-0175-1000-9a3e-8b8f75caa429","parent":{"ref":"EID6a2df21d-0175-1000-5be0-f0bf91c1c7e7"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:09:57Z","duration":0,"status":"PASSED"},{"id":"EID6a2df2d8-0175-1000-7dd6-442bf1b0668c","parent":{"ref":"EID6a2df21d-0175-1000-5be0-f0bf91c1c7e7"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:09:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID526d0059-a2b6-4641-8389-45fef67a5419"},{"ref":"EID60ac2b0f-8d91-4dd7-b1af-bafcdd8d3fd1"},{"ref":"EID9048fe7c-aaa3-4c98-be8b-974b5a87682a"}]},"parent":{"ref":"EID6a2df21d-0175-1000-d674-6a3584872808"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:09:57Z","duration":42,"status":"PASSED"}},"parent":{"ref":"EID6a2ddc16-0175-1000-b8c4-9f3bf48e121f"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:09:57Z","duration":187,"status":"PASSED"},{"id":"EID6a2df2d8-0175-1000-1334-db317052d9fc","testStepResults":{"TestStepResult":{"id":"EID6a2df2d8-0175-1000-79c8-e44cab9004e0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2df35a-0175-1000-7cb0-88690e497b9d","parent":{"ref":"EID6a2df2d8-0175-1000-79c8-e44cab9004e0"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:09:57Z","duration":0,"status":"PASSED"},{"id":"EID6a2df35a-0175-1000-a839-c06075a38125","parent":{"ref":"EID6a2df2d8-0175-1000-79c8-e44cab9004e0"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:09:57Z","duration":0,"status":"PASSED"},{"id":"EID6a2df35a-0175-1000-3c51-ef11b4cae94b","parent":{"ref":"EID6a2df2d8-0175-1000-79c8-e44cab9004e0"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:09:57Z","duration":0,"status":"PASSED"},{"id":"EID6a2df35a-0175-1000-f7bc-940624f25090","parent":{"ref":"EID6a2df2d8-0175-1000-79c8-e44cab9004e0"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:09:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4b22aea1-065b-4f05-868e-7bcdda5313de"},{"ref":"EIDe2ececb7-1db0-4132-bcc4-48bf0d8f31ea"},{"ref":"EID37ae94b3-fc61-49b8-bf14-9fda8a8a93ca"}]},"parent":{"ref":"EID6a2df2d8-0175-1000-1334-db317052d9fc"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:09:57Z","duration":49,"status":"PASSED"}},"parent":{"ref":"EID6a2ddc16-0175-1000-b8c4-9f3bf48e121f"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:09:57Z","duration":131,"status":"PASSED"},{"id":"EID6a2df35b-0175-1000-8fc8-e525dfb7c93b","testStepResults":{"TestStepResult":[{"id":"EID6a2df362-0175-1000-ebfb-556388582405","attachments":{"attachment":[{"ref":"EID726b53b2-8dac-49d9-b7bd-1c7a34b61e75"},{"ref":"EID709573b2-05a3-4ef1-a8a6-64e00816ca6f"},{"ref":"EID4fe52655-00d9-403e-a36b-c963d185dc4a"},{"ref":"EIDe3542e7a-6404-434f-83ee-984f696f979f"}]},"parent":{"ref":"EID6a2df35b-0175-1000-8fc8-e525dfb7c93b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:09:57Z","duration":315,"status":"PASSED"},{"id":"EID6a2df560-0175-1000-21e4-374cb3aa0a99","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2df5e3-0175-1000-236e-15cdc9a14cb9","parent":{"ref":"EID6a2df560-0175-1000-21e4-374cb3aa0a99"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:09:58Z","duration":0,"status":"PASSED"},{"id":"EID6a2df5e3-0175-1000-e543-dab6fc0894cc","parent":{"ref":"EID6a2df560-0175-1000-21e4-374cb3aa0a99"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:09:58Z","duration":0,"status":"PASSED"},{"id":"EID6a2df5e3-0175-1000-bfe3-b9c1f1f64718","parent":{"ref":"EID6a2df560-0175-1000-21e4-374cb3aa0a99"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:09:58Z","duration":0,"status":"PASSED"},{"id":"EID6a2df5e3-0175-1000-d71b-e82a141026fe","parent":{"ref":"EID6a2df560-0175-1000-21e4-374cb3aa0a99"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:09:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9f619c70-d59c-4a01-b31d-3b01218f339c"},{"ref":"EID05a3ff21-1e4f-41b3-b4eb-8e2cab47065d"},{"ref":"EID726f5a1e-6bb6-4794-9b98-e07070405781"}]},"parent":{"ref":"EID6a2df35b-0175-1000-8fc8-e525dfb7c93b"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:09:58Z","duration":50,"status":"PASSED"}]},"parent":{"ref":"EID6a2ddc16-0175-1000-b8c4-9f3bf48e121f"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:09:57Z","duration":648,"status":"PASSED"},{"id":"EID6a2df5e3-0175-1000-1dc9-bc1778ba8fe9","testStepResults":{"TestStepResult":{"id":"EID6a2df5e3-0175-1000-bcc3-b45e720c2bdb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2df7f2-0175-1000-5a50-7074cfa127b0","parent":{"ref":"EID6a2df5e3-0175-1000-bcc3-b45e720c2bdb"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:09:58Z","duration":0,"status":"PASSED"},{"id":"EID6a2df7f3-0175-1000-0ead-99887e628598","parent":{"ref":"EID6a2df5e3-0175-1000-bcc3-b45e720c2bdb"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:09:58Z","duration":0,"status":"PASSED"},{"id":"EID6a2df7f3-0175-1000-086c-79075dfb6853","parent":{"ref":"EID6a2df5e3-0175-1000-bcc3-b45e720c2bdb"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:09:58Z","duration":0,"status":"PASSED"},{"id":"EID6a2df7f3-0175-1000-f819-463428c19636","parent":{"ref":"EID6a2df5e3-0175-1000-bcc3-b45e720c2bdb"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:09:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6aafb819-3495-4aef-8354-dfc082b9d30e"},{"ref":"EIDd663e0f8-c395-46a3-9928-84f2f5065aa1"},{"ref":"EID1dcd4b30-1a17-4e18-9508-4ee59014273c"}]},"parent":{"ref":"EID6a2df5e3-0175-1000-1dc9-bc1778ba8fe9"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:09:58Z","duration":418,"status":"PASSED"}},"parent":{"ref":"EID6a2ddc16-0175-1000-b8c4-9f3bf48e121f"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:09:58Z","duration":546,"status":"PASSED"},{"id":"EID6a2df80f-0175-1000-a78d-636f666d1100","testStepResults":{"TestStepResult":[{"id":"EID6a2df80f-0175-1000-959b-a556ecf00807","parent":{"ref":"EID6a2df80f-0175-1000-a78d-636f666d1100"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:09:58Z","duration":0,"status":"PASSED"},{"id":"EID6a2df80f-0175-1000-afec-a0fa1f7aac4d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2df8eb-0175-1000-bab4-b3a412b21a71","parent":{"ref":"EID6a2df80f-0175-1000-afec-a0fa1f7aac4d"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2df8eb-0175-1000-86d7-4e147715b4a0","parent":{"ref":"EID6a2df80f-0175-1000-afec-a0fa1f7aac4d"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2df8eb-0175-1000-615c-d61e513076f1","parent":{"ref":"EID6a2df80f-0175-1000-afec-a0fa1f7aac4d"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2df8eb-0175-1000-4c88-7cfdcd9c1ad0","parent":{"ref":"EID6a2df80f-0175-1000-afec-a0fa1f7aac4d"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf101fdfd-f504-4ae3-bec1-bee67b1c528e"},{"ref":"EID2f3d5868-2fde-45f1-99bc-8c1c071b6a42"},{"ref":"EID99581fb6-a9f7-4ade-9d04-5bd7fc7b55ef"}]},"parent":{"ref":"EID6a2df80f-0175-1000-a78d-636f666d1100"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:09:58Z","duration":153,"status":"PASSED"},{"id":"EID6a2df8eb-0175-1000-32f8-85ee4a88d262","attachments":{"attachment":{"ref":"EID67af2ec0-0e0b-4ef9-a08b-5151c028dbf9"}},"parent":{"ref":"EID6a2df80f-0175-1000-a78d-636f666d1100"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/63db16c5-c828-4922-95dd-5db67bc9c203.json"},"startTimestamp":"2020-10-27T13:09:59Z","duration":1,"status":"PASSED"},{"id":"EID6a2df8f8-0175-1000-0c50-f7bc93f7130c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2df9d8-0175-1000-21ba-6575bff0de7f","parent":{"ref":"EID6a2df8f8-0175-1000-0c50-f7bc93f7130c"},"resultedFrom":{"ref":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2df9d8-0175-1000-7224-ad556cdf4bfb","parent":{"ref":"EID6a2df8f8-0175-1000-0c50-f7bc93f7130c"},"resultedFrom":{"ref":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2df9d9-0175-1000-e969-12a4de584fa6","parent":{"ref":"EID6a2df8f8-0175-1000-0c50-f7bc93f7130c"},"resultedFrom":{"ref":"EID234062a4-45c2-4013-9038-71b8cc9a7d36"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2df9d9-0175-1000-4575-3e36e90af425","parent":{"ref":"EID6a2df8f8-0175-1000-0c50-f7bc93f7130c"},"resultedFrom":{"ref":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5f73723c-a269-4b1e-92aa-42c01c7fdc1b"},{"ref":"EIDe595601e-073d-4688-a047-e309698841fd"},{"ref":"EIDa0f8f9b7-c44e-4aae-b1ff-936a5702d32d"}]},"parent":{"ref":"EID6a2df80f-0175-1000-a78d-636f666d1100"},"resultedFrom":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"startTimestamp":"2020-10-27T13:09:59Z","duration":146,"status":"PASSED"},{"id":"EID6a2df9d9-0175-1000-37ff-4a8b8efefade","attachments":{"attachment":{"ref":"EID4b65eb2e-f1e4-447c-a841-b8a90f036e34"}},"parent":{"ref":"EID6a2df80f-0175-1000-a78d-636f666d1100"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/18c66972-5d73-4718-8e9c-439d4032a9fe.json"},"startTimestamp":"2020-10-27T13:09:59Z","duration":1,"status":"PASSED"},{"id":"EID6a2df9f3-0175-1000-bbc4-5bf6836c3191","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2dfa80-0175-1000-b6f2-32308b40501b","parent":{"ref":"EID6a2df9f3-0175-1000-bbc4-5bf6836c3191"},"resultedFrom":{"ref":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2dfa80-0175-1000-64cf-f0415becefae","parent":{"ref":"EID6a2df9f3-0175-1000-bbc4-5bf6836c3191"},"resultedFrom":{"ref":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2dfa80-0175-1000-ce52-d8a2cf25b4c0","parent":{"ref":"EID6a2df9f3-0175-1000-bbc4-5bf6836c3191"},"resultedFrom":{"ref":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2dfa80-0175-1000-59e5-3f0cae7f2776","parent":{"ref":"EID6a2df9f3-0175-1000-bbc4-5bf6836c3191"},"resultedFrom":{"ref":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3d2ef494-03ce-4a42-8f3d-ecaa18d2bd3a"},{"ref":"EID6015c7e4-ff39-4b3a-a83a-8a3a47fb5463"},{"ref":"EIDc7bcef9e-5a26-4229-b395-ae546133713f"}]},"parent":{"ref":"EID6a2df80f-0175-1000-a78d-636f666d1100"},"resultedFrom":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"startTimestamp":"2020-10-27T13:09:59Z","duration":36,"status":"PASSED"}]},"parent":{"ref":"EID6a2ddc16-0175-1000-b8c4-9f3bf48e121f"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:09:58Z","duration":625,"status":"PASSED"}]},"parent":{"ref":"EIDdc520223-b292-425b-a62b-f5b0bebf84f3"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:09:51Z","duration":7786,"status":"PASSED_MANUAL"},{"id":"EID6a2dfa80-0175-1000-b0bd-464e6f658264","testCaseResults":{"TestCaseResult":[{"id":"EID6a2dfa81-0175-1000-4907-7810e82705d0","testStepResults":{"TestStepResult":[{"id":"EID6a2dfa81-0175-1000-8b58-ad90558cadd8","parent":{"ref":"EID6a2dfa81-0175-1000-4907-7810e82705d0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2dfa81-0175-1000-6e69-6b76e6169435","parent":{"ref":"EID6a2dfa81-0175-1000-4907-7810e82705d0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:09:59Z","duration":418,"status":"PASSED"},{"id":"EID6a2dfa81-0175-1000-ed51-908ac46d5a69","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2dfba7-0175-1000-0a81-55cfa248c796","parent":{"ref":"EID6a2dfa81-0175-1000-ed51-908ac46d5a69"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2dfba7-0175-1000-076f-f03c17ccdd61","parent":{"ref":"EID6a2dfa81-0175-1000-ed51-908ac46d5a69"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2dfba7-0175-1000-0bf8-f746bf84197d","parent":{"ref":"EID6a2dfa81-0175-1000-ed51-908ac46d5a69"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7af9a490-3c47-42a4-be1c-c868bfd0d5a6"},{"ref":"EIDdc54305f-3776-4ad1-8946-784c4d118cc3"},{"ref":"EID751db23e-c083-440b-bf3a-6ee3cf2eadbe"}]},"parent":{"ref":"EID6a2dfa81-0175-1000-4907-7810e82705d0"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:09:59Z","duration":240,"status":"PASSED"},{"id":"EID6a2dfba7-0175-1000-03f8-d8cc08eff5d4","attachments":{"attachment":{"ref":"EID13214d49-5735-40bf-bbb5-75b880bb69f6"}},"parent":{"ref":"EID6a2dfa81-0175-1000-4907-7810e82705d0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2dfbb6-0175-1000-9a2b-6a18da8b0f72","parent":{"ref":"EID6a2dfa81-0175-1000-4907-7810e82705d0"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:09:59Z","duration":10,"status":"PASSED"}]},"parent":{"ref":"EID6a2dfa80-0175-1000-b0bd-464e6f658264"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:09:59Z","duration":319,"status":"PASSED"},{"id":"EID6a2dfbca-0175-1000-ba2b-df25f64c3c98","testStepResults":{"TestStepResult":[{"id":"EID6a2dfbca-0175-1000-c205-6c43b1c3549f","parent":{"ref":"EID6a2dfbca-0175-1000-ba2b-df25f64c3c98"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:09:59Z","duration":830,"status":"PASSED"},{"id":"EID6a2dfbca-0175-1000-8ca2-63c89b921094","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2dfc37-0175-1000-8334-107e6e0249b6","parent":{"ref":"EID6a2dfbca-0175-1000-8ca2-63c89b921094"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2dfc38-0175-1000-8fdf-aede30b2833d","parent":{"ref":"EID6a2dfbca-0175-1000-8ca2-63c89b921094"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2dfc38-0175-1000-d9d9-0a6818b82f12","parent":{"ref":"EID6a2dfbca-0175-1000-8ca2-63c89b921094"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2dfc38-0175-1000-b3be-398caeb9095e","parent":{"ref":"EID6a2dfbca-0175-1000-8ca2-63c89b921094"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"},{"id":"EID6a2dfc38-0175-1000-90bb-0a0373a14d1c","parent":{"ref":"EID6a2dfbca-0175-1000-8ca2-63c89b921094"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:09:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1ea5b02f-7a76-4a09-b153-4e379eb7a4d5"},{"ref":"EID1431dfb6-522d-4009-888e-c06b1cdb76b3"},{"ref":"EID5d004fb0-587b-46f0-b19e-8f519ffdc982"}]},"parent":{"ref":"EID6a2dfbca-0175-1000-ba2b-df25f64c3c98"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:09:59Z","duration":40,"status":"PASSED"}]},"parent":{"ref":"EID6a2dfa80-0175-1000-b0bd-464e6f658264"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:09:59Z","duration":110,"status":"PASSED"},{"id":"EID6a2dfc38-0175-1000-b857-b88aa888f417","testStepResults":{"TestStepResult":[{"id":"EID6a2dfc38-0175-1000-cc5b-da6276b6bef0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2dfce1-0175-1000-2aca-bbf6a80af627","parent":{"ref":"EID6a2dfc38-0175-1000-cc5b-da6276b6bef0"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:10:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2dfce1-0175-1000-6fc5-37a1188ec33f","parent":{"ref":"EID6a2dfc38-0175-1000-cc5b-da6276b6bef0"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:10:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2dfce1-0175-1000-8919-f865c657396d","parent":{"ref":"EID6a2dfc38-0175-1000-cc5b-da6276b6bef0"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:10:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1464d6e7-e644-4af0-a218-2d878e942b05"},{"ref":"EIDce749c3c-2317-4d3e-8bab-693fd2e7c923"},{"ref":"EID92d4ce27-8bd0-4fae-92c6-d45e2afec83c"}]},"parent":{"ref":"EID6a2dfc38-0175-1000-b857-b88aa888f417"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:09:59Z","duration":87,"status":"PASSED"},{"id":"EID6a2dfce1-0175-1000-0378-90153df6b776","attachments":{"attachment":{"ref":"EID23957038-638b-423f-b32e-edba9a780b58"}},"parent":{"ref":"EID6a2dfc38-0175-1000-b857-b88aa888f417"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-27T13:10:00Z","duration":1,"status":"PASSED"},{"id":"EID6a2dfced-0175-1000-5b8e-8d3c732cc8ab","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2dfdf9-0175-1000-64fd-24c3ad8f211f","parent":{"ref":"EID6a2dfced-0175-1000-5b8e-8d3c732cc8ab"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-27T13:10:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2dfdf9-0175-1000-7ec7-dc3d4dcf518d","parent":{"ref":"EID6a2dfced-0175-1000-5b8e-8d3c732cc8ab"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-27T13:10:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2dfdf9-0175-1000-ad4b-3d173dd46988","parent":{"ref":"EID6a2dfced-0175-1000-5b8e-8d3c732cc8ab"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-27T13:10:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2dfdf9-0175-1000-c938-c6630b7082ea","parent":{"ref":"EID6a2dfced-0175-1000-5b8e-8d3c732cc8ab"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-27T13:10:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2dfdf9-0175-1000-d50a-61cd9d852fa1","parent":{"ref":"EID6a2dfced-0175-1000-5b8e-8d3c732cc8ab"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-27T13:10:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbb595277-79da-4bba-b2c3-bc1ba3c2bdc6"},{"ref":"EID18e18c07-db4a-496d-99c8-fc0c3e4341c8"},{"ref":"EID95760cc0-d903-4bd7-a94d-581ae250e2d5"}]},"parent":{"ref":"EID6a2dfc38-0175-1000-b857-b88aa888f417"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-27T13:10:00Z","duration":113,"status":"PASSED"}]},"parent":{"ref":"EID6a2dfa80-0175-1000-b0bd-464e6f658264"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:09:59Z","duration":460,"status":"PASSED"},{"id":"EID6a2dfe04-0175-1000-827b-61f0adda8b48","testStepResults":{"TestStepResult":[{"id":"EID6a2dfe04-0175-1000-4283-d332aa01542a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2dfe88-0175-1000-f7e1-7dc684657ba5","parent":{"ref":"EID6a2dfe04-0175-1000-4283-d332aa01542a"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:10:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2dfe88-0175-1000-ad89-ae92434b240d","parent":{"ref":"EID6a2dfe04-0175-1000-4283-d332aa01542a"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:10:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2dfe88-0175-1000-9939-85f861999274","parent":{"ref":"EID6a2dfe04-0175-1000-4283-d332aa01542a"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:10:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2dfe88-0175-1000-64a6-76e794064508","parent":{"ref":"EID6a2dfe04-0175-1000-4283-d332aa01542a"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:10:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID277cf494-d947-44c9-802e-ceac338ff059"},{"ref":"EID75a964d8-5f4c-4485-a4a4-58e5c1778594"},{"ref":"EIDdd9219b5-3a3b-43f8-ab9c-b5672c251c9e"}]},"parent":{"ref":"EID6a2dfe04-0175-1000-827b-61f0adda8b48"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:10:00Z","duration":52,"status":"PASSED"},{"id":"EID6a2dfe88-0175-1000-0824-9d99257cb2e5","attachments":{"attachment":{"ref":"EID4d650728-b7f9-4ba2-8568-e50f10e1e9a0"}},"parent":{"ref":"EID6a2dfe04-0175-1000-827b-61f0adda8b48"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-27T13:10:00Z","duration":1,"status":"PASSED"},{"id":"EID6a2dfe97-0175-1000-b3ef-f4d95b66488e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2dfeed-0175-1000-0cd4-01dbc7a98c69","parent":{"ref":"EID6a2dfe97-0175-1000-b3ef-f4d95b66488e"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-27T13:10:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2dfeed-0175-1000-e413-a1e699b908ef","parent":{"ref":"EID6a2dfe97-0175-1000-b3ef-f4d95b66488e"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-27T13:10:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID83522d93-e2ff-4cf8-b570-56657df96fac"},{"ref":"EID9b00a81b-aaaf-4f13-9989-6ac4e9b58aa9"}]},"parent":{"ref":"EID6a2dfe04-0175-1000-827b-61f0adda8b48"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-27T13:10:00Z","duration":82,"status":"PASSED"},{"id":"EID6a2dfeed-0175-1000-71d1-0a5bc1333675","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e000e-0175-1000-5ee2-12e11c5734b6","parent":{"ref":"EID6a2dfeed-0175-1000-71d1-0a5bc1333675"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-27T13:10:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2e000e-0175-1000-eed4-5ab96d404485","parent":{"ref":"EID6a2dfeed-0175-1000-71d1-0a5bc1333675"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-27T13:10:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2e000e-0175-1000-1102-15987d87ac51","parent":{"ref":"EID6a2dfeed-0175-1000-71d1-0a5bc1333675"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-27T13:10:00Z","duration":0,"status":"PASSED"},{"id":"EID6a2e000e-0175-1000-ede6-19674c749663","messages":{"message":{"ref":"TR.manual.checkLengthOfDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6a2dfeed-0175-1000-71d1-0a5bc1333675"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-27T13:10:00Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID4ca5b8c3-7109-484b-b47a-29b0d53593b9"},{"ref":"EID4318db71-49bb-4cb6-b334-7a3482247ec6"},{"ref":"EID1f7edf9b-73c7-4a75-8bee-f18c07fa9333"}]},"parent":{"ref":"EID6a2dfe04-0175-1000-827b-61f0adda8b48"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-27T13:10:00Z","duration":207,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a2dfa80-0175-1000-b0bd-464e6f658264"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:10:00Z","duration":522,"status":"PASSED_MANUAL"},{"id":"EID6a2e000e-0175-1000-25cb-75d7d68895f7","testStepResults":{"TestStepResult":{"id":"EID6a2e000e-0175-1000-8f4a-3fc32af168a8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e0080-0175-1000-f5d4-9d9657bb4bc6","parent":{"ref":"EID6a2e000e-0175-1000-8f4a-3fc32af168a8"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:10:01Z","duration":0,"status":"PASSED"},{"id":"EID6a2e0080-0175-1000-ad59-5766df276983","parent":{"ref":"EID6a2e000e-0175-1000-8f4a-3fc32af168a8"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:10:01Z","duration":0,"status":"PASSED"},{"id":"EID6a2e0080-0175-1000-21bd-84655b1e882b","parent":{"ref":"EID6a2e000e-0175-1000-8f4a-3fc32af168a8"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:10:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID49877957-f14b-463a-9609-bee071150876"},{"ref":"EIDc61414d9-068a-4ff5-8403-68b20e9c9f54"},{"ref":"EID8bb1e91d-bf8b-4f38-8e19-2b4a8c8bdb16"}]},"parent":{"ref":"EID6a2e000e-0175-1000-25cb-75d7d68895f7"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:10:00Z","duration":51,"status":"PASSED"}},"parent":{"ref":"EID6a2dfa80-0175-1000-b0bd-464e6f658264"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:10:00Z","duration":115,"status":"PASSED"},{"id":"EID6a2e0081-0175-1000-2297-38bd992ed5b8","testStepResults":{"TestStepResult":{"id":"EID6a2e0081-0175-1000-bc75-a22e12147485","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e00f6-0175-1000-6f5e-9ed9b315e1ec","parent":{"ref":"EID6a2e0081-0175-1000-bc75-a22e12147485"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:10:01Z","duration":0,"status":"PASSED"},{"id":"EID6a2e00f6-0175-1000-71e1-d9204f287e0c","parent":{"ref":"EID6a2e0081-0175-1000-bc75-a22e12147485"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:10:01Z","duration":0,"status":"PASSED"},{"id":"EID6a2e00f6-0175-1000-5a91-a48452d5f41f","parent":{"ref":"EID6a2e0081-0175-1000-bc75-a22e12147485"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:10:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6996cd7b-2e30-4508-8235-be17ca5f2a9f"},{"ref":"EID5f6ff6f5-3f67-470b-9956-5fa6f778c0fb"},{"ref":"EIDaed1a97a-f8fe-4f9c-9083-7642603983b7"}]},"parent":{"ref":"EID6a2e0081-0175-1000-2297-38bd992ed5b8"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:10:01Z","duration":55,"status":"PASSED"}},"parent":{"ref":"EID6a2dfa80-0175-1000-b0bd-464e6f658264"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:10:01Z","duration":126,"status":"PASSED"},{"id":"EID6a2e00ff-0175-1000-4ba2-8ae4e96314ef","testStepResults":{"TestStepResult":{"id":"EID6a2e00ff-0175-1000-e72c-7e946aa47178","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e0342-0175-1000-1509-4d14fef7b9bc","parent":{"ref":"EID6a2e00ff-0175-1000-e72c-7e946aa47178"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:10:01Z","duration":0,"status":"PASSED"},{"id":"EID6a2e0342-0175-1000-2899-0783345c2448","parent":{"ref":"EID6a2e00ff-0175-1000-e72c-7e946aa47178"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:10:01Z","duration":0,"status":"PASSED"},{"id":"EID6a2e0342-0175-1000-1c50-f0eec2fbfd05","parent":{"ref":"EID6a2e00ff-0175-1000-e72c-7e946aa47178"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:10:01Z","duration":0,"status":"PASSED"},{"id":"EID6a2e0342-0175-1000-2676-f03de5087e48","parent":{"ref":"EID6a2e00ff-0175-1000-e72c-7e946aa47178"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:10:01Z","duration":0,"status":"PASSED"},{"id":"EID6a2e0342-0175-1000-d121-d2463b9c553f","parent":{"ref":"EID6a2e00ff-0175-1000-e72c-7e946aa47178"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:10:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc546c418-3277-4343-acfc-c423681d8f85"},{"ref":"EID80c486b2-6346-441f-9289-a0dd4794bec6"},{"ref":"EID3166eb86-ade1-44d5-9db5-3a8218d75c03"}]},"parent":{"ref":"EID6a2e00ff-0175-1000-4ba2-8ae4e96314ef"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:10:01Z","duration":484,"status":"PASSED"}},"parent":{"ref":"EID6a2dfa80-0175-1000-b0bd-464e6f658264"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:10:01Z","duration":579,"status":"PASSED"},{"id":"EID6a2e0342-0175-1000-3775-aa3c466c3b25","testStepResults":{"TestStepResult":{"id":"EID6a2e0342-0175-1000-6297-a1b83e2deeed","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e0437-0175-1000-6f1a-5ed229f1273e","parent":{"ref":"EID6a2e0342-0175-1000-6297-a1b83e2deeed"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:10:02Z","duration":0,"status":"PASSED"},{"id":"EID6a2e0437-0175-1000-509d-1e264acadafd","parent":{"ref":"EID6a2e0342-0175-1000-6297-a1b83e2deeed"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:10:02Z","duration":0,"status":"PASSED"},{"id":"EID6a2e0437-0175-1000-ed1d-87c54b070eac","parent":{"ref":"EID6a2e0342-0175-1000-6297-a1b83e2deeed"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:10:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdbd7e069-c684-4141-abd2-fa7515e6da12"},{"ref":"EID83643c19-1ae8-42ff-9cb6-ade02b5671af"},{"ref":"EIDdb6de95c-777c-4286-af70-a7df1429193f"}]},"parent":{"ref":"EID6a2e0342-0175-1000-3775-aa3c466c3b25"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:10:01Z","duration":127,"status":"PASSED"}},"parent":{"ref":"EID6a2dfa80-0175-1000-b0bd-464e6f658264"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:10:01Z","duration":246,"status":"PASSED"},{"id":"EID6a2e0438-0175-1000-e8c5-715e8c183f71","testStepResults":{"TestStepResult":{"id":"EID6a2e0438-0175-1000-e3b0-fd2082d41882","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e071e-0175-1000-d512-241df7ac6e41","parent":{"ref":"EID6a2e0438-0175-1000-e3b0-fd2082d41882"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:10:02Z","duration":0,"status":"PASSED"},{"id":"EID6a2e071e-0175-1000-edb8-8c47f4791255","parent":{"ref":"EID6a2e0438-0175-1000-e3b0-fd2082d41882"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:10:02Z","duration":0,"status":"PASSED"},{"id":"EID6a2e071e-0175-1000-668f-dd364285067f","parent":{"ref":"EID6a2e0438-0175-1000-e3b0-fd2082d41882"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:10:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc8f8c595-f7e2-4b15-954e-2e64175f5196"},{"ref":"EID973d68af-f21d-4723-a5f1-1a071717ecff"},{"ref":"EIDd10716bf-21ea-4b4f-ba4f-0063c5fbaa7c"}]},"parent":{"ref":"EID6a2e0438-0175-1000-e8c5-715e8c183f71"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:10:02Z","duration":683,"status":"PASSED"}},"parent":{"ref":"EID6a2dfa80-0175-1000-b0bd-464e6f658264"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:10:02Z","duration":762,"status":"PASSED"},{"id":"EID6a2e0754-0175-1000-0c0c-6c4cac506ffe","testStepResults":{"TestStepResult":{"id":"EID6a2e0754-0175-1000-bda3-600b615b83bc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e0df3-0175-1000-2a7e-2381a5b7039e","parent":{"ref":"EID6a2e0754-0175-1000-bda3-600b615b83bc"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:10:04Z","duration":0,"status":"PASSED"},{"id":"EID6a2e0df3-0175-1000-b183-7e4390a8dfaa","parent":{"ref":"EID6a2e0754-0175-1000-bda3-600b615b83bc"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:10:04Z","duration":0,"status":"PASSED"},{"id":"EID6a2e0df3-0175-1000-07cd-b24f2659b1e2","parent":{"ref":"EID6a2e0754-0175-1000-bda3-600b615b83bc"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:10:04Z","duration":0,"status":"PASSED"},{"id":"EID6a2e0df3-0175-1000-a6f3-f0be3a0f2a02","parent":{"ref":"EID6a2e0754-0175-1000-bda3-600b615b83bc"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:10:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2ff9b9c6-841f-4fc2-933c-9dd4c334052a"},{"ref":"EID40d3fb15-3e9c-4765-b758-ccb84c55f7e4"},{"ref":"EID2f98f51d-4e4f-4b9f-886c-4faa1556b3cd"}]},"parent":{"ref":"EID6a2e0754-0175-1000-0c0c-6c4cac506ffe"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:10:02Z","duration":1561,"status":"PASSED"}},"parent":{"ref":"EID6a2dfa80-0175-1000-b0bd-464e6f658264"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:10:02Z","duration":1696,"status":"PASSED"},{"id":"EID6a2e0df4-0175-1000-8046-17453bf3a687","testStepResults":{"TestStepResult":{"id":"EID6a2e0dfd-0175-1000-df20-4bc376ea3aa7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e107f-0175-1000-9695-80720e1ccd20","parent":{"ref":"EID6a2e0dfd-0175-1000-df20-4bc376ea3aa7"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2e107f-0175-1000-19b5-827ac836e20b","parent":{"ref":"EID6a2e0dfd-0175-1000-df20-4bc376ea3aa7"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2e107f-0175-1000-cae6-bdf5c9809217","parent":{"ref":"EID6a2e0dfd-0175-1000-df20-4bc376ea3aa7"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2e107f-0175-1000-544b-ada1e5123bd1","parent":{"ref":"EID6a2e0dfd-0175-1000-df20-4bc376ea3aa7"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:10:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID185f4df9-ed0b-45d1-b1db-c775f3a3e2fe"},{"ref":"EID73d713d1-2969-4da1-a405-eea9ec878b33"},{"ref":"EIDadfbee4a-3d25-4c2a-a03f-fc09eea080c0"}]},"parent":{"ref":"EID6a2e0df4-0175-1000-8046-17453bf3a687"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:10:04Z","duration":567,"status":"PASSED"}},"parent":{"ref":"EID6a2dfa80-0175-1000-b0bd-464e6f658264"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:10:04Z","duration":651,"status":"PASSED"},{"id":"EID6a2e107f-0175-1000-d286-c9d598d12ff1","testStepResults":{"TestStepResult":[{"id":"EID6a2e107f-0175-1000-9419-097b210907b4","parent":{"ref":"EID6a2e107f-0175-1000-d286-c9d598d12ff1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2e107f-0175-1000-1bba-790f5a4c0cd5","parent":{"ref":"EID6a2e107f-0175-1000-d286-c9d598d12ff1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:10:05Z","duration":965,"status":"PASSED"},{"id":"EID6a2e108b-0175-1000-c902-5f02ec892ca6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e1258-0175-1000-9715-a9ee3ae7ec4e","parent":{"ref":"EID6a2e108b-0175-1000-c902-5f02ec892ca6"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1258-0175-1000-39ac-4c69c245ca3c","parent":{"ref":"EID6a2e108b-0175-1000-c902-5f02ec892ca6"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1258-0175-1000-72e6-839dd28df94f","parent":{"ref":"EID6a2e108b-0175-1000-c902-5f02ec892ca6"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1258-0175-1000-7a74-20bd86807c48","parent":{"ref":"EID6a2e108b-0175-1000-c902-5f02ec892ca6"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:10:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4d7f23bc-e098-4d9d-b439-f37a5304dd23"},{"ref":"EIDeca736d5-29d6-4177-b873-2d508f583a94"},{"ref":"EIDc4ee9fff-e520-48f1-8b30-c07da9712836"}]},"parent":{"ref":"EID6a2e107f-0175-1000-d286-c9d598d12ff1"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:10:05Z","duration":398,"status":"PASSED"},{"id":"EID6a2e1258-0175-1000-135c-9b01c34aec77","attachments":{"attachment":{"ref":"EID7f945efe-00d4-4efc-bc52-fb9437dc0172"}},"parent":{"ref":"EID6a2e107f-0175-1000-d286-c9d598d12ff1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:10:05Z","duration":1,"status":"PASSED"},{"id":"EID6a2e1266-0175-1000-9c6e-3ee8e730b4c7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e1382-0175-1000-f43d-10c4b875d296","parent":{"ref":"EID6a2e1266-0175-1000-9c6e-3ee8e730b4c7"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1382-0175-1000-20f3-3bdcc82c4ffd","parent":{"ref":"EID6a2e1266-0175-1000-9c6e-3ee8e730b4c7"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1382-0175-1000-f471-fcae369e3770","parent":{"ref":"EID6a2e1266-0175-1000-9c6e-3ee8e730b4c7"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1382-0175-1000-e124-2c0cb302c6de","parent":{"ref":"EID6a2e1266-0175-1000-9c6e-3ee8e730b4c7"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1382-0175-1000-11d4-ba3841ebb8c0","parent":{"ref":"EID6a2e1266-0175-1000-9c6e-3ee8e730b4c7"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1382-0175-1000-c261-d41dc16ea3b0","parent":{"ref":"EID6a2e1266-0175-1000-9c6e-3ee8e730b4c7"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1382-0175-1000-e977-ea6102b5457f","parent":{"ref":"EID6a2e1266-0175-1000-9c6e-3ee8e730b4c7"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:10:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5e318928-6d76-4862-a331-3ec5aa5a29c7"},{"ref":"EIDb284489b-c39d-402b-ba13-a654844b23dc"},{"ref":"EIDfbebccd1-3c4d-4115-84de-616b505751e8"}]},"parent":{"ref":"EID6a2e107f-0175-1000-d286-c9d598d12ff1"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:10:05Z","duration":200,"status":"PASSED"}]},"parent":{"ref":"EID6a2dfa80-0175-1000-b0bd-464e6f658264"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:10:05Z","duration":771,"status":"PASSED"},{"id":"EID6a2e138e-0175-1000-f839-b0dd91571ced","testStepResults":{"TestStepResult":[{"id":"EID6a2e138e-0175-1000-8faf-3ec24fb68d65","parent":{"ref":"EID6a2e138e-0175-1000-f839-b0dd91571ced"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:10:05Z","duration":0,"status":"PASSED"},{"id":"EID6a2e138e-0175-1000-2507-0a73ac95fa6d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e14d3-0175-1000-0060-61df36ae64b0","parent":{"ref":"EID6a2e138e-0175-1000-2507-0a73ac95fa6d"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:10:06Z","duration":0,"status":"PASSED"},{"id":"EID6a2e14d3-0175-1000-c3b5-86d8fb5428c4","parent":{"ref":"EID6a2e138e-0175-1000-2507-0a73ac95fa6d"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:10:06Z","duration":0,"status":"PASSED"},{"id":"EID6a2e14d3-0175-1000-9509-90c017992023","parent":{"ref":"EID6a2e138e-0175-1000-2507-0a73ac95fa6d"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:10:06Z","duration":0,"status":"PASSED"},{"id":"EID6a2e14d3-0175-1000-79f5-ef8588119ee9","parent":{"ref":"EID6a2e138e-0175-1000-2507-0a73ac95fa6d"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:10:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDeca24ff0-3704-4f84-bbd4-cba4499a7a9a"},{"ref":"EID18756084-d720-4d02-ab6a-42d2bee5016a"},{"ref":"EIDbf6b91a6-16bd-41c5-a644-88a51dbf6982"}]},"parent":{"ref":"EID6a2e138e-0175-1000-f839-b0dd91571ced"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:10:05Z","duration":158,"status":"PASSED"},{"id":"EID6a2e14d3-0175-1000-7f9f-b9bfc8662d51","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a2e14f5-0175-1000-a5d9-a639ee2d1dc4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e16b8-0175-1000-f080-c24cae93f8ed","parent":{"ref":"EID6a2e14f5-0175-1000-a5d9-a639ee2d1dc4"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:10:06Z","duration":0,"status":"PASSED"},{"id":"EID6a2e16b8-0175-1000-00b3-fb73f3832af7","parent":{"ref":"EID6a2e14f5-0175-1000-a5d9-a639ee2d1dc4"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:10:06Z","duration":0,"status":"PASSED"},{"id":"EID6a2e16b8-0175-1000-428c-d15ff03e24b9","parent":{"ref":"EID6a2e14f5-0175-1000-a5d9-a639ee2d1dc4"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:10:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID60dad688-e137-4f30-b9f6-bbc001aaa16a"},{"ref":"EID23269437-3991-4731-94a7-b7be543c0af3"},{"ref":"EIDf52c4c32-a56d-4397-a2d7-bd53f4362878"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:10:06Z","duration":359,"status":"PASSED"},{"id":"EID6a2e16ba-0175-1000-6896-042b9cd92a74","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e17cd-0175-1000-ad9e-cc47146adb98","parent":{"ref":"EID6a2e16ba-0175-1000-6896-042b9cd92a74"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:10:07Z","duration":0,"status":"PASSED"},{"id":"EID6a2e17cd-0175-1000-48b9-e6f36f01310f","parent":{"ref":"EID6a2e16ba-0175-1000-6896-042b9cd92a74"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:10:07Z","duration":0,"status":"PASSED"},{"id":"EID6a2e17cd-0175-1000-c793-07dc08873ef2","parent":{"ref":"EID6a2e16ba-0175-1000-6896-042b9cd92a74"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:10:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID93572ae6-0693-4234-8704-d91611396e86"},{"ref":"EID8cf3ea93-cd47-4b0d-968b-ec9f3bb12787"},{"ref":"EIDdb0b6f92-caba-40e3-b9ab-de29170a2afa"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:10:06Z","duration":211,"status":"PASSED"},{"id":"EID6a2e17ce-0175-1000-c93d-3601ff86ff64","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e183c-0175-1000-609c-098155564855","parent":{"ref":"EID6a2e17ce-0175-1000-c93d-3601ff86ff64"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:10:07Z","duration":1,"status":"PASSED"},{"id":"EID6a2e183d-0175-1000-401d-59d5281745ec","parent":{"ref":"EID6a2e17ce-0175-1000-c93d-3601ff86ff64"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:10:07Z","duration":0,"status":"PASSED"},{"id":"EID6a2e183d-0175-1000-6335-c74ac1cabf36","parent":{"ref":"EID6a2e17ce-0175-1000-c93d-3601ff86ff64"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:10:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2e03a3aa-1511-4729-a27b-2f0ea89e663b"},{"ref":"EID006efbe2-109e-45ed-8366-1387f65e0a8a"},{"ref":"EID31975282-bd65-41ce-9505-53a6e09f3cb6"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:10:07Z","duration":47,"status":"PASSED"}]},"parent":{"ref":"EID6a2e138e-0175-1000-f839-b0dd91571ced"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:10:06Z","duration":874,"status":"PASSED"},{"id":"EID6a2e183e-0175-1000-ca0d-1e6f26937a17","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e19aa-0175-1000-392f-34a41f386b1b","parent":{"ref":"EID6a2e183e-0175-1000-ca0d-1e6f26937a17"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:10:07Z","duration":0,"status":"PASSED"},{"id":"EID6a2e19aa-0175-1000-d170-462ead3d73f7","parent":{"ref":"EID6a2e183e-0175-1000-ca0d-1e6f26937a17"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:10:07Z","duration":0,"status":"PASSED"},{"id":"EID6a2e19aa-0175-1000-6e47-67ed94350676","parent":{"ref":"EID6a2e183e-0175-1000-ca0d-1e6f26937a17"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:10:07Z","duration":0,"status":"PASSED"},{"id":"EID6a2e19aa-0175-1000-84e1-0984010a16fe","parent":{"ref":"EID6a2e183e-0175-1000-ca0d-1e6f26937a17"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:10:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc9401b5f-329e-41c6-a411-2c339b656794"},{"ref":"EIDde127691-004d-4dfd-b816-1f740eecaa37"},{"ref":"EID32555643-f6e7-462f-87c0-758290c48588"}]},"parent":{"ref":"EID6a2e138e-0175-1000-f839-b0dd91571ced"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:10:07Z","duration":214,"status":"PASSED"}]},"parent":{"ref":"EID6a2dfa80-0175-1000-b0bd-464e6f658264"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:10:05Z","duration":1574,"status":"PASSED"},{"id":"EID6a2e19bd-0175-1000-1aea-ef72d1dcdf71","testStepResults":{"TestStepResult":{"id":"EID6a2e19bd-0175-1000-0eef-15fc79a75514","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e1a9e-0175-1000-f143-182ab028ba76","parent":{"ref":"EID6a2e19bd-0175-1000-0eef-15fc79a75514"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:10:07Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1a9e-0175-1000-71ec-35f043736476","parent":{"ref":"EID6a2e19bd-0175-1000-0eef-15fc79a75514"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:10:07Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1a9e-0175-1000-9aee-c5486b60c1cf","parent":{"ref":"EID6a2e19bd-0175-1000-0eef-15fc79a75514"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:10:07Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1a9e-0175-1000-5dbb-0db0aa7006dc","parent":{"ref":"EID6a2e19bd-0175-1000-0eef-15fc79a75514"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:10:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID00f2093a-859a-4a4f-b697-1fc806c33769"},{"ref":"EID7ff2a854-23e7-49cb-8618-3c14b6bad88c"},{"ref":"EID6212dfa3-cc67-41da-99eb-c68774678d7c"}]},"parent":{"ref":"EID6a2e19bd-0175-1000-1aea-ef72d1dcdf71"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:10:07Z","duration":151,"status":"PASSED"}},"parent":{"ref":"EID6a2dfa80-0175-1000-b0bd-464e6f658264"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:10:07Z","duration":225,"status":"PASSED"}]},"parent":{"ref":"EIDdc520223-b292-425b-a62b-f5b0bebf84f3"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:09:59Z","duration":8223,"status":"PASSED_MANUAL"},{"id":"EID6a2e1a9f-0175-1000-01b2-1288e02c1b6c","testCaseResults":{"TestCaseResult":[{"id":"EID6a2e1aa0-0175-1000-cbaf-f80152009edd","testStepResults":{"TestStepResult":[{"id":"EID6a2e1aaa-0175-1000-42cd-47cf2add96e2","parent":{"ref":"EID6a2e1aa0-0175-1000-cbaf-f80152009edd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:10:07Z","duration":779,"status":"PASSED"},{"id":"EID6a2e1aaa-0175-1000-9a3e-b5c49ba9b792","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e1d0e-0175-1000-c596-f1f074ceb7b7","parent":{"ref":"EID6a2e1aaa-0175-1000-9a3e-b5c49ba9b792"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-27T13:10:08Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1d0e-0175-1000-36a6-e4f7194ee27a","parent":{"ref":"EID6a2e1aaa-0175-1000-9a3e-b5c49ba9b792"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-27T13:10:08Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1d0e-0175-1000-bb5e-34c9bfea9fdc","parent":{"ref":"EID6a2e1aaa-0175-1000-9a3e-b5c49ba9b792"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-27T13:10:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID22126df1-edfa-4e0b-b999-20b273ba2c48"},{"ref":"EIDc5e6ed20-ba17-4077-94a2-238a79939444"},{"ref":"EID6b43ca99-b33e-4dec-8479-efb9778a0991"}]},"parent":{"ref":"EID6a2e1aa0-0175-1000-cbaf-f80152009edd"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-27T13:10:07Z","duration":551,"status":"PASSED"},{"id":"EID6a2e1d0f-0175-1000-bf7c-72e137d60f9d","attachments":{"attachment":{"ref":"EID4063b9af-27c2-427e-9cda-70029c2b92fb"}},"parent":{"ref":"EID6a2e1aa0-0175-1000-cbaf-f80152009edd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-27T13:10:08Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a2e1a9f-0175-1000-01b2-1288e02c1b6c"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:10:07Z","duration":635,"status":"PASSED"},{"id":"EID6a2e1d25-0175-1000-0157-aa9aa29e9e7a","testStepResults":{"TestStepResult":[{"id":"EID6a2e1d25-0175-1000-bf08-7d8713e5c3f3","parent":{"ref":"EID6a2e1d25-0175-1000-0157-aa9aa29e9e7a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:10:08Z","duration":779,"status":"PASSED"},{"id":"EID6a2e1d25-0175-1000-76a8-648fad7e66f1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e1e16-0175-1000-2b52-586405e5d205","parent":{"ref":"EID6a2e1d25-0175-1000-76a8-648fad7e66f1"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-27T13:10:08Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1e16-0175-1000-adc7-e09b6c46341c","parent":{"ref":"EID6a2e1d25-0175-1000-76a8-648fad7e66f1"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-27T13:10:08Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1e16-0175-1000-3a67-a8592ac078d4","parent":{"ref":"EID6a2e1d25-0175-1000-76a8-648fad7e66f1"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-27T13:10:08Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1e16-0175-1000-daab-0888edc55bda","parent":{"ref":"EID6a2e1d25-0175-1000-76a8-648fad7e66f1"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-27T13:10:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID533b18c6-97ce-487b-9753-6bf743e6bde7"},{"ref":"EIDff3df6d7-7056-4644-89da-434872c49c10"},{"ref":"EID88e6f3a1-a9ae-4ffb-a400-f90c8e0523fa"}]},"parent":{"ref":"EID6a2e1d25-0175-1000-0157-aa9aa29e9e7a"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-27T13:10:08Z","duration":172,"status":"PASSED"}]},"parent":{"ref":"EID6a2e1a9f-0175-1000-01b2-1288e02c1b6c"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:10:08Z","duration":241,"status":"PASSED"},{"id":"EID6a2e1e1f-0175-1000-7775-cae26e5c0cfa","testStepResults":{"TestStepResult":[{"id":"EID6a2e1e1f-0175-1000-bbb7-8e528de016ca","parent":{"ref":"EID6a2e1e1f-0175-1000-7775-cae26e5c0cfa"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:10:08Z","duration":779,"status":"PASSED"},{"id":"EID6a2e1e20-0175-1000-7fb5-fc8a31a3900f","parent":{"ref":"EID6a2e1e1f-0175-1000-7775-cae26e5c0cfa"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-27T13:10:08Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1e20-0175-1000-4ba0-39b37a7f8055","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e1ede-0175-1000-b850-f2a00276da4d","parent":{"ref":"EID6a2e1e20-0175-1000-4ba0-39b37a7f8055"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-27T13:10:08Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1ede-0175-1000-733f-fafa743312f0","parent":{"ref":"EID6a2e1e20-0175-1000-4ba0-39b37a7f8055"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-27T13:10:08Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1ede-0175-1000-ef75-dc2b56413a77","parent":{"ref":"EID6a2e1e20-0175-1000-4ba0-39b37a7f8055"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-27T13:10:08Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1ede-0175-1000-ed92-d7207db724a2","parent":{"ref":"EID6a2e1e20-0175-1000-4ba0-39b37a7f8055"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-27T13:10:08Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1ede-0175-1000-2e2b-fe1a4a7faff5","parent":{"ref":"EID6a2e1e20-0175-1000-4ba0-39b37a7f8055"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-27T13:10:08Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1ede-0175-1000-aa49-011c2ec827c4","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}}},"parent":{"ref":"EID6a2e1e20-0175-1000-4ba0-39b37a7f8055"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-27T13:10:08Z","duration":0,"status":"FAILED"},{"id":"EID6a2e1ede-0175-1000-7525-5ebef76e2343","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6a2e1e20-0175-1000-4ba0-39b37a7f8055"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-27T13:10:08Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID8fd2d06a-738f-40fd-b759-3f94bc10734b"},{"ref":"EIDa4ea7e93-5477-4093-9230-38c66fb3e531"},{"ref":"EID4857d4ce-de0b-4480-9c7d-3ac0a5e3138a"}]},"parent":{"ref":"EID6a2e1e1f-0175-1000-7775-cae26e5c0cfa"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-27T13:10:08Z","duration":82,"status":"FAILED"}]},"parent":{"ref":"EID6a2e1a9f-0175-1000-01b2-1288e02c1b6c"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:10:08Z","duration":191,"status":"FAILED"},{"id":"EID6a2e1eec-0175-1000-5661-b475d6e2b407","testStepResults":{"TestStepResult":[{"id":"EID6a2e1eec-0175-1000-d84c-347e62a5408c","parent":{"ref":"EID6a2e1eec-0175-1000-5661-b475d6e2b407"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:10:08Z","duration":779,"status":"PASSED"},{"id":"EID6a2e1eec-0175-1000-4300-a519780c9bbb","parent":{"ref":"EID6a2e1eec-0175-1000-5661-b475d6e2b407"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-27T13:10:08Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1eec-0175-1000-822c-0bc0ffe8d892","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e1f9a-0175-1000-b28a-186d50c3914e","parent":{"ref":"EID6a2e1eec-0175-1000-822c-0bc0ffe8d892"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-27T13:10:09Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1f9a-0175-1000-e4f2-d82e7800ebd0","parent":{"ref":"EID6a2e1eec-0175-1000-822c-0bc0ffe8d892"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-27T13:10:09Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1f9a-0175-1000-003e-fba562f22112","parent":{"ref":"EID6a2e1eec-0175-1000-822c-0bc0ffe8d892"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-27T13:10:09Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1f9a-0175-1000-81d5-651c0e75c3e1","parent":{"ref":"EID6a2e1eec-0175-1000-822c-0bc0ffe8d892"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-27T13:10:09Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1f9a-0175-1000-1053-8b555c940342","parent":{"ref":"EID6a2e1eec-0175-1000-822c-0bc0ffe8d892"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-27T13:10:09Z","duration":0,"status":"PASSED"},{"id":"EID6a2e1f9a-0175-1000-ac65-d94209a9bf22","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6a2e1eec-0175-1000-822c-0bc0ffe8d892"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-27T13:10:09Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID0baeb324-9e4b-46d5-a1d6-d4e07bc268e1"},{"ref":"EID0b9f6563-0038-4aab-bba4-e1db14ed5325"},{"ref":"EIDde8ce251-4687-4233-80cd-81a6019f6d98"}]},"parent":{"ref":"EID6a2e1eec-0175-1000-5661-b475d6e2b407"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-27T13:10:08Z","duration":80,"status":"FAILED"}]},"parent":{"ref":"EID6a2e1a9f-0175-1000-01b2-1288e02c1b6c"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:10:08Z","duration":174,"status":"FAILED"},{"id":"EID6a2e1f9b-0175-1000-c310-6045f9bf0a46","testStepResults":{"TestStepResult":[{"id":"EID6a2e1f9b-0175-1000-ed22-41b16b51b296","parent":{"ref":"EID6a2e1f9b-0175-1000-c310-6045f9bf0a46"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:10:09Z","duration":779,"status":"PASSED"},{"id":"EID6a2e1f9b-0175-1000-9e36-f58d67563136","messages":{"message":[{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}},{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}]},"attachments":{"attachment":[{"ref":"EID62f05d36-83f7-4b93-802b-248a96dbd81b"},{"ref":"EID0e7aa899-cce3-488f-b7e6-b8680c2c9248"},{"ref":"EID21d95f1a-b55a-448e-a27c-5ad3f24ae47f"},{"ref":"EIDeee9151e-19b9-4597-97f6-8a4c80cefc83"},{"ref":"EID0e2a5e75-1450-49fe-87be-0ddb5e217b10"},{"ref":"EID1088e571-803a-4f53-9816-881feffb0b7f"},{"ref":"EIDedad4e33-8881-483f-9070-709311e824e2"},{"ref":"EID7a0666f9-368c-4d76-811b-4fb1f381207d"},{"ref":"EID5b6ee746-9321-4581-9163-d8d6061b14bd"},{"ref":"EIDab8c9134-3625-47e5-a255-caedc52db827"},{"ref":"EIDf9c5216d-462d-4b3b-a0e5-e5b9b6e0bb71"},{"ref":"EIDde5e074d-7c46-4e88-8fa8-a4359280fe8c"},{"ref":"EIDd2aab660-a352-4493-92cb-177444ecd621"},{"ref":"EID397204e9-d374-44cb-b715-9f0431fc98d0"},{"ref":"EID7e1da3e3-c061-4beb-856b-4204664e6cec"}]},"parent":{"ref":"EID6a2e1f9b-0175-1000-c310-6045f9bf0a46"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-27T13:10:09Z","duration":491,"status":"SKIPPED"}]},"parent":{"ref":"EID6a2e1a9f-0175-1000-01b2-1288e02c1b6c"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:10:09Z","duration":910,"status":"SKIPPED"},{"id":"EID6a2e2333-0175-1000-c06c-5803abf7060a","testStepResults":{"TestStepResult":[{"id":"EID6a2e2333-0175-1000-b1df-fbd91e008e9c","parent":{"ref":"EID6a2e2333-0175-1000-c06c-5803abf7060a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:10:09Z","duration":779,"status":"PASSED"},{"id":"EID6a2e2333-0175-1000-747a-f7d5093cee79","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e23cc-0175-1000-aa9b-0e0ce6562f7d","parent":{"ref":"EID6a2e2333-0175-1000-747a-f7d5093cee79"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-27T13:10:10Z","duration":0,"status":"PASSED"},{"id":"EID6a2e23cc-0175-1000-9ce8-f771ee546ab1","parent":{"ref":"EID6a2e2333-0175-1000-747a-f7d5093cee79"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-27T13:10:10Z","duration":0,"status":"PASSED"},{"id":"EID6a2e23cc-0175-1000-9efc-9b0e45d11e9a","parent":{"ref":"EID6a2e2333-0175-1000-747a-f7d5093cee79"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-27T13:10:10Z","duration":0,"status":"PASSED"},{"id":"EID6a2e23cc-0175-1000-ac8c-57cf96a0e635","messages":{"message":{"ref":"TR.incorrectFeedSelfReference","translationArguments":{"argument":[{"token":"actual","$":"https://www.nationaalgeoregister.nl/geonetwork/opensearch/dut/d2a05dd5-98e8-4f9c-8ba2-7fe2d5c7c507/OpenSearchDescription.xml"},{"token":"element","$":"/os:OpenSearchDescription/os:Url"},{"token":"expected","$":"https://www.nationaalgeoregister.nl:443/geonetwork/opensearch/dut/d2a05dd5-98e8-4f9c-8ba2-7fe2d5c7c507/OpenSearchDescription.xml"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template"}]}}},"parent":{"ref":"EID6a2e2333-0175-1000-747a-f7d5093cee79"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-27T13:10:10Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID0f0674f8-d20c-4bfc-96b3-ae2142c1f089"},{"ref":"EID3230048d-fc1a-4e54-9e25-7c700ff9a2eb"},{"ref":"EIDaa31adfc-5920-49db-acb6-e9b29c1b178d"}]},"parent":{"ref":"EID6a2e2333-0175-1000-c06c-5803abf7060a"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-27T13:10:09Z","duration":81,"status":"FAILED"}]},"parent":{"ref":"EID6a2e1a9f-0175-1000-01b2-1288e02c1b6c"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:10:09Z","duration":153,"status":"FAILED"},{"id":"EID6a2e23cc-0175-1000-1c40-18dd08311bf3","testStepResults":{"TestStepResult":[{"id":"EID6a2e23cc-0175-1000-b17b-ffbeee49a665","parent":{"ref":"EID6a2e23cc-0175-1000-1c40-18dd08311bf3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:10:10Z","duration":779,"status":"PASSED"},{"id":"EID6a2e23cc-0175-1000-4171-d4e746e4c88c","parent":{"ref":"EID6a2e23cc-0175-1000-1c40-18dd08311bf3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-27T13:10:10Z","duration":0,"status":"PASSED"},{"id":"EID6a2e23cc-0175-1000-4ad9-765ef19265dc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e2461-0175-1000-ebf4-f59a8ff34a72","parent":{"ref":"EID6a2e23cc-0175-1000-4ad9-765ef19265dc"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-27T13:10:10Z","duration":0,"status":"PASSED"},{"id":"EID6a2e2461-0175-1000-cf57-50d21497c219","parent":{"ref":"EID6a2e23cc-0175-1000-4ad9-765ef19265dc"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-27T13:10:10Z","duration":0,"status":"PASSED"},{"id":"EID6a2e2461-0175-1000-786f-813d3c0dad00","parent":{"ref":"EID6a2e23cc-0175-1000-4ad9-765ef19265dc"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-27T13:10:10Z","duration":0,"status":"PASSED"},{"id":"EID6a2e2461-0175-1000-45cc-473227b25f60","parent":{"ref":"EID6a2e23cc-0175-1000-4ad9-765ef19265dc"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-27T13:10:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0539fbe4-31aa-4539-bf51-f4dad8a9c950"},{"ref":"EIDf42efc05-8df0-4436-a93b-b587c3630d8a"},{"ref":"EID287a33b7-eaa1-47f4-a8f5-4f32e4e53e87"}]},"parent":{"ref":"EID6a2e23cc-0175-1000-1c40-18dd08311bf3"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-27T13:10:10Z","duration":79,"status":"PASSED"},{"id":"EID6a2e246f-0175-1000-e16f-7df9c01f815e","attachments":{"attachment":{"ref":"EID164111c4-8d4c-4a78-883e-604fdcf76e21"}},"parent":{"ref":"EID6a2e23cc-0175-1000-1c40-18dd08311bf3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-27T13:10:10Z","duration":0,"status":"PASSED"},{"id":"EID6a2e24b0-0175-1000-81ae-24c5738de6e2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a2e24b5-0175-1000-deb9-7f3ab62a834a","parent":{"ref":"EID6a2e24b0-0175-1000-81ae-24c5738de6e2"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-27T13:10:10Z","duration":0,"status":"PASSED"},{"id":"EID6a2e24b5-0175-1000-1b4f-076e892f431b","parent":{"ref":"EID6a2e24b0-0175-1000-81ae-24c5738de6e2"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-27T13:10:10Z","duration":0,"status":"PASSED"},{"id":"EID6a2e24b5-0175-1000-7662-343d63b1461a","parent":{"ref":"EID6a2e24b0-0175-1000-81ae-24c5738de6e2"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-27T13:10:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd7ee03e2-9a15-4dff-84b8-46ac3f586955"},{"ref":"EID433bd068-3ffd-4d06-93af-ac24745c019f"}]},"parent":{"ref":"EID6a2e23cc-0175-1000-1c40-18dd08311bf3"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-27T13:10:10Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a2e1a9f-0175-1000-01b2-1288e02c1b6c"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:10:10Z","duration":233,"status":"PASSED"}]},"parent":{"ref":"EIDdc520223-b292-425b-a62b-f5b0bebf84f3"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:10:07Z","duration":2582,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"Message","id":"EID88b37c68-392b-4517-9c89-583ee8ea9a48","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID88b37c68-392b-4517-9c89-583ee8ea9a48"}},{"type":"ServiceEndpoint","id":"EIDc546c418-3277-4343-acfc-c423681d8f85","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EIDde5e074d-7c46-4e88-8fa8-a4359280fe8c","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDde5e074d-7c46-4e88-8fa8-a4359280fe8c"}},{"type":"GetParameter","id":"EIDa4542427-35c8-422b-bd75-38e0dbc795fb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDdb0b6f92-caba-40e3-b9ab-de29170a2afa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EIDedad4e33-8881-483f-9070-709311e824e2","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDedad4e33-8881-483f-9070-709311e824e2"}},{"type":"ServiceEndpoint","id":"EIDc9401b5f-329e-41c6-a411-2c339b656794","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EID0b9f6563-0038-4aab-bba4-e1db14ed5325","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID0b9f6563-0038-4aab-bba4-e1db14ed5325"}},{"type":"ServiceResponse","id":"EID2f3d5868-2fde-45f1-99bc-8c1c071b6a42","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID2f3d5868-2fde-45f1-99bc-8c1c071b6a42"}},{"type":"ServiceResponse","id":"EID7ff2a854-23e7-49cb-8618-3c14b6bad88c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID7ff2a854-23e7-49cb-8618-3c14b6bad88c"}},{"type":"Message","id":"EID50abce09-9cdb-417e-927d-2aa24e755e19","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID50abce09-9cdb-417e-927d-2aa24e755e19"}},{"type":"Message","id":"EID8bf68118-79f4-4e7d-bdb9-0135295f5a7e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID8bf68118-79f4-4e7d-bdb9-0135295f5a7e"}},{"type":"ServiceResponse","id":"EIDf42efc05-8df0-4436-a93b-b587c3630d8a","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDf42efc05-8df0-4436-a93b-b587c3630d8a"}},{"type":"ServiceResponse","id":"EID9e4a9472-6fb7-4786-bad7-23a38462e5d3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID9e4a9472-6fb7-4786-bad7-23a38462e5d3"}},{"type":"Message","id":"EID397204e9-d374-44cb-b715-9f0431fc98d0","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID397204e9-d374-44cb-b715-9f0431fc98d0"}},{"type":"GetParameter","id":"EID32555643-f6e7-462f-87c0-758290c48588","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EID83643c19-1ae8-42ff-9cb6-ade02b5671af","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID83643c19-1ae8-42ff-9cb6-ade02b5671af"}},{"type":"Message","id":"EID6b00080b-5f03-44aa-931a-456df2e4888a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID6b00080b-5f03-44aa-931a-456df2e4888a"}},{"type":"Message","id":"EID5ae90c1b-2b1d-46a0-b98c-3c2dcc510889","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID5ae90c1b-2b1d-46a0-b98c-3c2dcc510889"}},{"type":"ServiceEndpoint","id":"EIDdbd7e069-c684-4141-abd2-fa7515e6da12","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EID1bb9a6ab-011a-4cec-9bcd-19755e771d35","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID1bb9a6ab-011a-4cec-9bcd-19755e771d35"}},{"type":"GetParameter","id":"EID726f5a1e-6bb6-4794-9b98-e07070405781","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDbf6b91a6-16bd-41c5-a644-88a51dbf6982","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EIDbe4ab9fa-7e05-4cbc-badf-a06bea89e9cd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDbe4ab9fa-7e05-4cbc-badf-a06bea89e9cd"}},{"type":"ServiceEndpoint","id":"EIDeca24ff0-3704-4f84-bbd4-cba4499a7a9a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EID9ba2241f-fe36-4fc6-bfab-f61a4c6def4d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID5e30021d-5c2e-4946-aaff-700c5f4e2a95","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID5e30021d-5c2e-4946-aaff-700c5f4e2a95"}},{"type":"ServiceEndpoint","id":"EID4eac6679-a5b5-46e4-9b52-199fca0eb621","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDce749c3c-2317-4d3e-8bab-693fd2e7c923","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDce749c3c-2317-4d3e-8bab-693fd2e7c923"}},{"type":"ServiceEndpoint","id":"EID2ff9b9c6-841f-4fc2-933c-9dd4c334052a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EID0e7aa899-cce3-488f-b7e6-b8680c2c9248","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID0e7aa899-cce3-488f-b7e6-b8680c2c9248"}},{"type":"ServiceResponse","id":"EIDe2ececb7-1db0-4132-bcc4-48bf0d8f31ea","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDe2ececb7-1db0-4132-bcc4-48bf0d8f31ea"}},{"type":"Message","id":"EID5b6ee746-9321-4581-9163-d8d6061b14bd","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID5b6ee746-9321-4581-9163-d8d6061b14bd"}},{"type":"GetParameter","id":"EIDfbebccd1-3c4d-4115-84de-616b505751e8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"GetParameter","id":"EID64b35c90-2325-4868-b8f5-5de312915fd6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID2a2b27a9-992f-412b-b55e-3a8737598a56","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID2a2b27a9-992f-412b-b55e-3a8737598a56"}},{"type":"ServiceResponse","id":"EID23269437-3991-4731-94a7-b7be543c0af3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID23269437-3991-4731-94a7-b7be543c0af3"}},{"type":"Message","id":"EID4063b9af-27c2-427e-9cda-70029c2b92fb","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID4063b9af-27c2-427e-9cda-70029c2b92fb"}},{"type":"ServiceEndpoint","id":"EID0ec0ea9a-ff22-4640-b4ed-987ced4dbf20","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID98f9ff9d-d037-45a0-9091-280d05c3d865","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID92d4ce27-8bd0-4fae-92c6-d45e2afec83c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EIDc11faba7-1fa9-417d-9cfb-2f931e6501ec","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDc11faba7-1fa9-417d-9cfb-2f931e6501ec"}},{"type":"Message","id":"EID8d572fda-5a3f-48dc-90dc-b8076908f775","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID8d572fda-5a3f-48dc-90dc-b8076908f775"}},{"type":"ServiceResponse","id":"EIDe595601e-073d-4688-a047-e309698841fd","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDe595601e-073d-4688-a047-e309698841fd"}},{"type":"ServiceEndpoint","id":"EIDfeeeadd9-2788-4c7e-9861-b31e9da53d6d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID67af2ec0-0e0b-4ef9-a08b-5151c028dbf9","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID67af2ec0-0e0b-4ef9-a08b-5151c028dbf9"}},{"type":"ServiceResponse","id":"EID73d713d1-2969-4da1-a405-eea9ec878b33","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID73d713d1-2969-4da1-a405-eea9ec878b33"}},{"type":"Message","id":"EID2705a382-6107-4d02-8785-5483b78ee1ea","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID2705a382-6107-4d02-8785-5483b78ee1ea"}},{"type":"Message","id":"EIDab0d787f-2008-46e3-8700-dc0574caeb3d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDab0d787f-2008-46e3-8700-dc0574caeb3d"}},{"type":"ServiceResponse","id":"EID60ac2b0f-8d91-4dd7-b1af-bafcdd8d3fd1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID60ac2b0f-8d91-4dd7-b1af-bafcdd8d3fd1"}},{"type":"Message","id":"EID4fe52655-00d9-403e-a36b-c963d185dc4a","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID4fe52655-00d9-403e-a36b-c963d185dc4a"}},{"type":"Message","id":"EID9d55e9bc-8dce-45e7-85f7-d6203868bf04","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID9d55e9bc-8dce-45e7-85f7-d6203868bf04"}},{"type":"Message","id":"EIDf326702d-1445-475a-a125-c045bcb64386","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDf326702d-1445-475a-a125-c045bcb64386"}},{"type":"ServiceEndpoint","id":"EIDf101fdfd-f504-4ae3-bec1-bee67b1c528e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID185b0aa4-3f79-410f-a446-f6cebce61d12","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID185b0aa4-3f79-410f-a446-f6cebce61d12"}},{"type":"Message","id":"EID613c50b6-f60d-445d-95ca-3b7ab5fe6325","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID613c50b6-f60d-445d-95ca-3b7ab5fe6325"}},{"type":"ServiceEndpoint","id":"EIDc8f8c595-f7e2-4b15-954e-2e64175f5196","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EID31d92420-3c02-4eab-8517-7aef8ee21111","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID31d92420-3c02-4eab-8517-7aef8ee21111"}},{"type":"Message","id":"EID13214d49-5735-40bf-bbb5-75b880bb69f6","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID13214d49-5735-40bf-bbb5-75b880bb69f6"}},{"type":"ServiceEndpoint","id":"EID5e318928-6d76-4862-a331-3ec5aa5a29c7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceEndpoint","id":"EIDd7ee03e2-9a15-4dff-84b8-46ac3f586955","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"Message","id":"EIDff385805-375a-468a-9615-e4016a713938","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDff385805-375a-468a-9615-e4016a713938"}},{"type":"ServiceEndpoint","id":"EID55ac2657-6663-40b7-b88a-8f2f95bedc8e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID709573b2-05a3-4ef1-a8a6-64e00816ca6f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID709573b2-05a3-4ef1-a8a6-64e00816ca6f"}},{"type":"Message","id":"EIDf9c5216d-462d-4b3b-a0e5-e5b9b6e0bb71","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDf9c5216d-462d-4b3b-a0e5-e5b9b6e0bb71"}},{"type":"GetParameter","id":"EID6212dfa3-cc67-41da-99eb-c68774678d7c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EID7e1da3e3-c061-4beb-856b-4204664e6cec","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID7e1da3e3-c061-4beb-856b-4204664e6cec"}},{"type":"ServiceEndpoint","id":"EID22126df1-edfa-4e0b-b999-20b273ba2c48","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID83522d93-e2ff-4cf8-b570-56657df96fac","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2Rvd25sb2Fkcy9pbnZhc2lldmUtZXhvdGVuLmdtbC56aXA="},{"type":"ServiceEndpoint","id":"EIDf1fc3717-a77d-4960-8b74-b2de1a60a2b7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID1464d6e7-e644-4af0-a218-2d878e942b05","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EIDeca736d5-29d6-4177-b873-2d508f583a94","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDeca736d5-29d6-4177-b873-2d508f583a94"}},{"type":"GetParameter","id":"EIDd001c49c-90e8-42b5-91b5-a0406159053b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID220200c6-4f72-4214-ac8e-ea4150257e4a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID50c792b7-8d7e-4eef-8d84-351e0fe79925","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID31975282-bd65-41ce-9505-53a6e09f3cb6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EID41a92ed6-37f8-4efc-b598-dbcae929858e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID41a92ed6-37f8-4efc-b598-dbcae929858e"}},{"type":"ServiceEndpoint","id":"EID68a1af62-39b7-4cf7-8f94-4440be745be9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID7af9a490-3c47-42a4-be1c-c868bfd0d5a6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDff3df6d7-7056-4644-89da-434872c49c10","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDff3df6d7-7056-4644-89da-434872c49c10"}},{"type":"ServiceEndpoint","id":"EID6996cd7b-2e30-4508-8235-be17ca5f2a9f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"GetParameter","id":"EIDe5a90a8f-45d7-48ce-b090-667e519bed9c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID5d004fb0-587b-46f0-b19e-8f519ffdc982","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"GetParameter","id":"EID8bb1e91d-bf8b-4f38-8e19-2b4a8c8bdb16","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceEndpoint","id":"EID7c827069-6466-4d13-9410-5070fc86b460","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID49877957-f14b-463a-9609-bee071150876","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceEndpoint","id":"EIDa8c01d4b-b07e-488b-96a2-c76fd82d7ed9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID277cf494-d947-44c9-802e-ceac338ff059","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EID39517bd0-2741-4fa3-9bf2-29f390b13f67","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID39517bd0-2741-4fa3-9bf2-29f390b13f67"}},{"type":"Message","id":"EID778c234b-7169-4d26-a520-52c5faf8db37","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID778c234b-7169-4d26-a520-52c5faf8db37"}},{"type":"ServiceResponse","id":"EID18e18c07-db4a-496d-99c8-fc0c3e4341c8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID18e18c07-db4a-496d-99c8-fc0c3e4341c8"}},{"type":"GetParameter","id":"EIDf52c4c32-a56d-4397-a2d7-bd53f4362878","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EIDbd453ed3-7e76-4f1a-b54d-6e9748e704d9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"GetParameter","id":"EID37ae94b3-fc61-49b8-bf14-9fda8a8a93ca","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID0e2a5e75-1450-49fe-87be-0ddb5e217b10","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID0e2a5e75-1450-49fe-87be-0ddb5e217b10"}},{"type":"ServiceResponse","id":"EIDde127691-004d-4dfd-b816-1f740eecaa37","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDde127691-004d-4dfd-b816-1f740eecaa37"}},{"type":"Message","id":"EIDcc2816aa-1e60-4213-b43c-6aa54b99a397","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDcc2816aa-1e60-4213-b43c-6aa54b99a397"}},{"type":"ServiceEndpoint","id":"EID526d0059-a2b6-4641-8389-45fef67a5419","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID9b00a81b-aaaf-4f13-9989-6ac4e9b58aa9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2Rvd25sb2Fkcy9pbnZhc2lldmUtZXhvdGVuLmdtbC56aXA="},{"type":"Message","id":"EID164111c4-8d4c-4a78-883e-604fdcf76e21","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID164111c4-8d4c-4a78-883e-604fdcf76e21"}},{"type":"ServiceEndpoint","id":"EIDc2a38419-c383-4ef6-b3fe-045ea46727cb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID1f7edf9b-73c7-4a75-8bee-f18c07fa9333","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EIDc6398891-f817-4f07-96d2-6cd584ba905d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDc6398891-f817-4f07-96d2-6cd584ba905d"}},{"type":"Message","id":"EID92794e3e-96ea-47a8-ba63-def6571b0b61","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID92794e3e-96ea-47a8-ba63-def6571b0b61"}},{"type":"Message","id":"EIDeee9151e-19b9-4597-97f6-8a4c80cefc83","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDeee9151e-19b9-4597-97f6-8a4c80cefc83"}},{"type":"Message","id":"EID7d0e16be-48c2-45e0-984a-427ab6554025","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID7d0e16be-48c2-45e0-984a-427ab6554025"}},{"type":"ServiceEndpoint","id":"EIDc3da837c-fea1-4a07-91a2-f3044d4ed973","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID5f6ff6f5-3f67-470b-9956-5fa6f778c0fb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID5f6ff6f5-3f67-470b-9956-5fa6f778c0fb"}},{"type":"GetParameter","id":"EIDdd9219b5-3a3b-43f8-ab9c-b5672c251c9e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EID05a3ff21-1e4f-41b3-b4eb-8e2cab47065d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID05a3ff21-1e4f-41b3-b4eb-8e2cab47065d"}},{"type":"GetParameter","id":"EID751db23e-c083-440b-bf3a-6ee3cf2eadbe","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EIDbb595277-79da-4bba-b2c3-bc1ba3c2bdc6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EIDc5579673-7d0b-4122-b323-c533c0902c54","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDc5579673-7d0b-4122-b323-c533c0902c54"}},{"type":"ServiceResponse","id":"EID1431dfb6-522d-4009-888e-c06b1cdb76b3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID1431dfb6-522d-4009-888e-c06b1cdb76b3"}},{"type":"ServiceEndpoint","id":"EID185f4df9-ed0b-45d1-b1db-c775f3a3e2fe","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EIDe2cebbbb-a38c-4398-816d-987a56e2dd97","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDe2cebbbb-a38c-4398-816d-987a56e2dd97"}},{"type":"ServiceEndpoint","id":"EID2e03a3aa-1511-4729-a27b-2f0ea89e663b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EID1dcd4b30-1a17-4e18-9508-4ee59014273c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID0539fbe4-31aa-4539-bf51-f4dad8a9c950","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"ServiceResponse","id":"EID6015c7e4-ff39-4b3a-a83a-8a3a47fb5463","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID6015c7e4-ff39-4b3a-a83a-8a3a47fb5463"}},{"type":"Message","id":"EID57d85728-d1e2-437c-b9c4-670a6635e874","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID57d85728-d1e2-437c-b9c4-670a6635e874"}},{"type":"ServiceEndpoint","id":"EID0baeb324-9e4b-46d5-a1d6-d4e07bc268e1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"GetParameter","id":"EIDc4ee9fff-e520-48f1-8b30-c07da9712836","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDaa31adfc-5920-49db-acb6-e9b29c1b178d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"Message","id":"EID7a0666f9-368c-4d76-811b-4fb1f381207d","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID7a0666f9-368c-4d76-811b-4fb1f381207d"}},{"type":"ServiceResponse","id":"EID503663e6-c52e-4f02-b642-d5f8b67087ef","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID503663e6-c52e-4f02-b642-d5f8b67087ef"}},{"type":"ServiceEndpoint","id":"EID6aafb819-3495-4aef-8354-dfc082b9d30e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID23957038-638b-423f-b32e-edba9a780b58","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID23957038-638b-423f-b32e-edba9a780b58"}},{"type":"ServiceEndpoint","id":"EID22225405-a7db-4d7d-bd68-05a4f8f42a73","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDd663e0f8-c395-46a3-9928-84f2f5065aa1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDd663e0f8-c395-46a3-9928-84f2f5065aa1"}},{"type":"GetParameter","id":"EID2fb0fe37-c3cf-4e17-b62f-4f4a67773fdf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID9048fe7c-aaa3-4c98-be8b-974b5a87682a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID4318db71-49bb-4cb6-b334-7a3482247ec6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID4318db71-49bb-4cb6-b334-7a3482247ec6"}},{"type":"ServiceEndpoint","id":"EID9f619c70-d59c-4a01-b31d-3b01218f339c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID4b65eb2e-f1e4-447c-a841-b8a90f036e34","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID4b65eb2e-f1e4-447c-a841-b8a90f036e34"}},{"type":"Message","id":"EIDea5041f4-320a-4b7f-bcbd-70b644471034","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDea5041f4-320a-4b7f-bcbd-70b644471034"}},{"type":"ServiceEndpoint","id":"EID4ca5b8c3-7109-484b-b47a-29b0d53593b9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"GetParameter","id":"EID4857d4ce-de0b-4480-9c7d-3ac0a5e3138a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"ServiceEndpoint","id":"EID5f73723c-a269-4b1e-92aa-42c01c7fdc1b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L3htbC5tZXRhZGF0YS5nZXQ="},{"type":"Message","id":"EID62f05d36-83f7-4b93-802b-248a96dbd81b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID62f05d36-83f7-4b93-802b-248a96dbd81b"}},{"type":"GetParameter","id":"EIDadfbee4a-3d25-4c2a-a03f-fc09eea080c0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EID18756084-d720-4d02-ab6a-42d2bee5016a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID18756084-d720-4d02-ab6a-42d2bee5016a"}},{"type":"GetParameter","id":"EID433bd068-3ffd-4d06-93af-ac24745c019f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceResponse","id":"EIDc61414d9-068a-4ff5-8403-68b20e9c9f54","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDc61414d9-068a-4ff5-8403-68b20e9c9f54"}},{"type":"ServiceEndpoint","id":"EIDdbbc2610-f053-4350-8c8c-192444937171","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID548ffdaa-448c-477e-8669-8678cdcdf401","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDb284489b-c39d-402b-ba13-a654844b23dc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDb284489b-c39d-402b-ba13-a654844b23dc"}},{"type":"Message","id":"EID7f945efe-00d4-4efc-bc52-fb9437dc0172","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID7f945efe-00d4-4efc-bc52-fb9437dc0172"}},{"type":"GetParameter","id":"EIDc7bcef9e-5a26-4229-b395-ae546133713f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID66b4499d-7691-4ad9-9b95-e331b32337ff","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDdc54305f-3776-4ad1-8946-784c4d118cc3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDdc54305f-3776-4ad1-8946-784c4d118cc3"}},{"type":"Message","id":"EIDd2aab660-a352-4493-92cb-177444ecd621","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDd2aab660-a352-4493-92cb-177444ecd621"}},{"type":"ServiceEndpoint","id":"EIDd444127c-743a-43bd-8f25-0d5b31deafc2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDd10716bf-21ea-4b4f-ba4f-0063c5fbaa7c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EID75a964d8-5f4c-4485-a4a4-58e5c1778594","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID75a964d8-5f4c-4485-a4a4-58e5c1778594"}},{"type":"ServiceEndpoint","id":"EID8fd2d06a-738f-40fd-b759-3f94bc10734b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"ServiceEndpoint","id":"EID4d7f23bc-e098-4d9d-b439-f37a5304dd23","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID3230048d-fc1a-4e54-9e25-7c700ff9a2eb","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID3230048d-fc1a-4e54-9e25-7c700ff9a2eb"}},{"type":"Message","id":"EIDac97bd07-3c2c-41fe-82b6-690f556c4b99","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDac97bd07-3c2c-41fe-82b6-690f556c4b99"}},{"type":"Message","id":"EID96799780-d1c5-4156-880d-16992e6ef7c0","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID96799780-d1c5-4156-880d-16992e6ef7c0"}},{"type":"ServiceResponse","id":"EID13a9ea9d-cae8-4e4b-beb0-ca63e81834d7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID13a9ea9d-cae8-4e4b-beb0-ca63e81834d7"}},{"type":"Message","id":"EIDab8c9134-3625-47e5-a255-caedc52db827","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDab8c9134-3625-47e5-a255-caedc52db827"}},{"type":"GetParameter","id":"EIDdb6de95c-777c-4286-af70-a7df1429193f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EID1088e571-803a-4f53-9816-881feffb0b7f","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID1088e571-803a-4f53-9816-881feffb0b7f"}},{"type":"GetParameter","id":"EID6b43ca99-b33e-4dec-8479-efb9778a0991","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID88e6f3a1-a9ae-4ffb-a400-f90c8e0523fa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"GetParameter","id":"EIDde8ce251-4687-4233-80cd-81a6019f6d98","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"ServiceEndpoint","id":"EID3d2ef494-03ce-4a42-8f3d-ecaa18d2bd3a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID3166eb86-ade1-44d5-9db5-3a8218d75c03","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EIDc5e6ed20-ba17-4077-94a2-238a79939444","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDc5e6ed20-ba17-4077-94a2-238a79939444"}},{"type":"ServiceResponse","id":"EID973d68af-f21d-4723-a5f1-1a071717ecff","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID973d68af-f21d-4723-a5f1-1a071717ecff"}},{"type":"GetParameter","id":"EIDb01e50ce-174d-4a64-8bce-3796848b3cb6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID40d3fb15-3e9c-4765-b758-ccb84c55f7e4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID40d3fb15-3e9c-4765-b758-ccb84c55f7e4"}},{"type":"GetParameter","id":"EID2f98f51d-4e4f-4b9f-886c-4faa1556b3cd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"Message","id":"EIDf197d372-2e1f-425a-882b-ba5648e5d401","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDf197d372-2e1f-425a-882b-ba5648e5d401"}},{"type":"ServiceEndpoint","id":"EID4b22aea1-065b-4f05-868e-7bcdda5313de","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID21d95f1a-b55a-448e-a27c-5ad3f24ae47f","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID21d95f1a-b55a-448e-a27c-5ad3f24ae47f"}},{"type":"ServiceResponse","id":"EID7a1b87f7-d148-41df-8c77-db0ba3f2e5d8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID7a1b87f7-d148-41df-8c77-db0ba3f2e5d8"}},{"type":"GetParameter","id":"EID2188fe7b-520b-4694-9e9b-d1c686dbdc3d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"LogFile","id":"EID1bcd9662-b962-41bc-9aa2-2740d4f3c3bd","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID1bcd9662-b962-41bc-9aa2-2740d4f3c3bd"}},{"type":"ServiceResponse","id":"EIDa3bba419-7482-4c90-806c-8a3487df62b3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDa3bba419-7482-4c90-806c-8a3487df62b3"}},{"type":"GetParameter","id":"EIDab7a921d-1cfa-4552-a146-6a24bce075bb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID17ed1997-f0bd-4867-8499-eb7f430a89bf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID0240abec-5dd7-4f0b-afa0-ea09696ab689","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID0240abec-5dd7-4f0b-afa0-ea09696ab689"}},{"type":"GetParameter","id":"EIDa076acfc-77e0-4df9-8374-dc373cc16741","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID0f0674f8-d20c-4bfc-96b3-ae2142c1f089","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"ServiceEndpoint","id":"EID00f2093a-859a-4a4f-b697-1fc806c33769","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"GetParameter","id":"EIDaed1a97a-f8fe-4f9c-9083-7642603983b7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"GetParameter","id":"EID95760cc0-d903-4bd7-a94d-581ae250e2d5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="},{"type":"ServiceResponse","id":"EID570abc90-378d-4773-9032-eb64555583d8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID570abc90-378d-4773-9032-eb64555583d8"}},{"type":"ServiceResponse","id":"EIDecfb7b64-4582-4864-acb7-94a62abca7d1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDecfb7b64-4582-4864-acb7-94a62abca7d1"}},{"type":"GetParameter","id":"EID287a33b7-eaa1-47f4-a8f5-4f32e4e53e87","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"GetParameter","id":"EID99581fb6-a9f7-4ade-9d04-5bd7fc7b55ef","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID7a94a5fb-14d6-45aa-b490-4b9b15ecf425","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID7a94a5fb-14d6-45aa-b490-4b9b15ecf425"}},{"type":"ServiceResponse","id":"EID80c486b2-6346-441f-9289-a0dd4794bec6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID80c486b2-6346-441f-9289-a0dd4794bec6"}},{"type":"GetParameter","id":"EID3ef76ae7-a875-410b-8dcf-8a50d6947eb1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID3ec65a3a-d56e-4d7f-a814-5eb146f951e5","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID3ec65a3a-d56e-4d7f-a814-5eb146f951e5"}},{"type":"Message","id":"EID5ee64b08-d4b9-4787-afb1-eae7e3a23fa5","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID5ee64b08-d4b9-4787-afb1-eae7e3a23fa5"}},{"type":"Message","id":"EIDe3542e7a-6404-434f-83ee-984f696f979f","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDe3542e7a-6404-434f-83ee-984f696f979f"}},{"type":"ServiceResponse","id":"EIDa4ea7e93-5477-4093-9230-38c66fb3e531","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EIDa4ea7e93-5477-4093-9230-38c66fb3e531"}},{"type":"ServiceEndpoint","id":"EID533b18c6-97ce-487b-9753-6bf743e6bde7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"Message","id":"EID726b53b2-8dac-49d9-b7bd-1c7a34b61e75","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID726b53b2-8dac-49d9-b7bd-1c7a34b61e75"}},{"type":"Message","id":"EID4d650728-b7f9-4ba2-8568-e50f10e1e9a0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID4d650728-b7f9-4ba2-8568-e50f10e1e9a0"}},{"type":"ServiceResponse","id":"EID006efbe2-109e-45ed-8366-1387f65e0a8a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID006efbe2-109e-45ed-8366-1387f65e0a8a"}},{"type":"ServiceEndpoint","id":"EID60dad688-e137-4f30-b9f6-bbc001aaa16a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EID92bf8b08-4dd8-4702-b20b-8fc83336d385","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmw6NDQzL2dlb25ldHdvcmsvb3BlbnNlYXJjaC9kdXQvZDJhMDVkZDUtOThlOC00ZjljLThiYTItN2ZlMmQ1YzdjNTA3L09wZW5TZWFyY2hEZXNjcmlwdGlvbi54bWw="},{"type":"ServiceResponse","id":"EID8cf3ea93-cd47-4b0d-968b-ec9f3bb12787","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDdc520223-b292-425b-a62b-f5b0bebf84f3/Attachments/EID8cf3ea93-cd47-4b0d-968b-ec9f3bb12787"}},{"type":"GetParameter","id":"EIDa0f8f9b7-c44e-4aae-b1ff-936a5702d32d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L3htbC5tZXRhZGF0YS5nZXQ="},{"type":"ServiceEndpoint","id":"EID93572ae6-0693-4234-8704-d91611396e86","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EID1ea5b02f-7a76-4a09-b153-4e379eb7a4d5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J2by9pbnNwaXJlL2ludmFzaWV2ZS1leG90ZW4vYXRvbS92MV8wL2ludmFzaWV2ZV9leG90ZW5fMjAxOC54bWw="}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:09:50Z","duration":20239,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.004
13:10:22.348 [print] EID25840f1a-12f9-4723-b5e1-a0492146c6a1
* print response.EtfItemCollection.testRuns.TestRun.status 0.008
13:10:22.356 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.004
13:10:22.362 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.001
13:10:22.364 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.002
13:10:22.366 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/25840f1a-12f9-4723-b5e1-a0492146c6a1.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.001
13:10:22.368 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/25840f1a-12f9-4723-b5e1-a0492146c6a1.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.001
13:10:22.370 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID25840f1a-12f9-4723-b5e1-a0492146c6a1/log
* def embedUrl = 0.007
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.047
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.005
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.146
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.079
* def a = embedUrl ("../../" + jsonPath , status ) 0.019
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.034
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
13:10:22.714 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.003
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.002
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.040
* def Collections = Java.type('java.util.Collections') 0.023
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.053
* print refs 0.000
13:10:22.843 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.incorrectFeedSelfReference"
]
* print sortedrefs 0.000
13:10:22.843 [print] [
  "TR.incorrectFeedSelfReference",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.009
* def separator = java.lang.System.getProperty("file.separator") 0.019
* def mystorage = Java.type('storage.DataStorage') 0.006
* def db = new mystorage 0.016
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.011
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.163
3.238
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:17:49.924 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ad/wfs?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.237
13:17:49.925 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 289
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ad/wfs?request=GetCapabilities&service=WFS"}}}

13:17:53.161 response time in milliseconds: 3131.59
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:17:52 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804672983","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:17:53.162 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
4.656
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:19:13.470 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/su-grid/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 4.655
13:19:13.470 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 282
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/su-grid/wfs?request=GetCapabilities"}}}

13:19:18.125 response time in milliseconds: 4550.08
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:19:17 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804757949","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:19:18.126 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
2.265
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.001
13:21:37.873 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2018/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.263
13:21:37.875 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2018/wfs?request=GetCapabilities"}}}

13:21:40.137 response time in milliseconds: 2155.16
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:21:39 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804899956","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:21:40.137 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
3.878
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:18:29.273 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-c/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.878
13:18:29.276 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 279
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-c/wfs?request=GetCapabilities"}}}

13:18:33.151 response time in milliseconds: 3772.95
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:18:32 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804712961","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:18:33.152 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
2.155
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:14:01.330 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebiedtypen/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.155
13:14:01.331 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 307
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebiedtypen/wfs?request=GetCapabilities"}}}

13:14:03.485 response time in milliseconds: 2048.92
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:14:03 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","timestamp":"1603804443308","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsgebiedtypen/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:14:03.485 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
22.308
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:20:31.190 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 4.836
13:20:31.190 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 254
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml"}}}

13:20:36.024 response time in milliseconds: 4070.71
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:20:35 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:20:33 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/2493590e-8e49-4f77-a58a-2d4709480aa8.json","testRuns":{"TestRun":{"id":"EID2493590e-8e49-4f77-a58a-2d4709480aa8","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:20:32.721Z","testTasks":{"TestTask":{"id":"EID4c278010-217a-4cbd-834c-c4a354049b03","parent":{"ref":"EID2493590e-8e49-4f77-a58a-2d4709480aa8"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDea00abd2-f1dc-47f2-8a74-c01eade6c705"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID2493590e-8e49-4f77-a58a-2d4709480aa8/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDea00abd2-f1dc-47f2-8a74-c01eade6c705","remoteResource":"https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:20:31.633Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:20:32.187Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:20:36.027 [print] EID2493590e-8e49-4f77-a58a-2d4709480aa8
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:20:36.027 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:20:36.027 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:20:36.027 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/2493590e-8e49-4f77-a58a-2d4709480aa8.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:20:36.027 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID2493590e-8e49-4f77-a58a-2d4709480aa8/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:20:36.028 [print] statuspath TestRuns/EID2493590e-8e49-4f77-a58a-2d4709480aa8
* print 'progresspath ', progresspath 0.000
13:20:36.028 [print] progresspath  TestRuns/EID2493590e-8e49-4f77-a58a-2d4709480aa8/progress
Given path progresspath 0.000
When method GET 0.543
13:20:36.028 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2493590e-8e49-4f77-a58a-2d4709480aa8/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:36.571 response time in milliseconds: 541.39
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:20:36 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"30","max":"31","log":["27.10.2020 13:20:32 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:20:32 UTC 2020)","27.10.2020 13:20:32 - Resolving Executable Test Suite dependencies","27.10.2020 13:20:32 - Preparing 1 Test Task:","27.10.2020 13:20:32 -  TestTask 1 (4c278010-217a-4cbd-834c-c4a354049b03)","27.10.2020 13:20:32 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:20:32 -  with parameters: ","27.10.2020 13:20:32 - etf.testcases = *","27.10.2020 13:20:32 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:20:32 - Setting state to CREATED","27.10.2020 13:20:32 - Changed state from CREATED to INITIALIZING","27.10.2020 13:20:33 - Starting TestRun.2493590e-8e49-4f77-a58a-2d4709480aa8 at 2020-10-27T13:20:34Z","27.10.2020 13:20:34 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:20:34 - Project Properties: ","27.10.2020 13:20:34 - etf.testcases - * ","27.10.2020 13:20:34 - serviceEndpoint - https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml ","27.10.2020 13:20:34 - username -  ","27.10.2020 13:20:34 - authUser -  ","27.10.2020 13:20:34 - authMethod - basic ","27.10.2020 13:20:34 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:20:36.571 [print] {
  "val": "30",
  "max": "31",
  "log": [
    "27.10.2020 13:20:32 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:20:32 UTC 2020)",
    "27.10.2020 13:20:32 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:20:32 - Preparing 1 Test Task:",
    "27.10.2020 13:20:32 -  TestTask 1 (4c278010-217a-4cbd-834c-c4a354049b03)",
    "27.10.2020 13:20:32 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:20:32 -  with parameters: ",
    "27.10.2020 13:20:32 - etf.testcases = *",
    "27.10.2020 13:20:32 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:20:32 - Setting state to CREATED",
    "27.10.2020 13:20:32 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:20:33 - Starting TestRun.2493590e-8e49-4f77-a58a-2d4709480aa8 at 2020-10-27T13:20:34Z",
    "27.10.2020 13:20:34 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:20:34 - Project Properties: ",
    "27.10.2020 13:20:34 - etf.testcases - * ",
    "27.10.2020 13:20:34 - serviceEndpoint - https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml ",
    "27.10.2020 13:20:34 - username -  ",
    "27.10.2020 13:20:34 - authUser -  ",
    "27.10.2020 13:20:34 - authMethod - basic ",
    "27.10.2020 13:20:34 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 13.036
13:20:36.572 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2493590e-8e49-4f77-a58a-2d4709480aa8/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:37.080 response time in milliseconds: 507.62
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:20:37 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"41","max":"42","log":["27.10.2020 13:20:32 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:20:32 UTC 2020)","27.10.2020 13:20:32 - Resolving Executable Test Suite dependencies","27.10.2020 13:20:32 - Preparing 1 Test Task:","27.10.2020 13:20:32 -  TestTask 1 (4c278010-217a-4cbd-834c-c4a354049b03)","27.10.2020 13:20:32 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:20:32 -  with parameters: ","27.10.2020 13:20:32 - etf.testcases = *","27.10.2020 13:20:32 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:20:32 - Setting state to CREATED","27.10.2020 13:20:32 - Changed state from CREATED to INITIALIZING","27.10.2020 13:20:33 - Starting TestRun.2493590e-8e49-4f77-a58a-2d4709480aa8 at 2020-10-27T13:20:34Z","27.10.2020 13:20:34 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:20:34 - Project Properties: ","27.10.2020 13:20:34 - etf.testcases - * ","27.10.2020 13:20:34 - serviceEndpoint - https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml ","27.10.2020 13:20:34 - username -  ","27.10.2020 13:20:34 - authUser -  ","27.10.2020 13:20:34 - authMethod - basic ","27.10.2020 13:20:34 - TestRunTask initialized"]}

13:20:37.080 retry condition not satisfied: response.val == response.max
13:20:37.080 sleeping before retry #1
13:20:42.081 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2493590e-8e49-4f77-a58a-2d4709480aa8/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:42.589 response time in milliseconds: 507.69
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:20:42 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"164","max":"165","log":["27.10.2020 13:20:32 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:20:32 UTC 2020)","27.10.2020 13:20:32 - Resolving Executable Test Suite dependencies","27.10.2020 13:20:32 - Preparing 1 Test Task:","27.10.2020 13:20:32 -  TestTask 1 (4c278010-217a-4cbd-834c-c4a354049b03)","27.10.2020 13:20:32 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:20:32 -  with parameters: ","27.10.2020 13:20:32 - etf.testcases = *","27.10.2020 13:20:32 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:20:32 - Setting state to CREATED","27.10.2020 13:20:32 - Changed state from CREATED to INITIALIZING","27.10.2020 13:20:33 - Starting TestRun.2493590e-8e49-4f77-a58a-2d4709480aa8 at 2020-10-27T13:20:34Z","27.10.2020 13:20:34 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:20:34 - Project Properties: ","27.10.2020 13:20:34 - etf.testcases - * ","27.10.2020 13:20:34 - serviceEndpoint - https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml ","27.10.2020 13:20:34 - username -  ","27.10.2020 13:20:34 - authUser -  ","27.10.2020 13:20:34 - authMethod - basic ","27.10.2020 13:20:34 - TestRunTask initialized"]}

13:20:42.589 retry condition not satisfied: response.val == response.max
13:20:42.589 sleeping before retry #2
13:20:47.590 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2493590e-8e49-4f77-a58a-2d4709480aa8/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:49.607 response time in milliseconds: 2016.30
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:20:49 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:20:49.607 retry condition satisfied
* print response 0.000
13:20:49.607 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 3.884
13:20:49.608 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2493590e-8e49-4f77-a58a-2d4709480aa8
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:53.488 response time in milliseconds: 2840.29
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Cache-Control: public, max-age=120
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:20:52 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Last-Modified: Tue, 27 Oct 2020 13:20:49 GMT
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/2493590e-8e49-4f77-a58a-2d4709480aa8.json","testRuns":{"TestRun":{"id":"EID2493590e-8e49-4f77-a58a-2d4709480aa8","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:20:32.721Z","testTasks":{"TestTask":{"id":"EID4c278010-217a-4cbd-834c-c4a354049b03","parent":{"ref":"EID2493590e-8e49-4f77-a58a-2d4709480aa8"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDea00abd2-f1dc-47f2-8a74-c01eade6c705"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID14a5c15e-9e89-45a6-b235-7382ba68f8e8"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID2493590e-8e49-4f77-a58a-2d4709480aa8/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDea00abd2-f1dc-47f2-8a74-c01eade6c705","remoteResource":"https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:20:31.633Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:20:32.187Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://service.pdok.nl/kadaster/cp/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID14a5c15e-9e89-45a6-b235-7382ba68f8e8","testObject":{"ref":"EIDea00abd2-f1dc-47f2-8a74-c01eade6c705"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a37ac42-0175-1000-13b6-60b441ef1f06","testCaseResults":{"TestCaseResult":[{"id":"EID6a37ac42-0175-1000-692e-df964bf7d92d","testStepResults":{"TestStepResult":[{"id":"EID6a37ac4c-0175-1000-014f-38ef6ed4e177","parent":{"ref":"EID6a37ac42-0175-1000-692e-df964bf7d92d"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:20:34Z","duration":15,"status":"PASSED"},{"id":"EID6a37ac5c-0175-1000-6fb9-819e44d2a339","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37acf6-0175-1000-cb65-11d673ead843","parent":{"ref":"EID6a37ac5c-0175-1000-6fb9-819e44d2a339"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:20:35Z","duration":0,"status":"PASSED"},{"id":"EID6a37acf6-0175-1000-7db6-d836c34ac9ec","parent":{"ref":"EID6a37ac5c-0175-1000-6fb9-819e44d2a339"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:20:35Z","duration":0,"status":"PASSED"},{"id":"EID6a37acf6-0175-1000-57a6-170f0a6a68af","parent":{"ref":"EID6a37ac5c-0175-1000-6fb9-819e44d2a339"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:20:35Z","duration":0,"status":"PASSED"},{"id":"EID6a37acf6-0175-1000-f5fe-c35f6f4d0f3e","parent":{"ref":"EID6a37ac5c-0175-1000-6fb9-819e44d2a339"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:20:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc4669a6a-a127-4b41-ad4f-75d92fa827ff"},{"ref":"EID3cd4bc48-de63-4642-8b96-1a5b2448bba1"},{"ref":"EIDe376c001-7bf7-4ba7-90b8-80c53ec83c3a"}]},"parent":{"ref":"EID6a37ac42-0175-1000-692e-df964bf7d92d"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:20:34Z","duration":71,"status":"PASSED"}]},"parent":{"ref":"EID6a37ac42-0175-1000-13b6-60b441ef1f06"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:20:34Z","duration":190,"status":"PASSED"},{"id":"EID6a37ad1a-0175-1000-4bfc-9c651eec5438","testStepResults":{"TestStepResult":{"id":"EID6a37ad1a-0175-1000-155f-23af75d525e8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37ad9d-0175-1000-4ab7-31033ba99db3","parent":{"ref":"EID6a37ad1a-0175-1000-155f-23af75d525e8"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:20:35Z","duration":0,"status":"PASSED"},{"id":"EID6a37ad9d-0175-1000-f34b-c2aae3ff1525","parent":{"ref":"EID6a37ad1a-0175-1000-155f-23af75d525e8"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:20:35Z","duration":0,"status":"PASSED"},{"id":"EID6a37ad9d-0175-1000-4942-31ddca031cb5","parent":{"ref":"EID6a37ad1a-0175-1000-155f-23af75d525e8"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:20:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1bf01a17-441a-4e7b-b248-aafa2618cd1e"},{"ref":"EIDc0531f09-5a88-4459-9b24-2bb7ded74a6f"},{"ref":"EIDeabd5c4e-7ab5-4147-902c-009b1f4cfb58"}]},"parent":{"ref":"EID6a37ad1a-0175-1000-4bfc-9c651eec5438"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:20:35Z","duration":56,"status":"PASSED"}},"parent":{"ref":"EID6a37ac42-0175-1000-13b6-60b441ef1f06"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:20:35Z","duration":132,"status":"PASSED"}]},"parent":{"ref":"EID14a5c15e-9e89-45a6-b235-7382ba68f8e8"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:20:34Z","duration":348,"status":"PASSED"},{"id":"EID6a37ad9e-0175-1000-cf33-ec5b68e494bb","testCaseResults":{"TestCaseResult":[{"id":"EID6a37ad9e-0175-1000-47c3-8f728d646334","testStepResults":{"TestStepResult":[{"id":"EID6a37ad9e-0175-1000-289f-8e1a0725a53c","parent":{"ref":"EID6a37ad9e-0175-1000-47c3-8f728d646334"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:20:35Z","duration":29,"status":"PASSED"},{"id":"EID6a37ad9e-0175-1000-f7c0-bab1b3bcd96e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37ae39-0175-1000-fffe-eead572be889","parent":{"ref":"EID6a37ad9e-0175-1000-f7c0-bab1b3bcd96e"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:20:35Z","duration":0,"status":"PASSED"},{"id":"EID6a37ae39-0175-1000-8601-ed38a6143409","parent":{"ref":"EID6a37ad9e-0175-1000-f7c0-bab1b3bcd96e"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:20:35Z","duration":0,"status":"PASSED"},{"id":"EID6a37ae39-0175-1000-2935-53967e2c7e97","parent":{"ref":"EID6a37ad9e-0175-1000-f7c0-bab1b3bcd96e"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:20:35Z","duration":0,"status":"PASSED"},{"id":"EID6a37ae39-0175-1000-ef65-40c5046da87b","parent":{"ref":"EID6a37ad9e-0175-1000-f7c0-bab1b3bcd96e"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:20:35Z","duration":0,"status":"PASSED"},{"id":"EID6a37ae39-0175-1000-b098-27aa53e46a75","parent":{"ref":"EID6a37ad9e-0175-1000-f7c0-bab1b3bcd96e"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:20:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8d6f59b4-5087-4892-8744-eeb8400c4593"},{"ref":"EIDfd204631-663c-4f0f-971a-01f5a2cfd8fe"},{"ref":"EID6646c19c-5eed-47c3-80ab-8938365bef48"}]},"parent":{"ref":"EID6a37ad9e-0175-1000-47c3-8f728d646334"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:20:35Z","duration":32,"status":"PASSED"}]},"parent":{"ref":"EID6a37ad9e-0175-1000-cf33-ec5b68e494bb"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:20:35Z","duration":155,"status":"PASSED"},{"id":"EID6a37ae39-0175-1000-ec87-49e52d7f83ab","testStepResults":{"TestStepResult":[{"id":"EID6a37ae39-0175-1000-aca1-76e10647c38d","attachments":{"attachment":[{"ref":"EID404ed7f0-16e1-4438-8289-c224b61ce2ef"},{"ref":"EIDc8901030-bbc6-41bd-9394-13665a990788"}]},"parent":{"ref":"EID6a37ae39-0175-1000-ec87-49e52d7f83ab"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:20:35Z","duration":156,"status":"PASSED"},{"id":"EID6a37aefd-0175-1000-6c4e-29ef82fb06d8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37af63-0175-1000-3b2d-d36d0f1c3729","parent":{"ref":"EID6a37aefd-0175-1000-6c4e-29ef82fb06d8"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:20:35Z","duration":0,"status":"PASSED"},{"id":"EID6a37af63-0175-1000-d4bf-4c37907aaeba","parent":{"ref":"EID6a37aefd-0175-1000-6c4e-29ef82fb06d8"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:20:35Z","duration":0,"status":"PASSED"},{"id":"EID6a37af63-0175-1000-f60a-f80d77fb9e39","parent":{"ref":"EID6a37aefd-0175-1000-6c4e-29ef82fb06d8"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:20:35Z","duration":0,"status":"PASSED"},{"id":"EID6a37af63-0175-1000-5357-427f03eb48e6","parent":{"ref":"EID6a37aefd-0175-1000-6c4e-29ef82fb06d8"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:20:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID87724543-c307-40bb-b418-7c7e04ce6d1d"},{"ref":"EID4f87cbe7-1109-4abf-beaf-e04e109bd84e"},{"ref":"EIDf95f7215-8b67-4c56-a54a-71d46a8dab61"}]},"parent":{"ref":"EID6a37ae39-0175-1000-ec87-49e52d7f83ab"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:20:35Z","duration":26,"status":"PASSED"}]},"parent":{"ref":"EID6a37ad9e-0175-1000-cf33-ec5b68e494bb"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:20:35Z","duration":298,"status":"PASSED"},{"id":"EID6a37af63-0175-1000-911d-bba22dc3ab53","testStepResults":{"TestStepResult":[{"id":"EID6a37af6e-0175-1000-9d9e-74a954a67b76","attachments":{"attachment":[{"ref":"EID0250b794-6acd-44e0-943d-3214ef3c8611"},{"ref":"EID6be89f94-0ebc-44e3-a371-872e1d0a5978"}]},"parent":{"ref":"EID6a37af63-0175-1000-911d-bba22dc3ab53"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:20:35Z","duration":87,"status":"PASSED"},{"id":"EID6a37aff0-0175-1000-19bb-2a01c143f4fa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37b058-0175-1000-c72c-97b340bba2e8","parent":{"ref":"EID6a37aff0-0175-1000-19bb-2a01c143f4fa"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:20:35Z","duration":0,"status":"PASSED"},{"id":"EID6a37b058-0175-1000-0c39-d60b284be022","parent":{"ref":"EID6a37aff0-0175-1000-19bb-2a01c143f4fa"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:20:35Z","duration":0,"status":"PASSED"},{"id":"EID6a37b058-0175-1000-9ef8-1fe3484e2a46","parent":{"ref":"EID6a37aff0-0175-1000-19bb-2a01c143f4fa"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:20:35Z","duration":0,"status":"PASSED"},{"id":"EID6a37b058-0175-1000-177d-b8fb644e2ef3","parent":{"ref":"EID6a37aff0-0175-1000-19bb-2a01c143f4fa"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:20:35Z","duration":0,"status":"PASSED"},{"id":"EID6a37b058-0175-1000-29ee-2240c3bec187","parent":{"ref":"EID6a37aff0-0175-1000-19bb-2a01c143f4fa"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:20:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd720f2cc-87aa-415e-8fe3-ddc0b2561fa1"},{"ref":"EIDdd7fd853-a22b-4b28-98f8-d1d7d0c7aac7"},{"ref":"EIDa11e64a7-1dad-4c11-ab8c-176602c2bc97"}]},"parent":{"ref":"EID6a37af63-0175-1000-911d-bba22dc3ab53"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:20:35Z","duration":25,"status":"PASSED"}]},"parent":{"ref":"EID6a37ad9e-0175-1000-cf33-ec5b68e494bb"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:20:35Z","duration":245,"status":"PASSED"},{"id":"EID6a37b059-0175-1000-6f92-32feeae837cd","testStepResults":{"TestStepResult":[{"id":"EID6a37b063-0175-1000-cfa2-59457cc71635","attachments":{"attachment":[{"ref":"EID2ed84d00-69a1-4d6e-92be-b4a6154edf52"},{"ref":"EIDa4956501-b0e8-4fdd-8d55-429d7a0024d6"}]},"parent":{"ref":"EID6a37b059-0175-1000-6f92-32feeae837cd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:20:35Z","duration":81,"status":"PASSED"},{"id":"EID6a37b0de-0175-1000-558b-010914f7088c","parent":{"ref":"EID6a37b059-0175-1000-6f92-32feeae837cd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"},{"id":"EID6a37b0de-0175-1000-1eae-40d11b05f24f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37b13c-0175-1000-651e-3be602c4fa0c","parent":{"ref":"EID6a37b0de-0175-1000-1eae-40d11b05f24f"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"},{"id":"EID6a37b13c-0175-1000-5c51-7d5fa3f3e570","parent":{"ref":"EID6a37b0de-0175-1000-1eae-40d11b05f24f"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"},{"id":"EID6a37b13c-0175-1000-04f6-b48f637e77ef","parent":{"ref":"EID6a37b0de-0175-1000-1eae-40d11b05f24f"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"},{"id":"EID6a37b13c-0175-1000-7d55-027f9316dc30","parent":{"ref":"EID6a37b0de-0175-1000-1eae-40d11b05f24f"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDec95cc20-effa-4fca-96f8-0cca000fe4c3"},{"ref":"EIDe2f55b6e-a9e2-48da-bc21-b99255570788"},{"ref":"EID81dcf646-5e9f-4ca4-a94b-58091f7979aa"}]},"parent":{"ref":"EID6a37b059-0175-1000-6f92-32feeae837cd"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:20:36Z","duration":21,"status":"PASSED"},{"id":"EID6a37b13c-0175-1000-56df-41be7bc5009d","attachments":{"attachment":{"ref":"EID9d93da39-07a5-4465-8a35-8f99496a8b0a"}},"parent":{"ref":"EID6a37b059-0175-1000-6f92-32feeae837cd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:20:36Z","duration":1,"status":"PASSED"},{"id":"EID6a37b149-0175-1000-8055-ac7d1bcd49c9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37b1b8-0175-1000-5ddc-d2c3ff23a18c","parent":{"ref":"EID6a37b149-0175-1000-8055-ac7d1bcd49c9"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"},{"id":"EID6a37b1b8-0175-1000-32b2-415e506fc7fd","parent":{"ref":"EID6a37b149-0175-1000-8055-ac7d1bcd49c9"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"},{"id":"EID6a37b1b8-0175-1000-fb56-5b98b29873c0","parent":{"ref":"EID6a37b149-0175-1000-8055-ac7d1bcd49c9"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"},{"id":"EID6a37b1b8-0175-1000-2ca4-0d14ad125137","parent":{"ref":"EID6a37b149-0175-1000-8055-ac7d1bcd49c9"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"},{"id":"EID6a37b1b8-0175-1000-6ec6-ee33ff9adc95","parent":{"ref":"EID6a37b149-0175-1000-8055-ac7d1bcd49c9"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDea9a5fb1-1cec-4f3f-a42f-b97800cd7cc4"},{"ref":"EIDefd23a0f-e60d-4723-ab23-3519268f79de"},{"ref":"EIDfcb2fad4-04ba-4693-b257-1b597f6d37d5"}]},"parent":{"ref":"EID6a37b059-0175-1000-6f92-32feeae837cd"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:20:36Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6a37ad9e-0175-1000-cf33-ec5b68e494bb"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:20:35Z","duration":351,"status":"PASSED"},{"id":"EID6a37b1b8-0175-1000-b5c8-8cf0bd1c78f0","testStepResults":{"TestStepResult":[{"id":"EID6a37b1c1-0175-1000-4e67-951d473e96bc","attachments":{"attachment":[{"ref":"EID5cc6b13b-0616-4533-97d4-f221cfbf0d45"},{"ref":"EIDd460c17d-fafe-496e-b3c7-4f7bf9e6208b"}]},"parent":{"ref":"EID6a37b1b8-0175-1000-b5c8-8cf0bd1c78f0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:20:36Z","duration":69,"status":"PASSED"},{"id":"EID6a37b23b-0175-1000-6cd5-de55c4824654","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37b297-0175-1000-7003-c33ed08fc782","parent":{"ref":"EID6a37b23b-0175-1000-6cd5-de55c4824654"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"},{"id":"EID6a37b297-0175-1000-129a-e4afe5dd9524","parent":{"ref":"EID6a37b23b-0175-1000-6cd5-de55c4824654"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"},{"id":"EID6a37b297-0175-1000-f904-6d020c44a458","parent":{"ref":"EID6a37b23b-0175-1000-6cd5-de55c4824654"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"},{"id":"EID6a37b297-0175-1000-0507-5aa4b84220dd","parent":{"ref":"EID6a37b23b-0175-1000-6cd5-de55c4824654"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID530fd78e-c2f5-4b4c-87c6-0a615c284324"},{"ref":"EID69e1fc24-afc0-4216-bc87-558740d3d322"},{"ref":"EID4e585d21-9103-4815-bcfe-e21147ef8ceb"}]},"parent":{"ref":"EID6a37b1b8-0175-1000-b5c8-8cf0bd1c78f0"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:20:36Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6a37ad9e-0175-1000-cf33-ec5b68e494bb"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:20:36Z","duration":223,"status":"PASSED"},{"id":"EID6a37b297-0175-1000-28eb-1e98cea56c8f","testStepResults":{"TestStepResult":[{"id":"EID6a37b2a1-0175-1000-8a07-428890a49e1a","attachments":{"attachment":[{"ref":"EID8179fbc2-689b-4896-9c79-c2eede45dbee"},{"ref":"EID38dbbb93-ace7-4d5b-ad0b-ab3e225098d1"}]},"parent":{"ref":"EID6a37b297-0175-1000-28eb-1e98cea56c8f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:20:36Z","duration":74,"status":"PASSED"},{"id":"EID6a37b315-0175-1000-5b37-a3974753bb62","parent":{"ref":"EID6a37b297-0175-1000-28eb-1e98cea56c8f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"},{"id":"EID6a37b315-0175-1000-76c0-6a177d4f8636","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37b379-0175-1000-fa48-13c861a67639","parent":{"ref":"EID6a37b315-0175-1000-76c0-6a177d4f8636"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"},{"id":"EID6a37b379-0175-1000-6d77-f55b8c667935","parent":{"ref":"EID6a37b315-0175-1000-76c0-6a177d4f8636"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"},{"id":"EID6a37b379-0175-1000-856c-593dd7dfdb2c","parent":{"ref":"EID6a37b315-0175-1000-76c0-6a177d4f8636"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"},{"id":"EID6a37b379-0175-1000-7651-24f60b2359e4","parent":{"ref":"EID6a37b315-0175-1000-76c0-6a177d4f8636"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe467486d-a8fe-41e8-b7d3-f3a6e70891f9"},{"ref":"EIDa127cc17-8342-4174-b0dc-ced56593f15a"},{"ref":"EID0f9dd1bc-7271-4abd-a557-279da3dcefc9"}]},"parent":{"ref":"EID6a37b297-0175-1000-28eb-1e98cea56c8f"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:20:36Z","duration":30,"status":"PASSED"},{"id":"EID6a37b379-0175-1000-8e63-83a963d773c5","attachments":{"attachment":{"ref":"EID58633cca-6602-4b95-9455-b6ec664ef54a"}},"parent":{"ref":"EID6a37b297-0175-1000-28eb-1e98cea56c8f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:20:36Z","duration":14,"status":"PASSED"},{"id":"EID6a37b396-0175-1000-2c75-cb7df886883e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37b477-0175-1000-6f0a-7cebe109f00a","parent":{"ref":"EID6a37b396-0175-1000-2c75-cb7df886883e"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"},{"id":"EID6a37b477-0175-1000-dd4c-26418de5de10","parent":{"ref":"EID6a37b396-0175-1000-2c75-cb7df886883e"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"},{"id":"EID6a37b477-0175-1000-0468-f2ebf29d2db9","parent":{"ref":"EID6a37b396-0175-1000-2c75-cb7df886883e"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:20:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa25f34cc-e746-4b97-82b1-81d0bc9a85f3"},{"ref":"EIDb870e923-0ca8-4d46-a656-9faa07767099"},{"ref":"EID4b0c2d4c-26d8-404a-ba29-02f1d77f07b7"}]},"parent":{"ref":"EID6a37b297-0175-1000-28eb-1e98cea56c8f"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:20:36Z","duration":162,"status":"PASSED"},{"id":"EID6a37b477-0175-1000-8165-0d37085c51e0","attachments":{"attachment":{"ref":"EID1faf82aa-e281-4c94-82fe-c9948cf1f27d"}},"parent":{"ref":"EID6a37b297-0175-1000-28eb-1e98cea56c8f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-27T13:20:36Z","duration":1,"status":"PASSED"},{"id":"EID6a37b4a5-0175-1000-a1c2-8aaa6406efd5","attachments":{"attachment":{"ref":"EID6f535b5b-8624-466a-9a3b-9d287a8d39d1"}},"parent":{"ref":"EID6a37b297-0175-1000-28eb-1e98cea56c8f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-27T13:20:37Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a37ad9e-0175-1000-cf33-ec5b68e494bb"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:20:36Z","duration":538,"status":"PASSED"},{"id":"EID6a37b4b2-0175-1000-5208-ae2d71d6640b","testStepResults":{"TestStepResult":[{"id":"EID6a37b4b2-0175-1000-aa1f-b09358e90a61","attachments":{"attachment":[{"ref":"EID4f85195b-e67d-4961-8420-ff04ceabcad3"},{"ref":"EIDaafad8f0-e759-4bdf-bd6d-e84d063351c1"}]},"parent":{"ref":"EID6a37b4b2-0175-1000-5208-ae2d71d6640b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:20:37Z","duration":89,"status":"PASSED"},{"id":"EID6a37b54a-0175-1000-49f7-47441595ba2d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37b5c0-0175-1000-6222-9a15d09e066b","parent":{"ref":"EID6a37b54a-0175-1000-49f7-47441595ba2d"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:20:37Z","duration":0,"status":"PASSED"},{"id":"EID6a37b5c0-0175-1000-2f56-949e44c88cc4","parent":{"ref":"EID6a37b54a-0175-1000-49f7-47441595ba2d"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:20:37Z","duration":0,"status":"PASSED"},{"id":"EID6a37b5c0-0175-1000-fc32-4c76a01d824b","parent":{"ref":"EID6a37b54a-0175-1000-49f7-47441595ba2d"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:20:37Z","duration":0,"status":"PASSED"},{"id":"EID6a37b5c0-0175-1000-df1b-e554aa77cb17","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a37b54a-0175-1000-49f7-47441595ba2d"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:20:37Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID19487c52-9c3f-46e5-bb4c-fa7264e6cbef"},{"ref":"EID8008bbf2-5c59-49df-b215-f17c474f2a9f"},{"ref":"EID79ad5af0-d1a4-42d8-8c66-66038b4efa3b"}]},"parent":{"ref":"EID6a37b4b2-0175-1000-5208-ae2d71d6640b"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:20:37Z","duration":22,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a37ad9e-0175-1000-cf33-ec5b68e494bb"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:20:37Z","duration":270,"status":"PASSED_MANUAL"},{"id":"EID6a37b5c0-0175-1000-174e-bce2f18fd22c","testStepResults":{"TestStepResult":{"id":"EID6a37b5c0-0175-1000-b2ce-0baf64d91954","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37b68b-0175-1000-b27e-5dc3785ca4cb","parent":{"ref":"EID6a37b5c0-0175-1000-b2ce-0baf64d91954"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:20:37Z","duration":0,"status":"PASSED"},{"id":"EID6a37b68b-0175-1000-af79-9c8f8b400cf8","parent":{"ref":"EID6a37b5c0-0175-1000-b2ce-0baf64d91954"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:20:37Z","duration":0,"status":"PASSED"},{"id":"EID6a37b68b-0175-1000-54f6-ad53c2f8b07e","parent":{"ref":"EID6a37b5c0-0175-1000-b2ce-0baf64d91954"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:20:37Z","duration":0,"status":"PASSED"},{"id":"EID6a37b68b-0175-1000-1b65-322f75bc4b73","parent":{"ref":"EID6a37b5c0-0175-1000-b2ce-0baf64d91954"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:20:37Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID26f9f8db-6fc1-42e8-90df-a209748ca10f"},{"ref":"EID4622e33e-1d11-4e81-870e-dfcfa09ad373"},{"ref":"EID0fab033e-4c57-4f43-8765-9288326aae5b"}]},"parent":{"ref":"EID6a37b5c0-0175-1000-174e-bce2f18fd22c"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:20:37Z","duration":129,"status":"PASSED"}},"parent":{"ref":"EID6a37ad9e-0175-1000-cf33-ec5b68e494bb"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:20:37Z","duration":211,"status":"PASSED"},{"id":"EID6a37b693-0175-1000-1326-99769572ac78","testStepResults":{"TestStepResult":{"id":"EID6a37b693-0175-1000-76ba-a60cac286f0a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37b718-0175-1000-73e2-ccc4b1001a4b","parent":{"ref":"EID6a37b693-0175-1000-76ba-a60cac286f0a"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:20:37Z","duration":0,"status":"PASSED"},{"id":"EID6a37b718-0175-1000-2d35-7620a047d5ff","parent":{"ref":"EID6a37b693-0175-1000-76ba-a60cac286f0a"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:20:37Z","duration":0,"status":"PASSED"},{"id":"EID6a37b718-0175-1000-a461-38e651cea3ad","parent":{"ref":"EID6a37b693-0175-1000-76ba-a60cac286f0a"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:20:37Z","duration":0,"status":"PASSED"},{"id":"EID6a37b718-0175-1000-ab35-c9576fcfbff0","parent":{"ref":"EID6a37b693-0175-1000-76ba-a60cac286f0a"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:20:37Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID98d25b2f-af2d-4772-95d6-cd3d5fd98149"},{"ref":"EID759915ae-245f-4bb2-bad8-240afc4ee120"},{"ref":"EIDe8384119-3367-4435-9a74-c756bb650d88"}]},"parent":{"ref":"EID6a37b693-0175-1000-1326-99769572ac78"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:20:37Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6a37ad9e-0175-1000-cf33-ec5b68e494bb"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:20:37Z","duration":133,"status":"PASSED"},{"id":"EID6a37b718-0175-1000-16b2-72227567107e","testStepResults":{"TestStepResult":[{"id":"EID6a37b718-0175-1000-829a-c73ab21a5d7c","attachments":{"attachment":[{"ref":"EIDe1098d56-7ee6-48ab-8d30-8c2d66f0f993"},{"ref":"EID415e6480-f71e-4834-aa50-a54340309a46"},{"ref":"EID666cabc0-7c74-4e5a-a7d1-eef27f29287f"},{"ref":"EIDb90c5558-d6b0-4952-ae09-3b0a9ebf77cd"},{"ref":"EIDc2667243-8ff2-465e-b892-1fd21f9ea8bb"},{"ref":"EID14ad0c73-298a-4fc3-841d-02b874217690"},{"ref":"EID45fc09dd-410a-4f3d-8c65-85981c0847a7"},{"ref":"EIDc40da614-ed50-4495-b422-1b53d12b2445"},{"ref":"EIDa3f1f21b-6151-4548-9a02-bf59701b2e20"},{"ref":"EID4977bab7-65a3-426e-8cf3-6d66d639abc5"},{"ref":"EIDa8ea381c-f287-4072-aec0-041b1353614e"},{"ref":"EIDe2dfb77b-85e8-4a35-860b-f42af7323fda"}]},"parent":{"ref":"EID6a37b718-0175-1000-16b2-72227567107e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:20:37Z","duration":291,"status":"PASSED"},{"id":"EID6a37b93f-0175-1000-9a3c-b038653b1909","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37b9c0-0175-1000-a2be-36f08008b62c","parent":{"ref":"EID6a37b93f-0175-1000-9a3c-b038653b1909"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"},{"id":"EID6a37b9c0-0175-1000-51a5-886e4ac7988a","parent":{"ref":"EID6a37b93f-0175-1000-9a3c-b038653b1909"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"},{"id":"EID6a37b9c0-0175-1000-2e16-99684d82888f","parent":{"ref":"EID6a37b93f-0175-1000-9a3c-b038653b1909"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"},{"id":"EID6a37b9c0-0175-1000-0ad4-b4e8c148e3ef","parent":{"ref":"EID6a37b93f-0175-1000-9a3c-b038653b1909"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"},{"id":"EID6a37b9c0-0175-1000-7ea4-32cf115188a6","parent":{"ref":"EID6a37b93f-0175-1000-9a3c-b038653b1909"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8c933188-27ff-4f50-95c0-43bcc5bb098b"},{"ref":"EID4fb7c958-ad18-4f42-b018-473ba5fe3a66"},{"ref":"EID721ab4e8-8003-4635-86b2-ce46c5a17f96"}]},"parent":{"ref":"EID6a37b718-0175-1000-16b2-72227567107e"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-27T13:20:38Z","duration":28,"status":"PASSED"}]},"parent":{"ref":"EID6a37ad9e-0175-1000-cf33-ec5b68e494bb"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:20:37Z","duration":680,"status":"PASSED"},{"id":"EID6a37b9c0-0175-1000-6d8b-7d3e749748e2","testStepResults":{"TestStepResult":{"id":"EID6a37b9c0-0175-1000-73a0-b7477c07a082","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37ba70-0175-1000-08b1-9448319df907","parent":{"ref":"EID6a37b9c0-0175-1000-73a0-b7477c07a082"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"},{"id":"EID6a37ba70-0175-1000-2630-8ed96776172b","parent":{"ref":"EID6a37b9c0-0175-1000-73a0-b7477c07a082"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"},{"id":"EID6a37ba70-0175-1000-6731-7f3b2b3ee582","parent":{"ref":"EID6a37b9c0-0175-1000-73a0-b7477c07a082"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"},{"id":"EID6a37ba70-0175-1000-cb4f-e4a92035c1c4","parent":{"ref":"EID6a37b9c0-0175-1000-73a0-b7477c07a082"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3ab846a9-098d-46a9-8888-88f44c95d4e2"},{"ref":"EID3e582aa1-0acd-4b50-8d96-edd8bd84810c"},{"ref":"EID0552524c-7b65-417e-983e-8633d73083d6"}]},"parent":{"ref":"EID6a37b9c0-0175-1000-6d8b-7d3e749748e2"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:20:38Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6a37ad9e-0175-1000-cf33-ec5b68e494bb"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:20:38Z","duration":188,"status":"PASSED"},{"id":"EID6a37ba7c-0175-1000-404b-d9f9329a4ebb","testStepResults":{"TestStepResult":{"id":"EID6a37ba7c-0175-1000-7624-f56c001ea2ec","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37bb1d-0175-1000-5dea-0ca3d3d90c65","parent":{"ref":"EID6a37ba7c-0175-1000-7624-f56c001ea2ec"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"},{"id":"EID6a37bb1d-0175-1000-f284-5116f58f9c66","parent":{"ref":"EID6a37ba7c-0175-1000-7624-f56c001ea2ec"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"},{"id":"EID6a37bb1d-0175-1000-9aee-46738d04d1bb","parent":{"ref":"EID6a37ba7c-0175-1000-7624-f56c001ea2ec"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"},{"id":"EID6a37bb1d-0175-1000-530b-03d7de4d16fb","parent":{"ref":"EID6a37ba7c-0175-1000-7624-f56c001ea2ec"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"},{"id":"EID6a37bb1d-0175-1000-1d07-d1c90b69f20c","parent":{"ref":"EID6a37ba7c-0175-1000-7624-f56c001ea2ec"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"},{"id":"EID6a37bb1d-0175-1000-8bfd-da4907c7c49e","parent":{"ref":"EID6a37ba7c-0175-1000-7624-f56c001ea2ec"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8081332e-fed6-4b67-a76e-9087a8590a83"},{"ref":"EIDb76c9b6d-08f7-43cb-98d6-87faeb72eb8c"},{"ref":"EID6d2289e6-65bf-4bcd-8f09-268db3ce646c"}]},"parent":{"ref":"EID6a37ba7c-0175-1000-404b-d9f9329a4ebb"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:20:38Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6a37ad9e-0175-1000-cf33-ec5b68e494bb"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:20:38Z","duration":161,"status":"PASSED"},{"id":"EID6a37bb1d-0175-1000-b670-1582a9b2697a","testStepResults":{"TestStepResult":{"id":"EID6a37bb1d-0175-1000-7b5c-34e3100ae0d1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37bbaa-0175-1000-cd65-d79175a22dfe","parent":{"ref":"EID6a37bb1d-0175-1000-7b5c-34e3100ae0d1"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"},{"id":"EID6a37bbaa-0175-1000-b288-1eafcca39348","parent":{"ref":"EID6a37bb1d-0175-1000-7b5c-34e3100ae0d1"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"},{"id":"EID6a37bbaa-0175-1000-b681-94c83c590cae","parent":{"ref":"EID6a37bb1d-0175-1000-7b5c-34e3100ae0d1"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"},{"id":"EID6a37bbaa-0175-1000-cdcc-9b43adc958cb","parent":{"ref":"EID6a37bb1d-0175-1000-7b5c-34e3100ae0d1"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"},{"id":"EID6a37bbaa-0175-1000-a557-01f56f7e9742","parent":{"ref":"EID6a37bb1d-0175-1000-7b5c-34e3100ae0d1"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"},{"id":"EID6a37bbaa-0175-1000-ed26-5fed56299660","parent":{"ref":"EID6a37bb1d-0175-1000-7b5c-34e3100ae0d1"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3f417696-e058-4937-ae1a-50b81595a837"},{"ref":"EID1c2c35ca-edbf-4371-8db4-a0d8452fe69a"},{"ref":"EID656fdfe7-acdc-42b1-bd97-fc120f137221"}]},"parent":{"ref":"EID6a37bb1d-0175-1000-b670-1582a9b2697a"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:20:38Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6a37ad9e-0175-1000-cf33-ec5b68e494bb"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:20:38Z","duration":141,"status":"PASSED"},{"id":"EID6a37bbaa-0175-1000-1185-0a34d900e5d4","testStepResults":{"TestStepResult":{"id":"EID6a37bbaa-0175-1000-3742-6c294136baa8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37bc02-0175-1000-1e96-de82be5730e6","parent":{"ref":"EID6a37bbaa-0175-1000-3742-6c294136baa8"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"},{"id":"EID6a37bc02-0175-1000-26e9-355764fd9189","parent":{"ref":"EID6a37bbaa-0175-1000-3742-6c294136baa8"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"},{"id":"EID6a37bc02-0175-1000-802d-ea9143c587a9","parent":{"ref":"EID6a37bbaa-0175-1000-3742-6c294136baa8"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"},{"id":"EID6a37bc02-0175-1000-a344-59b0b789ae0d","parent":{"ref":"EID6a37bbaa-0175-1000-3742-6c294136baa8"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:20:38Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID84fa1d26-913d-4492-8fae-5cc7fe15ac08"},{"ref":"EIDf4034f09-838a-4376-a8bb-df2cd289275c"},{"ref":"EIDbd698682-02a2-4ad6-bb28-e41c4d569a2b"}]},"parent":{"ref":"EID6a37bbaa-0175-1000-1185-0a34d900e5d4"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:20:38Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6a37ad9e-0175-1000-cf33-ec5b68e494bb"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:20:38Z","duration":88,"status":"PASSED"},{"id":"EID6a37bc02-0175-1000-d315-c2dc142f267c","testStepResults":{"TestStepResult":[{"id":"EID6a37bc02-0175-1000-a7d8-0e7a7d0c0e89","attachments":{"attachment":[{"ref":"EID3bfffbb2-8a77-49c7-aca7-56652cb8e5b8"},{"ref":"EID06f04138-b0b9-4591-b57b-eb6bbb40216c"},{"ref":"EID23be437d-222f-40b4-a271-48635fa15df0"},{"ref":"EID534dfae3-47b5-4449-85e7-031ac4e1c953"}]},"parent":{"ref":"EID6a37bc02-0175-1000-d315-c2dc142f267c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:20:38Z","duration":167,"status":"PASSED"},{"id":"EID6a37bcef-0175-1000-2460-5ff9ced931b2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37bd50-0175-1000-18e8-bd72c1855f01","parent":{"ref":"EID6a37bcef-0175-1000-2460-5ff9ced931b2"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"},{"id":"EID6a37bd51-0175-1000-a2ba-3b35ca57d898","parent":{"ref":"EID6a37bcef-0175-1000-2460-5ff9ced931b2"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"},{"id":"EID6a37bd51-0175-1000-8f98-859280e77dca","parent":{"ref":"EID6a37bcef-0175-1000-2460-5ff9ced931b2"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"},{"id":"EID6a37bd51-0175-1000-510b-205de6fc24b5","parent":{"ref":"EID6a37bcef-0175-1000-2460-5ff9ced931b2"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2c2405a8-67fb-4b13-b547-b40e3c84d741"},{"ref":"EIDe078dc4f-8a16-4a88-8e8d-1b78365b8a90"},{"ref":"EID89348524-ee94-4953-880d-92ab1ccffc24"}]},"parent":{"ref":"EID6a37bc02-0175-1000-d315-c2dc142f267c"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:20:39Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6a37ad9e-0175-1000-cf33-ec5b68e494bb"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:20:38Z","duration":335,"status":"PASSED"},{"id":"EID6a37bd51-0175-1000-a58f-92f5c9b82671","testStepResults":{"TestStepResult":{"id":"EID6a37bd51-0175-1000-2d71-c8d983b8f953","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37bda8-0175-1000-fdbd-8214c278e6db","parent":{"ref":"EID6a37bd51-0175-1000-2d71-c8d983b8f953"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"},{"id":"EID6a37bda8-0175-1000-19f5-940002da073e","parent":{"ref":"EID6a37bd51-0175-1000-2d71-c8d983b8f953"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"},{"id":"EID6a37bda8-0175-1000-d5f1-423677b6c2ad","parent":{"ref":"EID6a37bd51-0175-1000-2d71-c8d983b8f953"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"},{"id":"EID6a37bda8-0175-1000-fe2a-f0a6804fb8cb","parent":{"ref":"EID6a37bd51-0175-1000-2d71-c8d983b8f953"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4c64eb3e-4dc2-45a6-b9fe-96b156c27b02"},{"ref":"EID329bb2f2-f897-475a-a524-c4b3f6d91791"},{"ref":"EID10efa97c-0bae-4916-87e0-277ec25a6f0a"}]},"parent":{"ref":"EID6a37bd51-0175-1000-a58f-92f5c9b82671"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:20:39Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6a37ad9e-0175-1000-cf33-ec5b68e494bb"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:20:39Z","duration":87,"status":"PASSED"},{"id":"EID6a37bda8-0175-1000-e6e8-2b25e9e628ed","testStepResults":{"TestStepResult":[{"id":"EID6a37bda8-0175-1000-f7bc-4bf985ff5a1b","parent":{"ref":"EID6a37bda8-0175-1000-e6e8-2b25e9e628ed"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"},{"id":"EID6a37bda8-0175-1000-454c-3a260d561fe9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37be40-0175-1000-fc92-998d4bb701a0","parent":{"ref":"EID6a37bda8-0175-1000-454c-3a260d561fe9"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"},{"id":"EID6a37be40-0175-1000-9124-aa218dcfcb57","parent":{"ref":"EID6a37bda8-0175-1000-454c-3a260d561fe9"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"},{"id":"EID6a37be40-0175-1000-5975-c8b4cc58fce0","parent":{"ref":"EID6a37bda8-0175-1000-454c-3a260d561fe9"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"},{"id":"EID6a37be40-0175-1000-39bb-5b27c925b0bd","parent":{"ref":"EID6a37bda8-0175-1000-454c-3a260d561fe9"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7a59a749-36d4-47c2-a12e-9e8dccf91121"},{"ref":"EID0ac7f09d-bda7-434b-bbfc-c38eaa70312d"},{"ref":"EID860192ca-55ad-44f6-99e3-4c8c8753e2c3"}]},"parent":{"ref":"EID6a37bda8-0175-1000-e6e8-2b25e9e628ed"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:20:39Z","duration":22,"status":"PASSED"},{"id":"EID6a37be95-0175-1000-dcae-bb1318cac579","attachments":{"attachment":{"ref":"EIDf93baab4-3c60-4f0e-adbf-3a6fcd6768e7"}},"parent":{"ref":"EID6a37bda8-0175-1000-e6e8-2b25e9e628ed"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/63db16c5-c828-4922-95dd-5db67bc9c203.json"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"},{"id":"EID6a37bea1-0175-1000-d52c-bd16da485e13","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37bf11-0175-1000-f2b9-90727f6fc264","parent":{"ref":"EID6a37bea1-0175-1000-d52c-bd16da485e13"},"resultedFrom":{"ref":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"},{"id":"EID6a37bf11-0175-1000-5bff-3195dfac56a6","parent":{"ref":"EID6a37bea1-0175-1000-d52c-bd16da485e13"},"resultedFrom":{"ref":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"},{"id":"EID6a37bf11-0175-1000-4cb0-5bd18cb8597d","parent":{"ref":"EID6a37bea1-0175-1000-d52c-bd16da485e13"},"resultedFrom":{"ref":"EID234062a4-45c2-4013-9038-71b8cc9a7d36"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"},{"id":"EID6a37bf11-0175-1000-8d7a-19482e276a3e","parent":{"ref":"EID6a37bea1-0175-1000-d52c-bd16da485e13"},"resultedFrom":{"ref":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6ef3c134-cc09-4167-b43e-01169c30a5d1"},{"ref":"EID07ee63fb-e98c-49d4-904d-89e638ec979a"},{"ref":"EIDa31c3501-b746-4017-9b16-9b893d18ba17"}]},"parent":{"ref":"EID6a37bda8-0175-1000-e6e8-2b25e9e628ed"},"resultedFrom":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"startTimestamp":"2020-10-27T13:20:39Z","duration":43,"status":"PASSED"},{"id":"EID6a37bf12-0175-1000-f203-95c38ad21542","attachments":{"attachment":{"ref":"EID7c7ad1de-b70a-44f8-94ba-f05c082bf3f3"}},"parent":{"ref":"EID6a37bda8-0175-1000-e6e8-2b25e9e628ed"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/18c66972-5d73-4718-8e9c-439d4032a9fe.json"},"startTimestamp":"2020-10-27T13:20:39Z","duration":1,"status":"PASSED"},{"id":"EID6a37bf1d-0175-1000-5844-003c8b29da83","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37bfa4-0175-1000-9296-dff7f40de2db","parent":{"ref":"EID6a37bf1d-0175-1000-5844-003c8b29da83"},"resultedFrom":{"ref":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"},{"id":"EID6a37bfa4-0175-1000-0f52-9dab2899f29c","parent":{"ref":"EID6a37bf1d-0175-1000-5844-003c8b29da83"},"resultedFrom":{"ref":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"},{"id":"EID6a37bfa4-0175-1000-10ad-ee13815dac59","parent":{"ref":"EID6a37bf1d-0175-1000-5844-003c8b29da83"},"resultedFrom":{"ref":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"},{"id":"EID6a37bfa4-0175-1000-9cae-9add27def518","parent":{"ref":"EID6a37bf1d-0175-1000-5844-003c8b29da83"},"resultedFrom":{"ref":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1f804a9b-06c6-4e53-b0ef-03fbbbd580d9"},{"ref":"EIDeefbef25-410b-4391-a70f-a05e0a73cdc8"},{"ref":"EID78efe342-8c98-4300-ae55-5832d48eed00"}]},"parent":{"ref":"EID6a37bda8-0175-1000-e6e8-2b25e9e628ed"},"resultedFrom":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"startTimestamp":"2020-10-27T13:20:39Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6a37ad9e-0175-1000-cf33-ec5b68e494bb"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:20:39Z","duration":508,"status":"PASSED"}]},"parent":{"ref":"EID14a5c15e-9e89-45a6-b235-7382ba68f8e8"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:20:35Z","duration":4614,"status":"PASSED_MANUAL"},{"id":"EID6a37bfa4-0175-1000-247e-a7c5dc9ad342","testCaseResults":{"TestCaseResult":[{"id":"EID6a37bfa4-0175-1000-2538-556b3b128411","testStepResults":{"TestStepResult":[{"id":"EID6a37bfa5-0175-1000-9afa-d81c095b4f4d","parent":{"ref":"EID6a37bfa4-0175-1000-2538-556b3b128411"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"},{"id":"EID6a37bfa5-0175-1000-79ba-10aa511de78e","parent":{"ref":"EID6a37bfa4-0175-1000-2538-556b3b128411"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:20:39Z","duration":32,"status":"PASSED"},{"id":"EID6a37bfaf-0175-1000-87b4-fe11d7337569","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37c013-0175-1000-c567-4a6675fad629","parent":{"ref":"EID6a37bfaf-0175-1000-87b4-fe11d7337569"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"},{"id":"EID6a37c013-0175-1000-23e9-126bf19eab04","parent":{"ref":"EID6a37bfaf-0175-1000-87b4-fe11d7337569"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"},{"id":"EID6a37c013-0175-1000-9fb0-26ce79a5a3f1","parent":{"ref":"EID6a37bfaf-0175-1000-87b4-fe11d7337569"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0cf9e8d5-15df-480c-88e7-7742c28bd5ff"},{"ref":"EID61671d21-c0c6-4f19-b390-ac6cc2db4d44"},{"ref":"EID50a9143f-0480-445b-b739-c5652286e354"}]},"parent":{"ref":"EID6a37bfa4-0175-1000-2538-556b3b128411"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:20:39Z","duration":21,"status":"PASSED"},{"id":"EID6a37c013-0175-1000-6beb-56c5b4a98988","attachments":{"attachment":{"ref":"EIDfe6dfe72-ed85-467d-85e6-cf1d27562867"}},"parent":{"ref":"EID6a37bfa4-0175-1000-2538-556b3b128411"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:20:39Z","duration":0,"status":"PASSED"},{"id":"EID6a37c020-0175-1000-aa4b-27aef0c8fb91","parent":{"ref":"EID6a37bfa4-0175-1000-2538-556b3b128411"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:20:39Z","duration":12,"status":"PASSED"}]},"parent":{"ref":"EID6a37bfa4-0175-1000-247e-a7c5dc9ad342"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:20:39Z","duration":136,"status":"PASSED"},{"id":"EID6a37c02c-0175-1000-95cc-81e8e61c3629","testStepResults":{"TestStepResult":[{"id":"EID6a37c02c-0175-1000-53c6-a2e4880985b1","parent":{"ref":"EID6a37c02c-0175-1000-95cc-81e8e61c3629"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:20:39Z","duration":29,"status":"PASSED"},{"id":"EID6a37c02c-0175-1000-8923-dd5ee98bf1dd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37c0e6-0175-1000-0616-ac0ce05a229b","parent":{"ref":"EID6a37c02c-0175-1000-8923-dd5ee98bf1dd"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c0e6-0175-1000-b5e5-284956a725ac","parent":{"ref":"EID6a37c02c-0175-1000-8923-dd5ee98bf1dd"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c0e6-0175-1000-beab-657e96279a22","parent":{"ref":"EID6a37c02c-0175-1000-8923-dd5ee98bf1dd"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c0e6-0175-1000-4031-536ee47f6f29","parent":{"ref":"EID6a37c02c-0175-1000-8923-dd5ee98bf1dd"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c0e6-0175-1000-c5e6-ec7b28b4e5be","parent":{"ref":"EID6a37c02c-0175-1000-8923-dd5ee98bf1dd"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1ba2899c-b5bf-483f-a9c1-a766139a40db"},{"ref":"EID86db125f-30ad-41a0-9dd4-af02eb9308b3"},{"ref":"EID85c0aece-0a1f-4acf-b6a7-6196d9a85f8d"}]},"parent":{"ref":"EID6a37c02c-0175-1000-95cc-81e8e61c3629"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:20:39Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6a37bfa4-0175-1000-247e-a7c5dc9ad342"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:20:39Z","duration":186,"status":"PASSED"},{"id":"EID6a37c0e6-0175-1000-fe6e-6a9806c9713f","testStepResults":{"TestStepResult":[{"id":"EID6a37c0e6-0175-1000-6589-54a110ef78fb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37c135-0175-1000-5ee4-3f1b0b426d30","parent":{"ref":"EID6a37c0e6-0175-1000-6589-54a110ef78fb"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c135-0175-1000-3c1c-66a5f9952c14","parent":{"ref":"EID6a37c0e6-0175-1000-6589-54a110ef78fb"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c135-0175-1000-e7e0-a7b4e9e7e7db","parent":{"ref":"EID6a37c0e6-0175-1000-6589-54a110ef78fb"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID28df1a25-731d-4640-8003-beef18abab9b"},{"ref":"EID5f9dfdce-cd10-46eb-8936-24077bb8d7ea"},{"ref":"EID60998899-f456-4cbe-b588-217f0b3f224f"}]},"parent":{"ref":"EID6a37c0e6-0175-1000-fe6e-6a9806c9713f"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:20:40Z","duration":22,"status":"PASSED"},{"id":"EID6a37c135-0175-1000-35d0-16441bfbacdb","attachments":{"attachment":{"ref":"EID7ddfdf79-d312-4c85-933e-82e319f46268"}},"parent":{"ref":"EID6a37c0e6-0175-1000-fe6e-6a9806c9713f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c14f-0175-1000-b23f-699cc2addf3d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37c1f5-0175-1000-94d3-e371cf6399db","parent":{"ref":"EID6a37c14f-0175-1000-b23f-699cc2addf3d"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c1f5-0175-1000-575f-1ed563245439","parent":{"ref":"EID6a37c14f-0175-1000-b23f-699cc2addf3d"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c1f5-0175-1000-8b48-9ad54abfabbf","parent":{"ref":"EID6a37c14f-0175-1000-b23f-699cc2addf3d"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c1f5-0175-1000-424d-adc35e452c9b","parent":{"ref":"EID6a37c14f-0175-1000-b23f-699cc2addf3d"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c1f5-0175-1000-2aa9-2975047a90f5","parent":{"ref":"EID6a37c14f-0175-1000-b23f-699cc2addf3d"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID75923fd0-66c2-46d4-a938-57195fbcf938"},{"ref":"EID912a9dbe-97e1-4147-b926-61b6fd0dbbb4"},{"ref":"EID363728b7-747e-4c51-bcb3-912a37d47fa9"}]},"parent":{"ref":"EID6a37c0e6-0175-1000-fe6e-6a9806c9713f"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-27T13:20:40Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6a37bfa4-0175-1000-247e-a7c5dc9ad342"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:20:40Z","duration":271,"status":"PASSED"},{"id":"EID6a37c1f5-0175-1000-ed8c-25ffbcafb15a","testStepResults":{"TestStepResult":[{"id":"EID6a37c235-0175-1000-3f40-77b4774c5f8e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37c28c-0175-1000-2c73-166e14272d1d","parent":{"ref":"EID6a37c235-0175-1000-3f40-77b4774c5f8e"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c28c-0175-1000-ad2d-7f7af8dac167","parent":{"ref":"EID6a37c235-0175-1000-3f40-77b4774c5f8e"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c28c-0175-1000-5e3d-b08eae7e6f00","parent":{"ref":"EID6a37c235-0175-1000-3f40-77b4774c5f8e"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c28c-0175-1000-1ed6-11b4bced3e8d","parent":{"ref":"EID6a37c235-0175-1000-3f40-77b4774c5f8e"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd3f847b0-fa3a-4a46-929d-fc8182b1a880"},{"ref":"EIDa2d8b223-0e52-4ce7-b3fc-81513a50aa52"},{"ref":"EIDc1dd0626-2bda-4694-80fd-759c4cf4d940"}]},"parent":{"ref":"EID6a37c1f5-0175-1000-ed8c-25ffbcafb15a"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:20:40Z","duration":21,"status":"PASSED"},{"id":"EID6a37c28c-0175-1000-1253-4d151a723597","attachments":{"attachment":{"ref":"EID3bc9faca-b44d-4cd9-b6d8-8455a58cf521"}},"parent":{"ref":"EID6a37c1f5-0175-1000-ed8c-25ffbcafb15a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-27T13:20:40Z","duration":1,"status":"PASSED"},{"id":"EID6a37c299-0175-1000-0dbb-feffb8b149dd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37c2c2-0175-1000-cecc-25b41890c632","parent":{"ref":"EID6a37c299-0175-1000-0dbb-feffb8b149dd"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c2c2-0175-1000-1daf-97a1631ff3eb","parent":{"ref":"EID6a37c299-0175-1000-0dbb-feffb8b149dd"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2a3f6060-d6d8-4120-915a-16ae5b96dc93"},{"ref":"EIDdcb4c4cb-9412-4cff-9f2a-26d62d2aefe1"}]},"parent":{"ref":"EID6a37c1f5-0175-1000-ed8c-25ffbcafb15a"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-27T13:20:40Z","duration":36,"status":"PASSED"},{"id":"EID6a37c2c2-0175-1000-fca7-583ee36d3462","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37c32b-0175-1000-5295-b6b8f4516825","parent":{"ref":"EID6a37c2c2-0175-1000-fca7-583ee36d3462"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c32b-0175-1000-75f5-86f1a9411dbc","parent":{"ref":"EID6a37c2c2-0175-1000-fca7-583ee36d3462"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c32b-0175-1000-39a6-ccb5d3a89837","parent":{"ref":"EID6a37c2c2-0175-1000-fca7-583ee36d3462"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c32b-0175-1000-629c-aa0c0607dddc","parent":{"ref":"EID6a37c2c2-0175-1000-fca7-583ee36d3462"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7974c9b3-6a41-462c-8972-7c916b23bc00"},{"ref":"EIDe0b08494-ff34-430b-9dba-e9c0cd2e887b"},{"ref":"EIDcfd36352-9997-49fb-9072-493a1503142d"}]},"parent":{"ref":"EID6a37c1f5-0175-1000-ed8c-25ffbcafb15a"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-27T13:20:40Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6a37bfa4-0175-1000-247e-a7c5dc9ad342"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:20:40Z","duration":310,"status":"PASSED"},{"id":"EID6a37c32c-0175-1000-c36f-9d0b0e83b9b0","testStepResults":{"TestStepResult":{"id":"EID6a37c334-0175-1000-5d8e-e6a1044a7eac","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37c3af-0175-1000-4b33-a3228cc479e4","parent":{"ref":"EID6a37c334-0175-1000-5d8e-e6a1044a7eac"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c3af-0175-1000-bf97-7eacc083e8e6","parent":{"ref":"EID6a37c334-0175-1000-5d8e-e6a1044a7eac"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c3af-0175-1000-5ddc-5292004d0c14","parent":{"ref":"EID6a37c334-0175-1000-5d8e-e6a1044a7eac"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDad1da0fc-0775-4bcf-ab1e-07ee6331d57a"},{"ref":"EID3008f7c0-400b-49b8-b3cd-dc174eabc359"},{"ref":"EIDcc0eb286-ee6d-4247-9273-1bf0936122ff"}]},"parent":{"ref":"EID6a37c32c-0175-1000-c36f-9d0b0e83b9b0"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:20:40Z","duration":23,"status":"PASSED"}},"parent":{"ref":"EID6a37bfa4-0175-1000-247e-a7c5dc9ad342"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:20:40Z","duration":132,"status":"PASSED"},{"id":"EID6a37c3b0-0175-1000-337e-2e6c237918d6","testStepResults":{"TestStepResult":{"id":"EID6a37c3b0-0175-1000-ed9f-a68d5ebd75cc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37c3ff-0175-1000-c272-8ae82b595b64","parent":{"ref":"EID6a37c3b0-0175-1000-ed9f-a68d5ebd75cc"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c3ff-0175-1000-233b-b49bd38ebd8c","parent":{"ref":"EID6a37c3b0-0175-1000-ed9f-a68d5ebd75cc"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"},{"id":"EID6a37c3ff-0175-1000-8cb6-35d21636d751","parent":{"ref":"EID6a37c3b0-0175-1000-ed9f-a68d5ebd75cc"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:20:40Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbe810814-10b5-4ae3-92e4-7e7ce8e32590"},{"ref":"EID93654a8b-115a-424b-a1ec-5aecd86aaa27"},{"ref":"EID8d5e899d-845e-445c-ad5f-2d64b5300c9b"}]},"parent":{"ref":"EID6a37c3b0-0175-1000-337e-2e6c237918d6"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:20:40Z","duration":25,"status":"PASSED"}},"parent":{"ref":"EID6a37bfa4-0175-1000-247e-a7c5dc9ad342"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:20:40Z","duration":79,"status":"PASSED"},{"id":"EID6a37c400-0175-1000-414c-368d2a5fdfaa","testStepResults":{"TestStepResult":{"id":"EID6a37c400-0175-1000-aa95-fa9522a7e6c1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37c471-0175-1000-9d1a-3fab8022ad76","parent":{"ref":"EID6a37c400-0175-1000-aa95-fa9522a7e6c1"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c471-0175-1000-da2f-28a7f96604f9","parent":{"ref":"EID6a37c400-0175-1000-aa95-fa9522a7e6c1"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c471-0175-1000-8995-912fc414fa9e","parent":{"ref":"EID6a37c400-0175-1000-aa95-fa9522a7e6c1"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c471-0175-1000-d87f-bf22a4c75468","parent":{"ref":"EID6a37c400-0175-1000-aa95-fa9522a7e6c1"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c471-0175-1000-e82a-41f70954bcd4","parent":{"ref":"EID6a37c400-0175-1000-aa95-fa9522a7e6c1"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcc1f2020-6b1e-4ea8-a080-c61f0a652cd3"},{"ref":"EID2e58d86e-aa37-4958-908a-8bdb94c09b65"},{"ref":"EID75eb9bd1-ba5a-4a47-be6e-95bc9f56aeff"}]},"parent":{"ref":"EID6a37c400-0175-1000-414c-368d2a5fdfaa"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:20:40Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6a37bfa4-0175-1000-247e-a7c5dc9ad342"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:20:40Z","duration":128,"status":"PASSED"},{"id":"EID6a37c480-0175-1000-9515-3d94fd3c00eb","testStepResults":{"TestStepResult":{"id":"EID6a37c480-0175-1000-8f1c-ad7495a401ad","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37c4d5-0175-1000-f097-2e12e4c9024c","parent":{"ref":"EID6a37c480-0175-1000-8f1c-ad7495a401ad"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c4d5-0175-1000-b140-dde9d3dbdecc","parent":{"ref":"EID6a37c480-0175-1000-8f1c-ad7495a401ad"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c4d5-0175-1000-d4a7-bc93930e030b","parent":{"ref":"EID6a37c480-0175-1000-8f1c-ad7495a401ad"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID90b71b53-4e18-4441-b297-1ebd3457ad06"},{"ref":"EID503014be-b146-42e8-b6a2-ecf60f443534"},{"ref":"EID7db6b719-671d-41d4-aaa9-47bd5b7443b7"}]},"parent":{"ref":"EID6a37c480-0175-1000-9515-3d94fd3c00eb"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:20:41Z","duration":24,"status":"PASSED"}},"parent":{"ref":"EID6a37bfa4-0175-1000-247e-a7c5dc9ad342"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:20:41Z","duration":85,"status":"PASSED"},{"id":"EID6a37c4d5-0175-1000-3e81-e5d316dbc03f","testStepResults":{"TestStepResult":{"id":"EID6a37c4d5-0175-1000-3065-ef7b97fc6f61","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37c551-0175-1000-d300-dca24eb4b928","parent":{"ref":"EID6a37c4d5-0175-1000-3065-ef7b97fc6f61"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c551-0175-1000-9582-55766941f081","parent":{"ref":"EID6a37c4d5-0175-1000-3065-ef7b97fc6f61"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c551-0175-1000-32da-72b03ba6ba9f","parent":{"ref":"EID6a37c4d5-0175-1000-3065-ef7b97fc6f61"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc6e77309-3e67-47ca-876e-3d2db5c864e0"},{"ref":"EID5e102a81-bb51-4486-8aef-66c5fdd95edd"},{"ref":"EID0ce7630a-1099-406b-9d57-03a5b59e83d8"}]},"parent":{"ref":"EID6a37c4d5-0175-1000-3e81-e5d316dbc03f"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:20:41Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6a37bfa4-0175-1000-247e-a7c5dc9ad342"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:20:41Z","duration":125,"status":"PASSED"},{"id":"EID6a37c55f-0175-1000-bf90-3c8615c8d820","testStepResults":{"TestStepResult":{"id":"EID6a37c55f-0175-1000-ae1d-5072337fd4d7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37c5e5-0175-1000-774a-c65cafd54037","parent":{"ref":"EID6a37c55f-0175-1000-ae1d-5072337fd4d7"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c5e5-0175-1000-ba6a-b4ea844be67f","parent":{"ref":"EID6a37c55f-0175-1000-ae1d-5072337fd4d7"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c5e5-0175-1000-d726-6deeb96de307","parent":{"ref":"EID6a37c55f-0175-1000-ae1d-5072337fd4d7"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c5e5-0175-1000-e95e-0760d5455e6a","parent":{"ref":"EID6a37c55f-0175-1000-ae1d-5072337fd4d7"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID73176db8-b412-42a3-b2e2-ab4c9ceeba40"},{"ref":"EID3ef86c86-757f-45c4-99ce-8709c231f846"},{"ref":"EID0da6342d-cbe8-47e4-a53b-92d09a11f7d0"}]},"parent":{"ref":"EID6a37c55f-0175-1000-bf90-3c8615c8d820"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:20:41Z","duration":25,"status":"PASSED"}},"parent":{"ref":"EID6a37bfa4-0175-1000-247e-a7c5dc9ad342"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:20:41Z","duration":134,"status":"PASSED"},{"id":"EID6a37c5e5-0175-1000-9afc-d2433c2bef5d","testStepResults":{"TestStepResult":{"id":"EID6a37c5e5-0175-1000-6b6f-505372ddf371","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37c63e-0175-1000-9329-da88957d5d17","parent":{"ref":"EID6a37c5e5-0175-1000-6b6f-505372ddf371"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c63e-0175-1000-01cf-cda92ec07698","parent":{"ref":"EID6a37c5e5-0175-1000-6b6f-505372ddf371"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c63e-0175-1000-994e-8770871985e6","parent":{"ref":"EID6a37c5e5-0175-1000-6b6f-505372ddf371"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c63e-0175-1000-8dff-162cc71b236f","parent":{"ref":"EID6a37c5e5-0175-1000-6b6f-505372ddf371"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5ec94368-f2c1-4ee4-963d-c2f162a622ed"},{"ref":"EID07f8f1e4-f2ce-4387-94f2-0a04b2f905c7"},{"ref":"EIDb9ebe2c2-4b44-4dae-97ce-35a99342cc81"}]},"parent":{"ref":"EID6a37c5e5-0175-1000-9afc-d2433c2bef5d"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:20:41Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6a37bfa4-0175-1000-247e-a7c5dc9ad342"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:20:41Z","duration":89,"status":"PASSED"},{"id":"EID6a37c63e-0175-1000-235f-05b8f1200654","testStepResults":{"TestStepResult":[{"id":"EID6a37c63e-0175-1000-f6ca-8038a39412ba","parent":{"ref":"EID6a37c63e-0175-1000-235f-05b8f1200654"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c647-0175-1000-3de6-d6082c562b08","parent":{"ref":"EID6a37c63e-0175-1000-235f-05b8f1200654"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:20:41Z","duration":52,"status":"PASSED"},{"id":"EID6a37c647-0175-1000-774f-bfb2083fb353","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37c6b8-0175-1000-d9c7-1dfa37776e49","parent":{"ref":"EID6a37c647-0175-1000-774f-bfb2083fb353"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c6b8-0175-1000-68b6-ef33b20b6d4f","parent":{"ref":"EID6a37c647-0175-1000-774f-bfb2083fb353"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c6b8-0175-1000-d160-767a86d1c9c0","parent":{"ref":"EID6a37c647-0175-1000-774f-bfb2083fb353"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c6b8-0175-1000-71e7-788d928cd360","parent":{"ref":"EID6a37c647-0175-1000-774f-bfb2083fb353"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8d07217a-b309-42a0-a32d-4a65d2059c64"},{"ref":"EID6cbbe415-d5f8-4c63-ad11-35528e38a421"},{"ref":"EID66688163-83b2-4c52-a03b-f95c2b040720"}]},"parent":{"ref":"EID6a37c63e-0175-1000-235f-05b8f1200654"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:20:41Z","duration":35,"status":"PASSED"},{"id":"EID6a37c6b8-0175-1000-465a-cb57f9aee081","attachments":{"attachment":{"ref":"EID5cdd441b-ffc8-4aae-9970-10d515862560"}},"parent":{"ref":"EID6a37c63e-0175-1000-235f-05b8f1200654"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:20:41Z","duration":1,"status":"PASSED"},{"id":"EID6a37c6ca-0175-1000-b4be-907025480679","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37c755-0175-1000-4153-20134197454c","parent":{"ref":"EID6a37c6ca-0175-1000-b4be-907025480679"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c755-0175-1000-f585-396294862fb7","parent":{"ref":"EID6a37c6ca-0175-1000-b4be-907025480679"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c755-0175-1000-28e0-4df6648d610f","parent":{"ref":"EID6a37c6ca-0175-1000-b4be-907025480679"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c755-0175-1000-f2cf-01f7b1ff347f","parent":{"ref":"EID6a37c6ca-0175-1000-b4be-907025480679"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c756-0175-1000-62dd-0f6a3931bdaf","parent":{"ref":"EID6a37c6ca-0175-1000-b4be-907025480679"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c756-0175-1000-c0c9-f244262808e3","parent":{"ref":"EID6a37c6ca-0175-1000-b4be-907025480679"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c756-0175-1000-82f6-ec88129ab907","parent":{"ref":"EID6a37c6ca-0175-1000-b4be-907025480679"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID84b0bfcb-4d06-4780-a925-e9f8d674f040"},{"ref":"EID2b9e124e-7c8d-41e3-a687-3666a078bbeb"},{"ref":"EID770c3b2f-2971-4d91-89d5-190b423fc514"}]},"parent":{"ref":"EID6a37c63e-0175-1000-235f-05b8f1200654"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:20:41Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6a37bfa4-0175-1000-247e-a7c5dc9ad342"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:20:41Z","duration":288,"status":"PASSED"},{"id":"EID6a37c75e-0175-1000-3e9b-5c8b4a294449","testStepResults":{"TestStepResult":[{"id":"EID6a37c75e-0175-1000-e166-dcefd5c5e430","parent":{"ref":"EID6a37c75e-0175-1000-3e9b-5c8b4a294449"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:20:41Z","duration":0,"status":"PASSED"},{"id":"EID6a37c75e-0175-1000-ddec-8539ea97dc4e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37c846-0175-1000-7db1-b2da74299302","parent":{"ref":"EID6a37c75e-0175-1000-ddec-8539ea97dc4e"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"},{"id":"EID6a37c846-0175-1000-5f85-5619de4429e7","parent":{"ref":"EID6a37c75e-0175-1000-ddec-8539ea97dc4e"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"},{"id":"EID6a37c846-0175-1000-289b-a36a1a515fdb","parent":{"ref":"EID6a37c75e-0175-1000-ddec-8539ea97dc4e"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"},{"id":"EID6a37c846-0175-1000-bb02-90c27b119cc9","parent":{"ref":"EID6a37c75e-0175-1000-ddec-8539ea97dc4e"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID060872e1-4e6c-4b6f-8fcc-13f7376fc9ce"},{"ref":"EID02b7457f-8935-4879-8f32-6488c9296cc4"},{"ref":"EIDdc52d3e8-0514-4783-95ec-80b42942cd1b"}]},"parent":{"ref":"EID6a37c75e-0175-1000-3e9b-5c8b4a294449"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:20:41Z","duration":144,"status":"PASSED"},{"id":"EID6a37c846-0175-1000-275b-80471ed8a79e","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a37c857-0175-1000-6bc4-7c12ac62a01f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37c962-0175-1000-1657-7679bcb35f4e","parent":{"ref":"EID6a37c857-0175-1000-6bc4-7c12ac62a01f"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"},{"id":"EID6a37c962-0175-1000-4364-7e32662ab2db","parent":{"ref":"EID6a37c857-0175-1000-6bc4-7c12ac62a01f"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"},{"id":"EID6a37c962-0175-1000-a250-bf7cd02d3061","parent":{"ref":"EID6a37c857-0175-1000-6bc4-7c12ac62a01f"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6466f48c-927e-4759-bc8f-16b5ec87007d"},{"ref":"EIDa185d41e-60e8-4745-8078-dce8b224af0b"},{"ref":"EIDf47c1f1e-48db-4579-b236-4baeaf75dc2f"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:20:42Z","duration":156,"status":"PASSED"},{"id":"EID6a37c964-0175-1000-3781-17575878a773","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37ca3d-0175-1000-1757-94cc75ee9175","parent":{"ref":"EID6a37c964-0175-1000-3781-17575878a773"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"},{"id":"EID6a37ca3d-0175-1000-f1ed-eb82a6b614df","parent":{"ref":"EID6a37c964-0175-1000-3781-17575878a773"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"},{"id":"EID6a37ca3d-0175-1000-84de-d74799227f69","parent":{"ref":"EID6a37c964-0175-1000-3781-17575878a773"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5fc7eecd-8044-449e-b787-3acf3e211d07"},{"ref":"EIDd43d04be-b589-4dfd-bd90-00473e274777"},{"ref":"EID26f75855-9ca4-4a0e-8923-b74764abf202"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:20:42Z","duration":161,"status":"PASSED"},{"id":"EID6a37ca47-0175-1000-bbf3-cc1062346b09","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37caa5-0175-1000-948a-5d7d2aed2a8e","parent":{"ref":"EID6a37ca47-0175-1000-bbf3-cc1062346b09"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"},{"id":"EID6a37caa5-0175-1000-06a4-652fe13e83d1","parent":{"ref":"EID6a37ca47-0175-1000-bbf3-cc1062346b09"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"},{"id":"EID6a37caa5-0175-1000-9498-aadf036b75c1","parent":{"ref":"EID6a37ca47-0175-1000-bbf3-cc1062346b09"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID832126ea-8189-4c1b-b977-434e23a8bacf"},{"ref":"EIDd901638a-6ecd-43b3-b2ce-40544e9c45bb"},{"ref":"EID3cbe33fa-7792-4f17-9cf7-44ec8eebf58d"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:20:42Z","duration":42,"status":"PASSED"}]},"parent":{"ref":"EID6a37c75e-0175-1000-3e9b-5c8b4a294449"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:20:42Z","duration":607,"status":"PASSED"},{"id":"EID6a37caa6-0175-1000-b698-344db50bc10b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37cafb-0175-1000-bdcf-766d01c241fe","parent":{"ref":"EID6a37caa6-0175-1000-b698-344db50bc10b"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"},{"id":"EID6a37cafb-0175-1000-45a8-0a4d30137b08","parent":{"ref":"EID6a37caa6-0175-1000-b698-344db50bc10b"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"},{"id":"EID6a37cafb-0175-1000-473e-6642365cf9fc","parent":{"ref":"EID6a37caa6-0175-1000-b698-344db50bc10b"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"},{"id":"EID6a37cafb-0175-1000-54ff-8efefcc99d8a","parent":{"ref":"EID6a37caa6-0175-1000-b698-344db50bc10b"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID21668df7-4784-4ad5-aad9-a24ccc002ec2"},{"ref":"EIDc30bbdc0-b8d0-4c8a-87ab-ea0c8773929e"},{"ref":"EID770f0a5b-913f-43ea-8a5c-03b12a53d7c3"}]},"parent":{"ref":"EID6a37c75e-0175-1000-3e9b-5c8b4a294449"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:20:42Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6a37bfa4-0175-1000-247e-a7c5dc9ad342"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:20:41Z","duration":925,"status":"PASSED"},{"id":"EID6a37cafb-0175-1000-0a4e-28e766d88aae","testStepResults":{"TestStepResult":{"id":"EID6a37cafb-0175-1000-690f-a8bebc0a3e24","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37cb53-0175-1000-a688-56d0c8a72441","parent":{"ref":"EID6a37cafb-0175-1000-690f-a8bebc0a3e24"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"},{"id":"EID6a37cb53-0175-1000-40a3-e2bdbb9e6bde","parent":{"ref":"EID6a37cafb-0175-1000-690f-a8bebc0a3e24"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"},{"id":"EID6a37cb53-0175-1000-8d4c-6396a003bd40","parent":{"ref":"EID6a37cafb-0175-1000-690f-a8bebc0a3e24"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"},{"id":"EID6a37cb53-0175-1000-64c6-1ef171002c17","parent":{"ref":"EID6a37cafb-0175-1000-690f-a8bebc0a3e24"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0e9037e7-876f-4b87-a340-f8bfac850c6d"},{"ref":"EID9e914dae-1666-402c-bc5b-ab39b2d24e73"},{"ref":"EID64a1580e-9d50-47ee-aa75-bd6ca2c735b5"}]},"parent":{"ref":"EID6a37cafb-0175-1000-0a4e-28e766d88aae"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:20:42Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6a37bfa4-0175-1000-247e-a7c5dc9ad342"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:20:42Z","duration":88,"status":"PASSED"}]},"parent":{"ref":"EID14a5c15e-9e89-45a6-b235-7382ba68f8e8"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:20:39Z","duration":2991,"status":"PASSED"},{"id":"EID6a37cb54-0175-1000-36a7-230c67b5b415","testCaseResults":{"TestCaseResult":[{"id":"EID6a37cb54-0175-1000-37d6-f34bce66e1a7","testStepResults":{"TestStepResult":[{"id":"EID6a37cb5c-0175-1000-c975-0b902cae84d0","parent":{"ref":"EID6a37cb54-0175-1000-37d6-f34bce66e1a7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:20:42Z","duration":269,"status":"PASSED"},{"id":"EID6a37cb5d-0175-1000-31b2-262ff9108243","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37cbbb-0175-1000-6eb5-c9a283a69727","parent":{"ref":"EID6a37cb5d-0175-1000-31b2-262ff9108243"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"},{"id":"EID6a37cbbb-0175-1000-b839-fe21381e3e25","parent":{"ref":"EID6a37cb5d-0175-1000-31b2-262ff9108243"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"},{"id":"EID6a37cbbb-0175-1000-074c-f8ba4daa68bd","parent":{"ref":"EID6a37cb5d-0175-1000-31b2-262ff9108243"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-27T13:20:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdb9a4175-9374-48f6-bc45-d6c6238b9d0d"},{"ref":"EID6a5d9129-88dd-45ec-a9af-fc5bf199677a"},{"ref":"EID32bd75a6-d33f-4d66-aa75-554ca03fca40"}]},"parent":{"ref":"EID6a37cb54-0175-1000-37d6-f34bce66e1a7"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-27T13:20:42Z","duration":22,"status":"PASSED"},{"id":"EID6a37cbbb-0175-1000-921b-58babfa17dec","attachments":{"attachment":{"ref":"EIDfb977837-ff51-46b2-9518-7563e768383f"}},"parent":{"ref":"EID6a37cb54-0175-1000-37d6-f34bce66e1a7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-27T13:20:42Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6a37cb54-0175-1000-36a7-230c67b5b415"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:20:42Z","duration":115,"status":"PASSED"},{"id":"EID6a37cbc7-0175-1000-12d5-155607d997a6","testStepResults":{"TestStepResult":[{"id":"EID6a37cbc7-0175-1000-a847-bce59de05ac0","parent":{"ref":"EID6a37cbc7-0175-1000-12d5-155607d997a6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:20:42Z","duration":268,"status":"PASSED"},{"id":"EID6a37cbc7-0175-1000-32e6-fc5126ad912a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37cc88-0175-1000-78c1-dc4847a6f4b9","parent":{"ref":"EID6a37cbc7-0175-1000-32e6-fc5126ad912a"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-27T13:20:43Z","duration":0,"status":"PASSED"},{"id":"EID6a37cc88-0175-1000-5989-8b798635e8c9","parent":{"ref":"EID6a37cbc7-0175-1000-32e6-fc5126ad912a"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-27T13:20:43Z","duration":0,"status":"PASSED"},{"id":"EID6a37cc88-0175-1000-c62c-37fb6ded4b81","parent":{"ref":"EID6a37cbc7-0175-1000-32e6-fc5126ad912a"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-27T13:20:43Z","duration":0,"status":"PASSED"},{"id":"EID6a37cc88-0175-1000-b0a2-376413149b7f","parent":{"ref":"EID6a37cbc7-0175-1000-32e6-fc5126ad912a"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-27T13:20:43Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID83e760b9-8450-482f-9eb4-2dc11a31411a"},{"ref":"EID6f709ff3-c66a-4600-b78d-4899d32f6bb9"},{"ref":"EID55c3990f-a6f0-47c1-9a4b-d74b15554509"}]},"parent":{"ref":"EID6a37cbc7-0175-1000-12d5-155607d997a6"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-27T13:20:42Z","duration":124,"status":"PASSED"}]},"parent":{"ref":"EID6a37cb54-0175-1000-36a7-230c67b5b415"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:20:42Z","duration":193,"status":"PASSED"},{"id":"EID6a37cc88-0175-1000-2a50-dc7f316f7d37","testStepResults":{"TestStepResult":[{"id":"EID6a37cc90-0175-1000-0c78-aa7acbe4c349","parent":{"ref":"EID6a37cc88-0175-1000-2a50-dc7f316f7d37"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:20:43Z","duration":268,"status":"PASSED"},{"id":"EID6a37cc90-0175-1000-e9d4-68f1da508f96","parent":{"ref":"EID6a37cc88-0175-1000-2a50-dc7f316f7d37"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-27T13:20:43Z","duration":0,"status":"PASSED"},{"id":"EID6a37cc90-0175-1000-01ec-c1572c5a7ee7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37cd52-0175-1000-dbb5-d57dc0be2756","parent":{"ref":"EID6a37cc90-0175-1000-01ec-c1572c5a7ee7"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-27T13:20:43Z","duration":0,"status":"PASSED"},{"id":"EID6a37cd52-0175-1000-d31f-7854131311e2","parent":{"ref":"EID6a37cc90-0175-1000-01ec-c1572c5a7ee7"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-27T13:20:43Z","duration":0,"status":"PASSED"},{"id":"EID6a37cd52-0175-1000-3b5f-ad11820dd1d2","parent":{"ref":"EID6a37cc90-0175-1000-01ec-c1572c5a7ee7"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-27T13:20:43Z","duration":0,"status":"PASSED"},{"id":"EID6a37cd52-0175-1000-7844-9e609cf880d0","parent":{"ref":"EID6a37cc90-0175-1000-01ec-c1572c5a7ee7"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-27T13:20:43Z","duration":0,"status":"PASSED"},{"id":"EID6a37cd52-0175-1000-9726-ae534a32c4ea","parent":{"ref":"EID6a37cc90-0175-1000-01ec-c1572c5a7ee7"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-27T13:20:43Z","duration":0,"status":"PASSED"},{"id":"EID6a37cd52-0175-1000-4f5c-6118258c2dd6","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}}},"parent":{"ref":"EID6a37cc90-0175-1000-01ec-c1572c5a7ee7"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-27T13:20:43Z","duration":0,"status":"FAILED"},{"id":"EID6a37cd52-0175-1000-ba5d-07d55df5392a","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6a37cc90-0175-1000-01ec-c1572c5a7ee7"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-27T13:20:43Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDd7748d3a-14c8-4143-80b9-f94d85be9fe6"},{"ref":"EIDbb0ad375-e847-4fcb-8da3-4edc9c55147c"},{"ref":"EID1e1fc200-1bc1-410c-b6d2-933885258fc3"}]},"parent":{"ref":"EID6a37cc88-0175-1000-2a50-dc7f316f7d37"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-27T13:20:43Z","duration":79,"status":"FAILED"}]},"parent":{"ref":"EID6a37cb54-0175-1000-36a7-230c67b5b415"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:20:43Z","duration":203,"status":"FAILED"},{"id":"EID6a37cd53-0175-1000-01f1-060f3ea0396d","testStepResults":{"TestStepResult":[{"id":"EID6a37cd5c-0175-1000-e0e0-a3850d42c22b","parent":{"ref":"EID6a37cd53-0175-1000-01f1-060f3ea0396d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:20:43Z","duration":268,"status":"PASSED"},{"id":"EID6a37cd5c-0175-1000-14e6-656cac3fab69","parent":{"ref":"EID6a37cd53-0175-1000-01f1-060f3ea0396d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-27T13:20:43Z","duration":0,"status":"PASSED"},{"id":"EID6a37cd5c-0175-1000-d57e-356a48814939","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37ce19-0175-1000-512d-f9bf2f01a837","parent":{"ref":"EID6a37cd5c-0175-1000-d57e-356a48814939"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-27T13:20:43Z","duration":0,"status":"PASSED"},{"id":"EID6a37ce19-0175-1000-ebea-018ba6448e35","parent":{"ref":"EID6a37cd5c-0175-1000-d57e-356a48814939"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-27T13:20:43Z","duration":0,"status":"PASSED"},{"id":"EID6a37ce19-0175-1000-ce0b-990b98043666","parent":{"ref":"EID6a37cd5c-0175-1000-d57e-356a48814939"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-27T13:20:43Z","duration":0,"status":"PASSED"},{"id":"EID6a37ce19-0175-1000-5daa-8d33426052bd","parent":{"ref":"EID6a37cd5c-0175-1000-d57e-356a48814939"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-27T13:20:43Z","duration":0,"status":"PASSED"},{"id":"EID6a37ce19-0175-1000-3bc4-2b267a8f5868","parent":{"ref":"EID6a37cd5c-0175-1000-d57e-356a48814939"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-27T13:20:43Z","duration":0,"status":"PASSED"},{"id":"EID6a37ce19-0175-1000-2e60-af54724f9389","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6a37cd5c-0175-1000-d57e-356a48814939"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-27T13:20:43Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDe3b48d43-3786-4495-9e40-6f8c85f95781"},{"ref":"EID353107fa-beed-4901-97d8-57e97e282e19"},{"ref":"EID86d07a4b-d2bf-4991-87e4-38c1a765a256"}]},"parent":{"ref":"EID6a37cd53-0175-1000-01f1-060f3ea0396d"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-27T13:20:43Z","duration":81,"status":"FAILED"}]},"parent":{"ref":"EID6a37cb54-0175-1000-36a7-230c67b5b415"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:20:43Z","duration":198,"status":"FAILED"},{"id":"EID6a37ce19-0175-1000-1150-f14308297e98","testStepResults":{"TestStepResult":[{"id":"EID6a37ce19-0175-1000-d29b-b448678b7417","parent":{"ref":"EID6a37ce19-0175-1000-1150-f14308297e98"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:20:43Z","duration":268,"status":"PASSED"},{"id":"EID6a37ce1a-0175-1000-3647-32cab8f2957f","messages":{"message":[{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}},{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}]},"attachments":{"attachment":[{"ref":"EID16ba6532-0bde-4cd3-bcec-a09c276bf278"},{"ref":"EIDde9bd5c3-dec8-4ccf-b0cd-1c7a8d0d5ed5"},{"ref":"EIDa3ca259e-d3ad-4996-a905-a560fe7e14e7"},{"ref":"EID21ad7345-9506-4f96-888e-6f2e8b04cbe6"},{"ref":"EIDfa810193-082c-4693-8914-60bac5a994cf"},{"ref":"EIDb2c55cc8-0110-42dd-ac91-60a137367b6f"},{"ref":"EID90effb0a-f7c1-4230-821f-d5df5ed80f2e"},{"ref":"EIDb69f7300-f6e1-458c-8599-83165cb6ab3f"},{"ref":"EID6ee44d32-1234-4aa4-8534-a8367bfc0106"},{"ref":"EIDb296cd9b-a48e-4312-8495-d478645f779a"},{"ref":"EIDc65f86c5-8443-4337-abbb-be464abb9794"},{"ref":"EID646ff666-6d54-4541-9a92-8e0d573a20ca"},{"ref":"EID15288fa0-1ebe-4467-85fa-aea990f8490f"},{"ref":"EIDc47fab56-b75d-4e1b-baa5-a8f661e60042"},{"ref":"EID9a8336e3-9b2f-4958-b392-de9be26054fa"}]},"parent":{"ref":"EID6a37ce19-0175-1000-1150-f14308297e98"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-27T13:20:43Z","duration":528,"status":"SKIPPED"}]},"parent":{"ref":"EID6a37cb54-0175-1000-36a7-230c67b5b415"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:20:43Z","duration":813,"status":"SKIPPED"},{"id":"EID6a37d147-0175-1000-cc1f-88bef4f2c08a","testStepResults":{"TestStepResult":[{"id":"EID6a37d147-0175-1000-84cd-637253ab3452","parent":{"ref":"EID6a37d147-0175-1000-cc1f-88bef4f2c08a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:20:44Z","duration":268,"status":"PASSED"},{"id":"EID6a37d147-0175-1000-e26e-1ff3630d29cf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37d1eb-0175-1000-3b74-16897b21afbf","parent":{"ref":"EID6a37d147-0175-1000-e26e-1ff3630d29cf"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-27T13:20:44Z","duration":0,"status":"PASSED"},{"id":"EID6a37d1eb-0175-1000-9dc4-891f8e03a001","parent":{"ref":"EID6a37d147-0175-1000-e26e-1ff3630d29cf"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-27T13:20:44Z","duration":0,"status":"PASSED"},{"id":"EID6a37d1eb-0175-1000-ed5a-5390e21714e8","parent":{"ref":"EID6a37d147-0175-1000-e26e-1ff3630d29cf"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-27T13:20:44Z","duration":0,"status":"PASSED"},{"id":"EID6a37d1eb-0175-1000-f8cf-683211d96f0e","parent":{"ref":"EID6a37d147-0175-1000-e26e-1ff3630d29cf"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-27T13:20:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc167563a-e811-4e57-b222-04805af5ec44"},{"ref":"EIDf4577ae5-7b70-424b-9a74-d491e510f622"},{"ref":"EIDc4de378c-f6bb-473a-ad70-e3e8804df49d"}]},"parent":{"ref":"EID6a37d147-0175-1000-cc1f-88bef4f2c08a"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-27T13:20:44Z","duration":82,"status":"PASSED"}]},"parent":{"ref":"EID6a37cb54-0175-1000-36a7-230c67b5b415"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:20:44Z","duration":173,"status":"PASSED"},{"id":"EID6a37d1f4-0175-1000-456a-2010b74a50af","testStepResults":{"TestStepResult":[{"id":"EID6a37d1f4-0175-1000-9161-c5bf9408019a","parent":{"ref":"EID6a37d1f4-0175-1000-456a-2010b74a50af"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:20:44Z","duration":268,"status":"PASSED"},{"id":"EID6a37d1f4-0175-1000-b0f3-52a951780734","parent":{"ref":"EID6a37d1f4-0175-1000-456a-2010b74a50af"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-27T13:20:44Z","duration":0,"status":"PASSED"},{"id":"EID6a37d1f4-0175-1000-e5b4-6a38ef596e23","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37d298-0175-1000-bbb8-0365f301df9b","parent":{"ref":"EID6a37d1f4-0175-1000-e5b4-6a38ef596e23"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-27T13:20:44Z","duration":0,"status":"PASSED"},{"id":"EID6a37d298-0175-1000-c163-385c35fc3265","parent":{"ref":"EID6a37d1f4-0175-1000-e5b4-6a38ef596e23"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-27T13:20:44Z","duration":0,"status":"PASSED"},{"id":"EID6a37d298-0175-1000-24df-2d55fed84812","parent":{"ref":"EID6a37d1f4-0175-1000-e5b4-6a38ef596e23"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-27T13:20:44Z","duration":0,"status":"PASSED"},{"id":"EID6a37d298-0175-1000-f6c1-3aecd88cc0ff","parent":{"ref":"EID6a37d1f4-0175-1000-e5b4-6a38ef596e23"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-27T13:20:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID92ff807c-f541-4894-8c7f-5531cf2647ff"},{"ref":"EID0f152c30-ac00-4c7b-bc80-03452945df91"},{"ref":"EIDf8e12c22-e0f8-4d43-85df-0bb923c0bb15"}]},"parent":{"ref":"EID6a37d1f4-0175-1000-456a-2010b74a50af"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-27T13:20:44Z","duration":81,"status":"PASSED"},{"id":"EID6a37d298-0175-1000-de77-555ec86df611","attachments":{"attachment":{"ref":"EIDc5f38da8-e8fb-4ce5-a173-fbb4483bed0c"}},"parent":{"ref":"EID6a37d1f4-0175-1000-456a-2010b74a50af"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-27T13:20:44Z","duration":1,"status":"PASSED"},{"id":"EID6a37d2a5-0175-1000-e573-59a55d77c555","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a37d2b7-0175-1000-b97c-4a4c672ca6e3","parent":{"ref":"EID6a37d2a5-0175-1000-e573-59a55d77c555"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-27T13:20:44Z","duration":0,"status":"PASSED"},{"id":"EID6a37d2b7-0175-1000-59cc-e968ace241b8","parent":{"ref":"EID6a37d2a5-0175-1000-e573-59a55d77c555"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-27T13:20:44Z","duration":0,"status":"PASSED"},{"id":"EID6a37d2b7-0175-1000-43f0-52278756e466","parent":{"ref":"EID6a37d2a5-0175-1000-e573-59a55d77c555"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-27T13:20:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0903f443-a586-45c6-bd39-fd3cff1ed727"},{"ref":"EID86900da9-2266-4197-9dc4-f4972826723b"}]},"parent":{"ref":"EID6a37d1f4-0175-1000-456a-2010b74a50af"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-27T13:20:44Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a37cb54-0175-1000-36a7-230c67b5b415"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:20:44Z","duration":195,"status":"PASSED"}]},"parent":{"ref":"EID14a5c15e-9e89-45a6-b235-7382ba68f8e8"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:20:42Z","duration":1892,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"ServiceEndpoint","id":"EIDc6e77309-3e67-47ca-876e-3d2db5c864e0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceResponse","id":"EID07ee63fb-e98c-49d4-904d-89e638ec979a","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID07ee63fb-e98c-49d4-904d-89e638ec979a"}},{"type":"ServiceResponse","id":"EIDfd204631-663c-4f0f-971a-01f5a2cfd8fe","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDfd204631-663c-4f0f-971a-01f5a2cfd8fe"}},{"type":"ServiceEndpoint","id":"EIDbe810814-10b5-4ae3-92e4-7e7ce8e32590","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"GetParameter","id":"EIDc1dd0626-2bda-4694-80fd-759c4cf4d940","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"Message","id":"EID534dfae3-47b5-4449-85e7-031ac4e1c953","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID534dfae3-47b5-4449-85e7-031ac4e1c953"}},{"type":"ServiceResponse","id":"EID912a9dbe-97e1-4147-b926-61b6fd0dbbb4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID912a9dbe-97e1-4147-b926-61b6fd0dbbb4"}},{"type":"ServiceEndpoint","id":"EIDdb9a4175-9374-48f6-bc45-d6c6238b9d0d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID06f04138-b0b9-4591-b57b-eb6bbb40216c","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID06f04138-b0b9-4591-b57b-eb6bbb40216c"}},{"type":"GetParameter","id":"EIDfcb2fad4-04ba-4693-b257-1b597f6d37d5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDc0531f09-5a88-4459-9b24-2bb7ded74a6f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDc0531f09-5a88-4459-9b24-2bb7ded74a6f"}},{"type":"GetParameter","id":"EIDcfd36352-9997-49fb-9072-493a1503142d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceEndpoint","id":"EID26f9f8db-6fc1-42e8-90df-a209748ca10f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID3cbe33fa-7792-4f17-9cf7-44ec8eebf58d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EID89348524-ee94-4953-880d-92ab1ccffc24","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID60998899-f456-4cbe-b588-217f0b3f224f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceResponse","id":"EID6a5d9129-88dd-45ec-a9af-fc5bf199677a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID6a5d9129-88dd-45ec-a9af-fc5bf199677a"}},{"type":"ServiceEndpoint","id":"EIDe467486d-a8fe-41e8-b7d3-f3a6e70891f9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDdc52d3e8-0514-4783-95ec-80b42942cd1b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EID90effb0a-f7c1-4230-821f-d5df5ed80f2e","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID90effb0a-f7c1-4230-821f-d5df5ed80f2e"}},{"type":"ServiceEndpoint","id":"EID0903f443-a586-45c6-bd39-fd3cff1ed727","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceEndpoint","id":"EID7974c9b3-6a41-462c-8972-7c916b23bc00","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"Message","id":"EIDc47fab56-b75d-4e1b-baa5-a8f661e60042","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDc47fab56-b75d-4e1b-baa5-a8f661e60042"}},{"type":"ServiceEndpoint","id":"EID2a3f6060-d6d8-4120-915a-16ae5b96dc93","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2Rvd25sb2Fkcy9jYWRhc3RyYWxwYXJjZWxzLnppcA=="},{"type":"Message","id":"EIDa8ea381c-f287-4072-aec0-041b1353614e","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDa8ea381c-f287-4072-aec0-041b1353614e"}},{"type":"GetParameter","id":"EID770f0a5b-913f-43ea-8a5c-03b12a53d7c3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceEndpoint","id":"EID0e9037e7-876f-4b87-a340-f8bfac850c6d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceEndpoint","id":"EID1bf01a17-441a-4e7b-b248-aafa2618cd1e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDf4577ae5-7b70-424b-9a74-d491e510f622","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDf4577ae5-7b70-424b-9a74-d491e510f622"}},{"type":"ServiceResponse","id":"EID6f709ff3-c66a-4600-b78d-4899d32f6bb9","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID6f709ff3-c66a-4600-b78d-4899d32f6bb9"}},{"type":"ServiceEndpoint","id":"EID6ef3c134-cc09-4167-b43e-01169c30a5d1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L2Nzdw=="},{"type":"GetParameter","id":"EID64a1580e-9d50-47ee-aa75-bd6ca2c735b5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"Message","id":"EID1faf82aa-e281-4c94-82fe-c9948cf1f27d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID1faf82aa-e281-4c94-82fe-c9948cf1f27d"}},{"type":"GetParameter","id":"EID656fdfe7-acdc-42b1-bd97-fc120f137221","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID7ddfdf79-d312-4c85-933e-82e319f46268","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID7ddfdf79-d312-4c85-933e-82e319f46268"}},{"type":"Message","id":"EIDb296cd9b-a48e-4312-8495-d478645f779a","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDb296cd9b-a48e-4312-8495-d478645f779a"}},{"type":"ServiceEndpoint","id":"EID8081332e-fed6-4b67-a76e-9087a8590a83","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID353107fa-beed-4901-97d8-57e97e282e19","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID353107fa-beed-4901-97d8-57e97e282e19"}},{"type":"ServiceEndpoint","id":"EID87724543-c307-40bb-b418-7c7e04ce6d1d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDf93baab4-3c60-4f0e-adbf-3a6fcd6768e7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDf93baab4-3c60-4f0e-adbf-3a6fcd6768e7"}},{"type":"ServiceEndpoint","id":"EIDad1da0fc-0775-4bcf-ab1e-07ee6331d57a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceResponse","id":"EID1c2c35ca-edbf-4371-8db4-a0d8452fe69a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID1c2c35ca-edbf-4371-8db4-a0d8452fe69a"}},{"type":"Message","id":"EIDde9bd5c3-dec8-4ccf-b0cd-1c7a8d0d5ed5","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDde9bd5c3-dec8-4ccf-b0cd-1c7a8d0d5ed5"}},{"type":"ServiceEndpoint","id":"EID8c933188-27ff-4f50-95c0-43bcc5bb098b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDc8901030-bbc6-41bd-9394-13665a990788","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDc8901030-bbc6-41bd-9394-13665a990788"}},{"type":"ServiceResponse","id":"EIDbb0ad375-e847-4fcb-8da3-4edc9c55147c","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDbb0ad375-e847-4fcb-8da3-4edc9c55147c"}},{"type":"ServiceEndpoint","id":"EID530fd78e-c2f5-4b4c-87c6-0a615c284324","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID02b7457f-8935-4879-8f32-6488c9296cc4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID02b7457f-8935-4879-8f32-6488c9296cc4"}},{"type":"GetParameter","id":"EID4e585d21-9103-4815-bcfe-e21147ef8ceb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID86db125f-30ad-41a0-9dd4-af02eb9308b3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID86db125f-30ad-41a0-9dd4-af02eb9308b3"}},{"type":"ServiceResponse","id":"EID503014be-b146-42e8-b6a2-ecf60f443534","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID503014be-b146-42e8-b6a2-ecf60f443534"}},{"type":"ServiceResponse","id":"EIDd43d04be-b589-4dfd-bd90-00473e274777","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDd43d04be-b589-4dfd-bd90-00473e274777"}},{"type":"ServiceResponse","id":"EIDf4034f09-838a-4376-a8bb-df2cd289275c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDf4034f09-838a-4376-a8bb-df2cd289275c"}},{"type":"ServiceEndpoint","id":"EIDec95cc20-effa-4fca-96f8-0cca000fe4c3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID79ad5af0-d1a4-42d8-8c66-66038b4efa3b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID832126ea-8189-4c1b-b977-434e23a8bacf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EIDefd23a0f-e60d-4723-ab23-3519268f79de","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDefd23a0f-e60d-4723-ab23-3519268f79de"}},{"type":"ServiceEndpoint","id":"EID21668df7-4784-4ad5-aad9-a24ccc002ec2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"Message","id":"EIDc65f86c5-8443-4337-abbb-be464abb9794","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDc65f86c5-8443-4337-abbb-be464abb9794"}},{"type":"Message","id":"EID3bfffbb2-8a77-49c7-aca7-56652cb8e5b8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID3bfffbb2-8a77-49c7-aca7-56652cb8e5b8"}},{"type":"Message","id":"EID4f85195b-e67d-4961-8420-ff04ceabcad3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID4f85195b-e67d-4961-8420-ff04ceabcad3"}},{"type":"ServiceEndpoint","id":"EID19487c52-9c3f-46e5-bb4c-fa7264e6cbef","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID66688163-83b2-4c52-a03b-f95c2b040720","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID3ab846a9-098d-46a9-8888-88f44c95d4e2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID90b71b53-4e18-4441-b297-1ebd3457ad06","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"GetParameter","id":"EIDa11e64a7-1dad-4c11-ab8c-176602c2bc97","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDdcb4c4cb-9412-4cff-9f2a-26d62d2aefe1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2Rvd25sb2Fkcy9jYWRhc3RyYWxwYXJjZWxzLnppcA=="},{"type":"ServiceResponse","id":"EID2e58d86e-aa37-4958-908a-8bdb94c09b65","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID2e58d86e-aa37-4958-908a-8bdb94c09b65"}},{"type":"ServiceResponse","id":"EID4fb7c958-ad18-4f42-b018-473ba5fe3a66","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID4fb7c958-ad18-4f42-b018-473ba5fe3a66"}},{"type":"Message","id":"EID7c7ad1de-b70a-44f8-94ba-f05c082bf3f3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID7c7ad1de-b70a-44f8-94ba-f05c082bf3f3"}},{"type":"Message","id":"EID415e6480-f71e-4834-aa50-a54340309a46","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID415e6480-f71e-4834-aa50-a54340309a46"}},{"type":"Message","id":"EID5cc6b13b-0616-4533-97d4-f221cfbf0d45","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID5cc6b13b-0616-4533-97d4-f221cfbf0d45"}},{"type":"ServiceEndpoint","id":"EIDa25f34cc-e746-4b97-82b1-81d0bc9a85f3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID1f804a9b-06c6-4e53-b0ef-03fbbbd580d9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID0cf9e8d5-15df-480c-88e7-7742c28bd5ff","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID3cd4bc48-de63-4642-8b96-1a5b2448bba1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID3cd4bc48-de63-4642-8b96-1a5b2448bba1"}},{"type":"GetParameter","id":"EID4b0c2d4c-26d8-404a-ba29-02f1d77f07b7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID6646c19c-5eed-47c3-80ab-8938365bef48","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDeefbef25-410b-4391-a70f-a05e0a73cdc8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDeefbef25-410b-4391-a70f-a05e0a73cdc8"}},{"type":"GetParameter","id":"EID0ce7630a-1099-406b-9d57-03a5b59e83d8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"Message","id":"EID3bc9faca-b44d-4cd9-b6d8-8455a58cf521","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID3bc9faca-b44d-4cd9-b6d8-8455a58cf521"}},{"type":"GetParameter","id":"EIDe376c001-7bf7-4ba7-90b8-80c53ec83c3a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID5e102a81-bb51-4486-8aef-66c5fdd95edd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID5e102a81-bb51-4486-8aef-66c5fdd95edd"}},{"type":"GetParameter","id":"EID75eb9bd1-ba5a-4a47-be6e-95bc9f56aeff","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"Message","id":"EIDb69f7300-f6e1-458c-8599-83165cb6ab3f","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDb69f7300-f6e1-458c-8599-83165cb6ab3f"}},{"type":"GetParameter","id":"EID0fab033e-4c57-4f43-8765-9288326aae5b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID2c2405a8-67fb-4b13-b547-b40e3c84d741","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EIDc4669a6a-a127-4b41-ad4f-75d92fa827ff","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID73176db8-b412-42a3-b2e2-ab4c9ceeba40","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceResponse","id":"EID4f87cbe7-1109-4abf-beaf-e04e109bd84e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID4f87cbe7-1109-4abf-beaf-e04e109bd84e"}},{"type":"GetParameter","id":"EIDe8384119-3367-4435-9a74-c756bb650d88","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EID8d07217a-b309-42a0-a32d-4a65d2059c64","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID50a9143f-0480-445b-b739-c5652286e354","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDdd7fd853-a22b-4b28-98f8-d1d7d0c7aac7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDdd7fd853-a22b-4b28-98f8-d1d7d0c7aac7"}},{"type":"Message","id":"EID9d93da39-07a5-4465-8a35-8f99496a8b0a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID9d93da39-07a5-4465-8a35-8f99496a8b0a"}},{"type":"ServiceResponse","id":"EID6cbbe415-d5f8-4c63-ad11-35528e38a421","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID6cbbe415-d5f8-4c63-ad11-35528e38a421"}},{"type":"ServiceEndpoint","id":"EID28df1a25-731d-4640-8003-beef18abab9b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"Message","id":"EIDfa810193-082c-4693-8914-60bac5a994cf","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDfa810193-082c-4693-8914-60bac5a994cf"}},{"type":"ServiceResponse","id":"EID0ac7f09d-bda7-434b-bbfc-c38eaa70312d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID0ac7f09d-bda7-434b-bbfc-c38eaa70312d"}},{"type":"ServiceResponse","id":"EIDa2d8b223-0e52-4ce7-b3fc-81513a50aa52","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDa2d8b223-0e52-4ce7-b3fc-81513a50aa52"}},{"type":"ServiceResponse","id":"EIDa185d41e-60e8-4745-8078-dce8b224af0b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDa185d41e-60e8-4745-8078-dce8b224af0b"}},{"type":"ServiceResponse","id":"EID8008bbf2-5c59-49df-b215-f17c474f2a9f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID8008bbf2-5c59-49df-b215-f17c474f2a9f"}},{"type":"Message","id":"EID14ad0c73-298a-4fc3-841d-02b874217690","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID14ad0c73-298a-4fc3-841d-02b874217690"}},{"type":"ServiceEndpoint","id":"EIDcc1f2020-6b1e-4ea8-a080-c61f0a652cd3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"GetParameter","id":"EID55c3990f-a6f0-47c1-9a4b-d74b15554509","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDe078dc4f-8a16-4a88-8e8d-1b78365b8a90","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDe078dc4f-8a16-4a88-8e8d-1b78365b8a90"}},{"type":"Message","id":"EIDfe6dfe72-ed85-467d-85e6-cf1d27562867","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDfe6dfe72-ed85-467d-85e6-cf1d27562867"}},{"type":"ServiceEndpoint","id":"EIDe3b48d43-3786-4495-9e40-6f8c85f95781","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID5cdd441b-ffc8-4aae-9970-10d515862560","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID5cdd441b-ffc8-4aae-9970-10d515862560"}},{"type":"Message","id":"EID21ad7345-9506-4f96-888e-6f2e8b04cbe6","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID21ad7345-9506-4f96-888e-6f2e8b04cbe6"}},{"type":"ServiceEndpoint","id":"EID5ec94368-f2c1-4ee4-963d-c2f162a622ed","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"GetParameter","id":"EIDa31c3501-b746-4017-9b16-9b893d18ba17","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L2Nzdw=="},{"type":"Message","id":"EIDb2c55cc8-0110-42dd-ac91-60a137367b6f","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDb2c55cc8-0110-42dd-ac91-60a137367b6f"}},{"type":"GetParameter","id":"EID10efa97c-0bae-4916-87e0-277ec25a6f0a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID38dbbb93-ace7-4d5b-ad0b-ab3e225098d1","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID38dbbb93-ace7-4d5b-ad0b-ab3e225098d1"}},{"type":"Message","id":"EID666cabc0-7c74-4e5a-a7d1-eef27f29287f","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID666cabc0-7c74-4e5a-a7d1-eef27f29287f"}},{"type":"ServiceEndpoint","id":"EID84fa1d26-913d-4492-8fae-5cc7fe15ac08","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDd901638a-6ecd-43b3-b2ce-40544e9c45bb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDd901638a-6ecd-43b3-b2ce-40544e9c45bb"}},{"type":"ServiceResponse","id":"EID07f8f1e4-f2ce-4387-94f2-0a04b2f905c7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID07f8f1e4-f2ce-4387-94f2-0a04b2f905c7"}},{"type":"ServiceEndpoint","id":"EID98d25b2f-af2d-4772-95d6-cd3d5fd98149","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID85c0aece-0a1f-4acf-b6a7-6196d9a85f8d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceEndpoint","id":"EID6466f48c-927e-4759-bc8f-16b5ec87007d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EIDf8e12c22-e0f8-4d43-85df-0bb923c0bb15","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID0f9dd1bc-7271-4abd-a557-279da3dcefc9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID32bd75a6-d33f-4d66-aa75-554ca03fca40","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDa3f1f21b-6151-4548-9a02-bf59701b2e20","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDa3f1f21b-6151-4548-9a02-bf59701b2e20"}},{"type":"Message","id":"EID4977bab7-65a3-426e-8cf3-6d66d639abc5","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID4977bab7-65a3-426e-8cf3-6d66d639abc5"}},{"type":"ServiceResponse","id":"EID3ef86c86-757f-45c4-99ce-8709c231f846","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID3ef86c86-757f-45c4-99ce-8709c231f846"}},{"type":"ServiceEndpoint","id":"EID060872e1-4e6c-4b6f-8fcc-13f7376fc9ce","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EIDe2f55b6e-a9e2-48da-bc21-b99255570788","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDe2f55b6e-a9e2-48da-bc21-b99255570788"}},{"type":"ServiceEndpoint","id":"EID75923fd0-66c2-46d4-a938-57195fbcf938","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceResponse","id":"EID69e1fc24-afc0-4216-bc87-558740d3d322","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID69e1fc24-afc0-4216-bc87-558740d3d322"}},{"type":"GetParameter","id":"EIDf47c1f1e-48db-4579-b236-4baeaf75dc2f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EIDa127cc17-8342-4174-b0dc-ced56593f15a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDa127cc17-8342-4174-b0dc-ced56593f15a"}},{"type":"Message","id":"EIDc40da614-ed50-4495-b422-1b53d12b2445","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDc40da614-ed50-4495-b422-1b53d12b2445"}},{"type":"GetParameter","id":"EID721ab4e8-8003-4635-86b2-ce46c5a17f96","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDfb977837-ff51-46b2-9518-7563e768383f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDfb977837-ff51-46b2-9518-7563e768383f"}},{"type":"GetParameter","id":"EID86900da9-2266-4197-9dc4-f4972826723b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceResponse","id":"EIDe0b08494-ff34-430b-9dba-e9c0cd2e887b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDe0b08494-ff34-430b-9dba-e9c0cd2e887b"}},{"type":"Message","id":"EIDe2dfb77b-85e8-4a35-860b-f42af7323fda","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDe2dfb77b-85e8-4a35-860b-f42af7323fda"}},{"type":"ServiceEndpoint","id":"EIDd3f847b0-fa3a-4a46-929d-fc8182b1a880","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceEndpoint","id":"EID1ba2899c-b5bf-483f-a9c1-a766139a40db","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"Message","id":"EID6be89f94-0ebc-44e3-a371-872e1d0a5978","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID6be89f94-0ebc-44e3-a371-872e1d0a5978"}},{"type":"ServiceResponse","id":"EIDc30bbdc0-b8d0-4c8a-87ab-ea0c8773929e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDc30bbdc0-b8d0-4c8a-87ab-ea0c8773929e"}},{"type":"Message","id":"EIDc2667243-8ff2-465e-b892-1fd21f9ea8bb","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDc2667243-8ff2-465e-b892-1fd21f9ea8bb"}},{"type":"GetParameter","id":"EIDc4de378c-f6bb-473a-ad70-e3e8804df49d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID6d2289e6-65bf-4bcd-8f09-268db3ce646c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceEndpoint","id":"EIDd720f2cc-87aa-415e-8fe3-ddc0b2561fa1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID0da6342d-cbe8-47e4-a53b-92d09a11f7d0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"Message","id":"EID15288fa0-1ebe-4467-85fa-aea990f8490f","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID15288fa0-1ebe-4467-85fa-aea990f8490f"}},{"type":"Message","id":"EIDa3ca259e-d3ad-4996-a905-a560fe7e14e7","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDa3ca259e-d3ad-4996-a905-a560fe7e14e7"}},{"type":"GetParameter","id":"EID78efe342-8c98-4300-ae55-5832d48eed00","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID404ed7f0-16e1-4438-8289-c224b61ce2ef","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID404ed7f0-16e1-4438-8289-c224b61ce2ef"}},{"type":"Message","id":"EIDc5f38da8-e8fb-4ce5-a173-fbb4483bed0c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDc5f38da8-e8fb-4ce5-a173-fbb4483bed0c"}},{"type":"ServiceEndpoint","id":"EID3f417696-e058-4937-ae1a-50b81595a837","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID61671d21-c0c6-4f19-b390-ac6cc2db4d44","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID61671d21-c0c6-4f19-b390-ac6cc2db4d44"}},{"type":"ServiceResponse","id":"EIDb76c9b6d-08f7-43cb-98d6-87faeb72eb8c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDb76c9b6d-08f7-43cb-98d6-87faeb72eb8c"}},{"type":"LogFile","id":"EID42f161c8-ab39-4fc3-be3a-4615ff003a3a","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID42f161c8-ab39-4fc3-be3a-4615ff003a3a"}},{"type":"GetParameter","id":"EID26f75855-9ca4-4a0e-8923-b74764abf202","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EIDb90c5558-d6b0-4952-ae09-3b0a9ebf77cd","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDb90c5558-d6b0-4952-ae09-3b0a9ebf77cd"}},{"type":"ServiceEndpoint","id":"EID7a59a749-36d4-47c2-a12e-9e8dccf91121","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDd460c17d-fafe-496e-b3c7-4f7bf9e6208b","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDd460c17d-fafe-496e-b3c7-4f7bf9e6208b"}},{"type":"ServiceEndpoint","id":"EIDea9a5fb1-1cec-4f3f-a42f-b97800cd7cc4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EID329bb2f2-f897-475a-a524-c4b3f6d91791","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID329bb2f2-f897-475a-a524-c4b3f6d91791"}},{"type":"ServiceEndpoint","id":"EIDc167563a-e811-4e57-b222-04805af5ec44","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID16ba6532-0bde-4cd3-bcec-a09c276bf278","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID16ba6532-0bde-4cd3-bcec-a09c276bf278"}},{"type":"ServiceResponse","id":"EID759915ae-245f-4bb2-bad8-240afc4ee120","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID759915ae-245f-4bb2-bad8-240afc4ee120"}},{"type":"GetParameter","id":"EID86d07a4b-d2bf-4991-87e4-38c1a765a256","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID81dcf646-5e9f-4ca4-a94b-58091f7979aa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID1e1fc200-1bc1-410c-b6d2-933885258fc3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDb9ebe2c2-4b44-4dae-97ce-35a99342cc81","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceEndpoint","id":"EID8d6f59b4-5087-4892-8744-eeb8400c4593","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID8d5e899d-845e-445c-ad5f-2d64b5300c9b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceResponse","id":"EID2b9e124e-7c8d-41e3-a687-3666a078bbeb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID2b9e124e-7c8d-41e3-a687-3666a078bbeb"}},{"type":"GetParameter","id":"EID860192ca-55ad-44f6-99e3-4c8c8753e2c3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID8179fbc2-689b-4896-9c79-c2eede45dbee","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID8179fbc2-689b-4896-9c79-c2eede45dbee"}},{"type":"Message","id":"EID6f535b5b-8624-466a-9a3b-9d287a8d39d1","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID6f535b5b-8624-466a-9a3b-9d287a8d39d1"}},{"type":"ServiceResponse","id":"EID0f152c30-ac00-4c7b-bc80-03452945df91","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID0f152c30-ac00-4c7b-bc80-03452945df91"}},{"type":"Message","id":"EIDe1098d56-7ee6-48ab-8d30-8c2d66f0f993","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDe1098d56-7ee6-48ab-8d30-8c2d66f0f993"}},{"type":"Message","id":"EID9a8336e3-9b2f-4958-b392-de9be26054fa","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID9a8336e3-9b2f-4958-b392-de9be26054fa"}},{"type":"Message","id":"EID2ed84d00-69a1-4d6e-92be-b4a6154edf52","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID2ed84d00-69a1-4d6e-92be-b4a6154edf52"}},{"type":"ServiceEndpoint","id":"EID92ff807c-f541-4894-8c7f-5531cf2647ff","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID646ff666-6d54-4541-9a92-8e0d573a20ca","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID646ff666-6d54-4541-9a92-8e0d573a20ca"}},{"type":"GetParameter","id":"EIDeabd5c4e-7ab5-4147-902c-009b1f4cfb58","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EIDa4956501-b0e8-4fdd-8d55-429d7a0024d6","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDa4956501-b0e8-4fdd-8d55-429d7a0024d6"}},{"type":"ServiceResponse","id":"EID3008f7c0-400b-49b8-b3cd-dc174eabc359","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID3008f7c0-400b-49b8-b3cd-dc174eabc359"}},{"type":"ServiceEndpoint","id":"EID84b0bfcb-4d06-4780-a925-e9f8d674f040","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"Message","id":"EID58633cca-6602-4b95-9455-b6ec664ef54a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID58633cca-6602-4b95-9455-b6ec664ef54a"}},{"type":"GetParameter","id":"EID7db6b719-671d-41d4-aaa9-47bd5b7443b7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDd7748d3a-14c8-4143-80b9-f94d85be9fe6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID5fc7eecd-8044-449e-b787-3acf3e211d07","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EID23be437d-222f-40b4-a271-48635fa15df0","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID23be437d-222f-40b4-a271-48635fa15df0"}},{"type":"Message","id":"EIDaafad8f0-e759-4bdf-bd6d-e84d063351c1","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDaafad8f0-e759-4bdf-bd6d-e84d063351c1"}},{"type":"GetParameter","id":"EID770c3b2f-2971-4d91-89d5-190b423fc514","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceResponse","id":"EID4622e33e-1d11-4e81-870e-dfcfa09ad373","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID4622e33e-1d11-4e81-870e-dfcfa09ad373"}},{"type":"ServiceEndpoint","id":"EID83e760b9-8450-482f-9eb4-2dc11a31411a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lMjIyNjQ4ZC1kMTllLTRhOTktYTY3ZC0yYWYxYzlhYWJkNzUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID3e582aa1-0acd-4b50-8d96-edd8bd84810c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID3e582aa1-0acd-4b50-8d96-edd8bd84810c"}},{"type":"ServiceResponse","id":"EID93654a8b-115a-424b-a1ec-5aecd86aaa27","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID93654a8b-115a-424b-a1ec-5aecd86aaa27"}},{"type":"ServiceResponse","id":"EID9e914dae-1666-402c-bc5b-ab39b2d24e73","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID9e914dae-1666-402c-bc5b-ab39b2d24e73"}},{"type":"GetParameter","id":"EIDbd698682-02a2-4ad6-bb28-e41c4d569a2b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDf95f7215-8b67-4c56-a54a-71d46a8dab61","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"ServiceResponse","id":"EIDb870e923-0ca8-4d46-a656-9faa07767099","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EIDb870e923-0ca8-4d46-a656-9faa07767099"}},{"type":"Message","id":"EID0250b794-6acd-44e0-943d-3214ef3c8611","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID0250b794-6acd-44e0-943d-3214ef3c8611"}},{"type":"GetParameter","id":"EID363728b7-747e-4c51-bcb3-912a37d47fa9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"GetParameter","id":"EID0552524c-7b65-417e-983e-8633d73083d6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"Message","id":"EID45fc09dd-410a-4f3d-8c65-85981c0847a7","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID45fc09dd-410a-4f3d-8c65-85981c0847a7"}},{"type":"ServiceEndpoint","id":"EID4c64eb3e-4dc2-45a6-b9fe-96b156c27b02","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EIDcc0eb286-ee6d-4247-9273-1bf0936122ff","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwva2FkYXN0ZXIvY3AvYXRvbS92MV8wL2NwLnhtbA=="},{"type":"ServiceResponse","id":"EID5f9dfdce-cd10-46eb-8936-24077bb8d7ea","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID5f9dfdce-cd10-46eb-8936-24077bb8d7ea"}},{"type":"Message","id":"EID6ee44d32-1234-4aa4-8534-a8367bfc0106","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID14a5c15e-9e89-45a6-b235-7382ba68f8e8/Attachments/EID6ee44d32-1234-4aa4-8534-a8367bfc0106"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:20:34Z","duration":9884,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:20:53.493 [print] EID2493590e-8e49-4f77-a58a-2d4709480aa8
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:20:53.493 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:20:53.493 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:20:53.493 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:20:53.493 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/2493590e-8e49-4f77-a58a-2d4709480aa8.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:20:53.493 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/2493590e-8e49-4f77-a58a-2d4709480aa8.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:20:53.493 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID2493590e-8e49-4f77-a58a-2d4709480aa8/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.004
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
13:20:53.499 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
13:20:53.499 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* print sortedrefs 0.000
13:20:53.499 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
4.354
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:16:15.301 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/au/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 4.353
13:16:15.302 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 277
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/au/wfs?request=GetCapabilities"}}}

13:16:19.655 response time in milliseconds: 4247.74
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:16:19 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804579461","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:16:19.655 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1.378
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:15:58.730 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/rce/ps-ch/wfs/v1_0?request=GetCapabilities&service=wfs"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.377
13:15:58.732 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 277
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/rce/ps-ch/wfs/v1_0?request=GetCapabilities&service=wfs"}}}

13:16:00.108 response time in milliseconds: 1375.11
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:16:00 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804560033","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:16:00.108 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
30.348
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:11:50.687 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 30.347
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:38 - 
java.net.SocketTimeoutException: Read timed out
13:11:50.688 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

13:12:21.035 java.net.SocketTimeoutException: Read timed out, http call failed after 30347 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns
13:12:21.035 http request failed: 
java.net.SocketTimeoutException: Read timed out
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1:56.327
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:19:34.406 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 8.326
13:19:34.407 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}

13:19:42.731 response time in milliseconds: 7560.48
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:19:41 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:19:39 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/e7f34952-1c77-49df-a046-d6535b91dd7b.json","testRuns":{"TestRun":{"id":"EIDe7f34952-1c77-49df-a046-d6535b91dd7b","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:19:39.161Z","testTasks":{"TestTask":{"id":"EID4a763f4c-3049-4f4c-bc7c-3fe2f81071e4","parent":{"ref":"EIDe7f34952-1c77-49df-a046-d6535b91dd7b"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDe3c17862-110d-47ae-8686-16656dd4740d"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDe3c17862-110d-47ae-8686-16656dd4740d","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:19:35.012Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:19:38.695Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.008
13:19:42.742 [print] EIDe7f34952-1c77-49df-a046-d6535b91dd7b
* print response.EtfItemCollection.testRuns.TestRun.status 0.009
13:19:42.752 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:19:42.752 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:19:42.752 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/e7f34952-1c77-49df-a046-d6535b91dd7b.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:19:42.752 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:19:42.753 [print] statuspath TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b
* print 'progresspath ', progresspath 0.000
13:19:42.753 [print] progresspath  TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
Given path progresspath 0.000
When method GET 0.510
13:19:42.753 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:43.263 response time in milliseconds: 509.28
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:19:43 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"7","max":"8","log":["27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)","27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:39 - Preparing 1 Test Task:","27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)","27.10.2020 13:19:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:39 -  with parameters: ","27.10.2020 13:19:39 - etf.testcases = *","27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:39 - Setting state to CREATED","27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z","27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:41 - Project Properties: ","27.10.2020 13:19:41 - etf.testcases - * ","27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:41 - username -  ","27.10.2020 13:19:41 - authUser -  ","27.10.2020 13:19:41 - authMethod - basic ","27.10.2020 13:19:41 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:19:43.263 [print] {
  "val": "7",
  "max": "8",
  "log": [
    "27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)",
    "27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:19:39 - Preparing 1 Test Task:",
    "27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)",
    "27.10.2020 13:19:39 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:19:39 -  with parameters: ",
    "27.10.2020 13:19:39 - etf.testcases = *",
    "27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:19:39 - Setting state to CREATED",
    "27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z",
    "27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:19:41 - Project Properties: ",
    "27.10.2020 13:19:41 - etf.testcases - * ",
    "27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ",
    "27.10.2020 13:19:41 - username -  ",
    "27.10.2020 13:19:41 - authUser -  ",
    "27.10.2020 13:19:41 - authMethod - basic ",
    "27.10.2020 13:19:41 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 1:47.470
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:62 - too many retry attempts: 20
13:19:43.264 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:43.774 response time in milliseconds: 509.81
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:19:43 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)","27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:39 - Preparing 1 Test Task:","27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)","27.10.2020 13:19:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:39 -  with parameters: ","27.10.2020 13:19:39 - etf.testcases = *","27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:39 - Setting state to CREATED","27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z","27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:41 - Project Properties: ","27.10.2020 13:19:41 - etf.testcases - * ","27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:41 - username -  ","27.10.2020 13:19:41 - authUser -  ","27.10.2020 13:19:41 - authMethod - basic ","27.10.2020 13:19:41 - TestRunTask initialized"]}

13:19:43.775 retry condition not satisfied: response.val == response.max
13:19:43.775 sleeping before retry #1
13:19:48.775 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:49.295 response time in milliseconds: 514.98
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:19:49 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"38","max":"39","log":["27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)","27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:39 - Preparing 1 Test Task:","27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)","27.10.2020 13:19:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:39 -  with parameters: ","27.10.2020 13:19:39 - etf.testcases = *","27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:39 - Setting state to CREATED","27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z","27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:41 - Project Properties: ","27.10.2020 13:19:41 - etf.testcases - * ","27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:41 - username -  ","27.10.2020 13:19:41 - authUser -  ","27.10.2020 13:19:41 - authMethod - basic ","27.10.2020 13:19:41 - TestRunTask initialized"]}

13:19:49.295 retry condition not satisfied: response.val == response.max
13:19:49.295 sleeping before retry #2
13:19:54.296 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:54.809 response time in milliseconds: 508.56
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:19:54 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"53","max":"54","log":["27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)","27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:39 - Preparing 1 Test Task:","27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)","27.10.2020 13:19:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:39 -  with parameters: ","27.10.2020 13:19:39 - etf.testcases = *","27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:39 - Setting state to CREATED","27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z","27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:41 - Project Properties: ","27.10.2020 13:19:41 - etf.testcases - * ","27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:41 - username -  ","27.10.2020 13:19:41 - authUser -  ","27.10.2020 13:19:41 - authMethod - basic ","27.10.2020 13:19:41 - TestRunTask initialized"]}

13:19:54.809 retry condition not satisfied: response.val == response.max
13:19:54.809 sleeping before retry #3
13:19:59.810 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:01.444 response time in milliseconds: 1527.37
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:20:01 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"78","max":"79","log":["27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)","27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:39 - Preparing 1 Test Task:","27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)","27.10.2020 13:19:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:39 -  with parameters: ","27.10.2020 13:19:39 - etf.testcases = *","27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:39 - Setting state to CREATED","27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z","27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:41 - Project Properties: ","27.10.2020 13:19:41 - etf.testcases - * ","27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:41 - username -  ","27.10.2020 13:19:41 - authUser -  ","27.10.2020 13:19:41 - authMethod - basic ","27.10.2020 13:19:41 - TestRunTask initialized","27.10.2020 13:19:56 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}

13:20:01.444 retry condition not satisfied: response.val == response.max
13:20:01.444 sleeping before retry #4
13:20:06.445 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:07.853 response time in milliseconds: 1406.89
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:20:07 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"156","max":"157","log":["27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)","27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:39 - Preparing 1 Test Task:","27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)","27.10.2020 13:19:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:39 -  with parameters: ","27.10.2020 13:19:39 - etf.testcases = *","27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:39 - Setting state to CREATED","27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z","27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:41 - Project Properties: ","27.10.2020 13:19:41 - etf.testcases - * ","27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:41 - username -  ","27.10.2020 13:19:41 - authUser -  ","27.10.2020 13:19:41 - authMethod - basic ","27.10.2020 13:19:41 - TestRunTask initialized","27.10.2020 13:19:56 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:02 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:20:07.853 retry condition not satisfied: response.val == response.max
13:20:07.853 sleeping before retry #5
13:20:12.854 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:13.375 response time in milliseconds: 520.40
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:20:13 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)","27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:39 - Preparing 1 Test Task:","27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)","27.10.2020 13:19:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:39 -  with parameters: ","27.10.2020 13:19:39 - etf.testcases = *","27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:39 - Setting state to CREATED","27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z","27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:41 - Project Properties: ","27.10.2020 13:19:41 - etf.testcases - * ","27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:41 - username -  ","27.10.2020 13:19:41 - authUser -  ","27.10.2020 13:19:41 - authMethod - basic ","27.10.2020 13:19:41 - TestRunTask initialized","27.10.2020 13:19:56 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:02 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:20:13.375 retry condition not satisfied: response.val == response.max
13:20:13.375 sleeping before retry #6
13:20:18.376 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:18.886 response time in milliseconds: 509.56
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:20:18 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)","27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:39 - Preparing 1 Test Task:","27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)","27.10.2020 13:19:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:39 -  with parameters: ","27.10.2020 13:19:39 - etf.testcases = *","27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:39 - Setting state to CREATED","27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z","27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:41 - Project Properties: ","27.10.2020 13:19:41 - etf.testcases - * ","27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:41 - username -  ","27.10.2020 13:19:41 - authUser -  ","27.10.2020 13:19:41 - authMethod - basic ","27.10.2020 13:19:41 - TestRunTask initialized","27.10.2020 13:19:56 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:02 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:20:18.886 retry condition not satisfied: response.val == response.max
13:20:18.886 sleeping before retry #7
13:20:23.887 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:24.400 response time in milliseconds: 512.62
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Tue, 27 Oct 2020 13:20:24 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)","27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:39 - Preparing 1 Test Task:","27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)","27.10.2020 13:19:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:39 -  with parameters: ","27.10.2020 13:19:39 - etf.testcases = *","27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:39 - Setting state to CREATED","27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z","27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:41 - Project Properties: ","27.10.2020 13:19:41 - etf.testcases - * ","27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:41 - username -  ","27.10.2020 13:19:41 - authUser -  ","27.10.2020 13:19:41 - authMethod - basic ","27.10.2020 13:19:41 - TestRunTask initialized","27.10.2020 13:19:56 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:02 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:20:24.400 retry condition not satisfied: response.val == response.max
13:20:24.400 sleeping before retry #8
13:20:29.401 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:29.915 response time in milliseconds: 512.97
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Tue, 27 Oct 2020 13:20:29 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)","27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:39 - Preparing 1 Test Task:","27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)","27.10.2020 13:19:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:39 -  with parameters: ","27.10.2020 13:19:39 - etf.testcases = *","27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:39 - Setting state to CREATED","27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z","27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:41 - Project Properties: ","27.10.2020 13:19:41 - etf.testcases - * ","27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:41 - username -  ","27.10.2020 13:19:41 - authUser -  ","27.10.2020 13:19:41 - authMethod - basic ","27.10.2020 13:19:41 - TestRunTask initialized","27.10.2020 13:19:56 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:02 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:20:29.915 retry condition not satisfied: response.val == response.max
13:20:29.915 sleeping before retry #9
13:20:34.916 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:35.436 response time in milliseconds: 519.63
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Tue, 27 Oct 2020 13:20:35 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)","27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:39 - Preparing 1 Test Task:","27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)","27.10.2020 13:19:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:39 -  with parameters: ","27.10.2020 13:19:39 - etf.testcases = *","27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:39 - Setting state to CREATED","27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z","27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:41 - Project Properties: ","27.10.2020 13:19:41 - etf.testcases - * ","27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:41 - username -  ","27.10.2020 13:19:41 - authUser -  ","27.10.2020 13:19:41 - authMethod - basic ","27.10.2020 13:19:41 - TestRunTask initialized","27.10.2020 13:19:56 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:02 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:20:35.440 retry condition not satisfied: response.val == response.max
13:20:35.440 sleeping before retry #10
13:20:40.441 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:40.949 response time in milliseconds: 507.76
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Tue, 27 Oct 2020 13:20:40 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)","27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:39 - Preparing 1 Test Task:","27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)","27.10.2020 13:19:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:39 -  with parameters: ","27.10.2020 13:19:39 - etf.testcases = *","27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:39 - Setting state to CREATED","27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z","27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:41 - Project Properties: ","27.10.2020 13:19:41 - etf.testcases - * ","27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:41 - username -  ","27.10.2020 13:19:41 - authUser -  ","27.10.2020 13:19:41 - authMethod - basic ","27.10.2020 13:19:41 - TestRunTask initialized","27.10.2020 13:19:56 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:02 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:20:40.949 retry condition not satisfied: response.val == response.max
13:20:40.949 sleeping before retry #11
13:20:45.950 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:46.462 response time in milliseconds: 511.21
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Tue, 27 Oct 2020 13:20:46 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)","27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:39 - Preparing 1 Test Task:","27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)","27.10.2020 13:19:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:39 -  with parameters: ","27.10.2020 13:19:39 - etf.testcases = *","27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:39 - Setting state to CREATED","27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z","27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:41 - Project Properties: ","27.10.2020 13:19:41 - etf.testcases - * ","27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:41 - username -  ","27.10.2020 13:19:41 - authUser -  ","27.10.2020 13:19:41 - authMethod - basic ","27.10.2020 13:19:41 - TestRunTask initialized","27.10.2020 13:19:56 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:02 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:20:46.463 retry condition not satisfied: response.val == response.max
13:20:46.463 sleeping before retry #12
13:20:51.464 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:51.985 response time in milliseconds: 520.84
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Tue, 27 Oct 2020 13:20:51 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)","27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:39 - Preparing 1 Test Task:","27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)","27.10.2020 13:19:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:39 -  with parameters: ","27.10.2020 13:19:39 - etf.testcases = *","27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:39 - Setting state to CREATED","27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z","27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:41 - Project Properties: ","27.10.2020 13:19:41 - etf.testcases - * ","27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:41 - username -  ","27.10.2020 13:19:41 - authUser -  ","27.10.2020 13:19:41 - authMethod - basic ","27.10.2020 13:19:41 - TestRunTask initialized","27.10.2020 13:19:56 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:02 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:20:51.985 retry condition not satisfied: response.val == response.max
13:20:51.985 sleeping before retry #13
13:20:56.986 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:57.495 response time in milliseconds: 508.94
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Tue, 27 Oct 2020 13:20:57 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)","27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:39 - Preparing 1 Test Task:","27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)","27.10.2020 13:19:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:39 -  with parameters: ","27.10.2020 13:19:39 - etf.testcases = *","27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:39 - Setting state to CREATED","27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z","27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:41 - Project Properties: ","27.10.2020 13:19:41 - etf.testcases - * ","27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:41 - username -  ","27.10.2020 13:19:41 - authUser -  ","27.10.2020 13:19:41 - authMethod - basic ","27.10.2020 13:19:41 - TestRunTask initialized","27.10.2020 13:19:56 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:02 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:20:57.496 retry condition not satisfied: response.val == response.max
13:20:57.496 sleeping before retry #14
13:21:02.501 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:03.009 response time in milliseconds: 508.03
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Tue, 27 Oct 2020 13:21:02 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)","27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:39 - Preparing 1 Test Task:","27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)","27.10.2020 13:19:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:39 -  with parameters: ","27.10.2020 13:19:39 - etf.testcases = *","27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:39 - Setting state to CREATED","27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z","27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:41 - Project Properties: ","27.10.2020 13:19:41 - etf.testcases - * ","27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:41 - username -  ","27.10.2020 13:19:41 - authUser -  ","27.10.2020 13:19:41 - authMethod - basic ","27.10.2020 13:19:41 - TestRunTask initialized","27.10.2020 13:19:56 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:02 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:21:03.012 retry condition not satisfied: response.val == response.max
13:21:03.012 sleeping before retry #15
13:21:08.013 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:08.527 response time in milliseconds: 513.36
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Tue, 27 Oct 2020 13:21:08 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)","27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:39 - Preparing 1 Test Task:","27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)","27.10.2020 13:19:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:39 -  with parameters: ","27.10.2020 13:19:39 - etf.testcases = *","27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:39 - Setting state to CREATED","27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z","27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:41 - Project Properties: ","27.10.2020 13:19:41 - etf.testcases - * ","27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:41 - username -  ","27.10.2020 13:19:41 - authUser -  ","27.10.2020 13:19:41 - authMethod - basic ","27.10.2020 13:19:41 - TestRunTask initialized","27.10.2020 13:19:56 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:02 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:21:08.527 retry condition not satisfied: response.val == response.max
13:21:08.527 sleeping before retry #16
13:21:13.528 request:
19 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
19 > Accept-Encoding: gzip,deflate
19 > Connection: Keep-Alive
19 > Host: inspire.ec.europa.eu
19 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:14.130 response time in milliseconds: 601.92
19 < 200
19 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
19 < Connection: Keep-Alive
19 < Content-Type: application/json;charset=UTF-8
19 < Date: Tue, 27 Oct 2020 13:21:14 GMT
19 < Keep-Alive: timeout=3, max=100
19 < Server: nginx/1.16.1
19 < Vary: Origin
19 < X-Frame-Options: SAMEORIGIN
19 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)","27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:39 - Preparing 1 Test Task:","27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)","27.10.2020 13:19:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:39 -  with parameters: ","27.10.2020 13:19:39 - etf.testcases = *","27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:39 - Setting state to CREATED","27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z","27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:41 - Project Properties: ","27.10.2020 13:19:41 - etf.testcases - * ","27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:41 - username -  ","27.10.2020 13:19:41 - authUser -  ","27.10.2020 13:19:41 - authMethod - basic ","27.10.2020 13:19:41 - TestRunTask initialized","27.10.2020 13:19:56 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:02 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:21:08 ERROR Response did not meet SLA 51580/30000","27.10.2020 13:21:08 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:21:11 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:21:14.137 retry condition not satisfied: response.val == response.max
13:21:14.137 sleeping before retry #17
13:21:19.138 request:
20 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
20 > Accept-Encoding: gzip,deflate
20 > Connection: Keep-Alive
20 > Host: inspire.ec.europa.eu
20 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:19.667 response time in milliseconds: 524.76
20 < 200
20 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
20 < Connection: Keep-Alive
20 < Content-Type: application/json;charset=UTF-8
20 < Date: Tue, 27 Oct 2020 13:21:19 GMT
20 < Keep-Alive: timeout=3, max=100
20 < Server: nginx/1.16.1
20 < Vary: Origin
20 < X-Frame-Options: SAMEORIGIN
20 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)","27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:39 - Preparing 1 Test Task:","27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)","27.10.2020 13:19:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:39 -  with parameters: ","27.10.2020 13:19:39 - etf.testcases = *","27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:39 - Setting state to CREATED","27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z","27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:41 - Project Properties: ","27.10.2020 13:19:41 - etf.testcases - * ","27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:41 - username -  ","27.10.2020 13:19:41 - authUser -  ","27.10.2020 13:19:41 - authMethod - basic ","27.10.2020 13:19:41 - TestRunTask initialized","27.10.2020 13:19:56 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:02 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:21:08 ERROR Response did not meet SLA 51580/30000","27.10.2020 13:21:08 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:21:11 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:21:19.667 retry condition not satisfied: response.val == response.max
13:21:19.667 sleeping before retry #18
13:21:24.668 request:
21 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
21 > Accept-Encoding: gzip,deflate
21 > Connection: Keep-Alive
21 > Host: inspire.ec.europa.eu
21 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:25.206 response time in milliseconds: 537.38
21 < 200
21 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
21 < Connection: Keep-Alive
21 < Content-Type: application/json;charset=UTF-8
21 < Date: Tue, 27 Oct 2020 13:21:25 GMT
21 < Keep-Alive: timeout=3, max=100
21 < Server: nginx/1.16.1
21 < Vary: Origin
21 < X-Frame-Options: SAMEORIGIN
21 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)","27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:39 - Preparing 1 Test Task:","27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)","27.10.2020 13:19:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:39 -  with parameters: ","27.10.2020 13:19:39 - etf.testcases = *","27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:39 - Setting state to CREATED","27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z","27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:41 - Project Properties: ","27.10.2020 13:19:41 - etf.testcases - * ","27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:41 - username -  ","27.10.2020 13:19:41 - authUser -  ","27.10.2020 13:19:41 - authMethod - basic ","27.10.2020 13:19:41 - TestRunTask initialized","27.10.2020 13:19:56 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:02 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:21:08 ERROR Response did not meet SLA 51580/30000","27.10.2020 13:21:08 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:21:11 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:21:25.207 retry condition not satisfied: response.val == response.max
13:21:25.207 sleeping before retry #19
13:21:30.207 request:
22 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe7f34952-1c77-49df-a046-d6535b91dd7b/progress
22 > Accept-Encoding: gzip,deflate
22 > Connection: Keep-Alive
22 > Host: inspire.ec.europa.eu
22 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:30.734 response time in milliseconds: 525.69
22 < 200
22 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
22 < Connection: Keep-Alive
22 < Content-Type: application/json;charset=UTF-8
22 < Date: Tue, 27 Oct 2020 13:21:30 GMT
22 < Keep-Alive: timeout=3, max=100
22 < Server: nginx/1.16.1
22 < Vary: Origin
22 < X-Frame-Options: SAMEORIGIN
22 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:19:39 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:39 UTC 2020)","27.10.2020 13:19:39 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:39 - Preparing 1 Test Task:","27.10.2020 13:19:39 -  TestTask 1 (4a763f4c-3049-4f4c-bc7c-3fe2f81071e4)","27.10.2020 13:19:39 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:39 -  with parameters: ","27.10.2020 13:19:39 - etf.testcases = *","27.10.2020 13:19:39 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:39 - Setting state to CREATED","27.10.2020 13:19:39 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:39 - Starting TestRun.e7f34952-1c77-49df-a046-d6535b91dd7b at 2020-10-27T13:19:41Z","27.10.2020 13:19:41 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:41 - Project Properties: ","27.10.2020 13:19:41 - etf.testcases - * ","27.10.2020 13:19:41 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:41 - username -  ","27.10.2020 13:19:41 - authUser -  ","27.10.2020 13:19:41 - authMethod - basic ","27.10.2020 13:19:41 - TestRunTask initialized","27.10.2020 13:19:56 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:20:02 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:21:08 ERROR Response did not meet SLA 51580/30000","27.10.2020 13:21:08 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:21:11 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:21:30.734 retry condition not satisfied: response.val == response.max
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
7.182
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:12:25.180 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/elu/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 7.181
13:12:25.183 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 278
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/elu/wfs?request=GetCapabilities"}}}

13:12:32.363 response time in milliseconds: 7075.22
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:12:32 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804352181","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:12:32.364 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1:21.908
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:21:35.345 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 9.836
13:21:35.347 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 286
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml"}}}

13:21:45.179 response time in milliseconds: 9063.69
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:21:44 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:21:41 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/ae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65.json","testRuns":{"TestRun":{"id":"EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:21:41.521Z","testTasks":{"TestTask":{"id":"EID285fc8f2-9f58-4453-97c6-f7014dafda34","parent":{"ref":"EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID25fa9724-225d-441c-96c2-061ef6af559f"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID25fa9724-225d-441c-96c2-061ef6af559f","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:21:35.789Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:21:40.89Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:21:45.182 [print] EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:21:45.182 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:21:45.182 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:21:45.182 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/ae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:21:45.183 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:21:45.183 [print] statuspath TestRuns/EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65
* print 'progresspath ', progresspath 0.009
13:21:45.192 [print] progresspath  TestRuns/EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65/progress
Given path progresspath 0.000
When method GET 0.536
13:21:45.193 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:45.729 response time in milliseconds: 535.26
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:21:45 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"4","max":"5","log":["27.10.2020 13:21:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:41 UTC 2020)","27.10.2020 13:21:41 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:41 - Preparing 1 Test Task:","27.10.2020 13:21:41 -  TestTask 1 (285fc8f2-9f58-4453-97c6-f7014dafda34)","27.10.2020 13:21:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:41 -  with parameters: ","27.10.2020 13:21:41 - etf.testcases = *","27.10.2020 13:21:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:41 - Setting state to CREATED","27.10.2020 13:21:41 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:42 - Starting TestRun.ae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65 at 2020-10-27T13:21:43Z","27.10.2020 13:21:43 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:43 - Project Properties: ","27.10.2020 13:21:43 - etf.testcases - * ","27.10.2020 13:21:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:21:43 - username -  ","27.10.2020 13:21:43 - authUser -  ","27.10.2020 13:21:43 - authMethod - basic ","27.10.2020 13:21:43 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:21:45.729 [print] {
  "val": "4",
  "max": "5",
  "log": [
    "27.10.2020 13:21:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:41 UTC 2020)",
    "27.10.2020 13:21:41 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:21:41 - Preparing 1 Test Task:",
    "27.10.2020 13:21:41 -  TestTask 1 (285fc8f2-9f58-4453-97c6-f7014dafda34)",
    "27.10.2020 13:21:41 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:21:41 -  with parameters: ",
    "27.10.2020 13:21:41 - etf.testcases = *",
    "27.10.2020 13:21:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:21:41 - Setting state to CREATED",
    "27.10.2020 13:21:41 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:21:42 - Starting TestRun.ae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65 at 2020-10-27T13:21:43Z",
    "27.10.2020 13:21:43 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:21:43 - Project Properties: ",
    "27.10.2020 13:21:43 - etf.testcases - * ",
    "27.10.2020 13:21:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ",
    "27.10.2020 13:21:43 - username -  ",
    "27.10.2020 13:21:43 - authUser -  ",
    "27.10.2020 13:21:43 - authMethod - basic ",
    "27.10.2020 13:21:43 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 1:2.751
13:21:45.730 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:46.234 response time in milliseconds: 503.76
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:21:46 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"4","max":"5","log":["27.10.2020 13:21:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:41 UTC 2020)","27.10.2020 13:21:41 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:41 - Preparing 1 Test Task:","27.10.2020 13:21:41 -  TestTask 1 (285fc8f2-9f58-4453-97c6-f7014dafda34)","27.10.2020 13:21:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:41 -  with parameters: ","27.10.2020 13:21:41 - etf.testcases = *","27.10.2020 13:21:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:41 - Setting state to CREATED","27.10.2020 13:21:41 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:42 - Starting TestRun.ae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65 at 2020-10-27T13:21:43Z","27.10.2020 13:21:43 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:43 - Project Properties: ","27.10.2020 13:21:43 - etf.testcases - * ","27.10.2020 13:21:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:21:43 - username -  ","27.10.2020 13:21:43 - authUser -  ","27.10.2020 13:21:43 - authMethod - basic ","27.10.2020 13:21:43 - TestRunTask initialized"]}

13:21:46.234 retry condition not satisfied: response.val == response.max
13:21:46.234 sleeping before retry #1
13:21:51.235 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:51.812 response time in milliseconds: 576.78
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:21:51 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["27.10.2020 13:21:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:41 UTC 2020)","27.10.2020 13:21:41 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:41 - Preparing 1 Test Task:","27.10.2020 13:21:41 -  TestTask 1 (285fc8f2-9f58-4453-97c6-f7014dafda34)","27.10.2020 13:21:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:41 -  with parameters: ","27.10.2020 13:21:41 - etf.testcases = *","27.10.2020 13:21:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:41 - Setting state to CREATED","27.10.2020 13:21:41 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:42 - Starting TestRun.ae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65 at 2020-10-27T13:21:43Z","27.10.2020 13:21:43 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:43 - Project Properties: ","27.10.2020 13:21:43 - etf.testcases - * ","27.10.2020 13:21:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:21:43 - username -  ","27.10.2020 13:21:43 - authUser -  ","27.10.2020 13:21:43 - authMethod - basic ","27.10.2020 13:21:43 - TestRunTask initialized"]}

13:21:51.812 retry condition not satisfied: response.val == response.max
13:21:51.812 sleeping before retry #2
13:21:56.813 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:57.327 response time in milliseconds: 513.78
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:21:57 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"34","max":"35","log":["27.10.2020 13:21:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:41 UTC 2020)","27.10.2020 13:21:41 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:41 - Preparing 1 Test Task:","27.10.2020 13:21:41 -  TestTask 1 (285fc8f2-9f58-4453-97c6-f7014dafda34)","27.10.2020 13:21:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:41 -  with parameters: ","27.10.2020 13:21:41 - etf.testcases = *","27.10.2020 13:21:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:41 - Setting state to CREATED","27.10.2020 13:21:41 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:42 - Starting TestRun.ae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65 at 2020-10-27T13:21:43Z","27.10.2020 13:21:43 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:43 - Project Properties: ","27.10.2020 13:21:43 - etf.testcases - * ","27.10.2020 13:21:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:21:43 - username -  ","27.10.2020 13:21:43 - authUser -  ","27.10.2020 13:21:43 - authMethod - basic ","27.10.2020 13:21:43 - TestRunTask initialized"]}

13:21:57.328 retry condition not satisfied: response.val == response.max
13:21:57.328 sleeping before retry #3
13:22:02.329 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:02.832 response time in milliseconds: 502.73
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:22:02 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"53","max":"54","log":["27.10.2020 13:21:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:41 UTC 2020)","27.10.2020 13:21:41 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:41 - Preparing 1 Test Task:","27.10.2020 13:21:41 -  TestTask 1 (285fc8f2-9f58-4453-97c6-f7014dafda34)","27.10.2020 13:21:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:41 -  with parameters: ","27.10.2020 13:21:41 - etf.testcases = *","27.10.2020 13:21:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:41 - Setting state to CREATED","27.10.2020 13:21:41 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:42 - Starting TestRun.ae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65 at 2020-10-27T13:21:43Z","27.10.2020 13:21:43 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:43 - Project Properties: ","27.10.2020 13:21:43 - etf.testcases - * ","27.10.2020 13:21:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:21:43 - username -  ","27.10.2020 13:21:43 - authUser -  ","27.10.2020 13:21:43 - authMethod - basic ","27.10.2020 13:21:43 - TestRunTask initialized"]}

13:22:02.832 retry condition not satisfied: response.val == response.max
13:22:02.832 sleeping before retry #4
13:22:07.833 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:08.345 response time in milliseconds: 511.91
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:22:08 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"68","max":"69","log":["27.10.2020 13:21:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:41 UTC 2020)","27.10.2020 13:21:41 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:41 - Preparing 1 Test Task:","27.10.2020 13:21:41 -  TestTask 1 (285fc8f2-9f58-4453-97c6-f7014dafda34)","27.10.2020 13:21:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:41 -  with parameters: ","27.10.2020 13:21:41 - etf.testcases = *","27.10.2020 13:21:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:41 - Setting state to CREATED","27.10.2020 13:21:41 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:42 - Starting TestRun.ae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65 at 2020-10-27T13:21:43Z","27.10.2020 13:21:43 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:43 - Project Properties: ","27.10.2020 13:21:43 - etf.testcases - * ","27.10.2020 13:21:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:21:43 - username -  ","27.10.2020 13:21:43 - authUser -  ","27.10.2020 13:21:43 - authMethod - basic ","27.10.2020 13:21:43 - TestRunTask initialized"]}

13:22:08.345 retry condition not satisfied: response.val == response.max
13:22:08.346 sleeping before retry #5
13:22:13.346 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:13.862 response time in milliseconds: 515.45
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:22:13 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"98","max":"99","log":["27.10.2020 13:21:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:41 UTC 2020)","27.10.2020 13:21:41 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:41 - Preparing 1 Test Task:","27.10.2020 13:21:41 -  TestTask 1 (285fc8f2-9f58-4453-97c6-f7014dafda34)","27.10.2020 13:21:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:41 -  with parameters: ","27.10.2020 13:21:41 - etf.testcases = *","27.10.2020 13:21:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:41 - Setting state to CREATED","27.10.2020 13:21:41 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:42 - Starting TestRun.ae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65 at 2020-10-27T13:21:43Z","27.10.2020 13:21:43 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:43 - Project Properties: ","27.10.2020 13:21:43 - etf.testcases - * ","27.10.2020 13:21:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:21:43 - username -  ","27.10.2020 13:21:43 - authUser -  ","27.10.2020 13:21:43 - authMethod - basic ","27.10.2020 13:21:43 - TestRunTask initialized","27.10.2020 13:22:12 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:22:13.863 retry condition not satisfied: response.val == response.max
13:22:13.863 sleeping before retry #6
13:22:18.863 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:19.374 response time in milliseconds: 510.29
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:22:19 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"127","max":"128","log":["27.10.2020 13:21:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:41 UTC 2020)","27.10.2020 13:21:41 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:41 - Preparing 1 Test Task:","27.10.2020 13:21:41 -  TestTask 1 (285fc8f2-9f58-4453-97c6-f7014dafda34)","27.10.2020 13:21:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:41 -  with parameters: ","27.10.2020 13:21:41 - etf.testcases = *","27.10.2020 13:21:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:41 - Setting state to CREATED","27.10.2020 13:21:41 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:42 - Starting TestRun.ae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65 at 2020-10-27T13:21:43Z","27.10.2020 13:21:43 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:43 - Project Properties: ","27.10.2020 13:21:43 - etf.testcases - * ","27.10.2020 13:21:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:21:43 - username -  ","27.10.2020 13:21:43 - authUser -  ","27.10.2020 13:21:43 - authMethod - basic ","27.10.2020 13:21:43 - TestRunTask initialized","27.10.2020 13:22:12 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:22:19.375 retry condition not satisfied: response.val == response.max
13:22:19.375 sleeping before retry #7
13:22:24.375 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:24.892 response time in milliseconds: 515.89
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Tue, 27 Oct 2020 13:22:24 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"167","max":"168","log":["27.10.2020 13:21:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:41 UTC 2020)","27.10.2020 13:21:41 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:41 - Preparing 1 Test Task:","27.10.2020 13:21:41 -  TestTask 1 (285fc8f2-9f58-4453-97c6-f7014dafda34)","27.10.2020 13:21:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:41 -  with parameters: ","27.10.2020 13:21:41 - etf.testcases = *","27.10.2020 13:21:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:41 - Setting state to CREATED","27.10.2020 13:21:41 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:42 - Starting TestRun.ae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65 at 2020-10-27T13:21:43Z","27.10.2020 13:21:43 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:43 - Project Properties: ","27.10.2020 13:21:43 - etf.testcases - * ","27.10.2020 13:21:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:21:43 - username -  ","27.10.2020 13:21:43 - authUser -  ","27.10.2020 13:21:43 - authMethod - basic ","27.10.2020 13:21:43 - TestRunTask initialized","27.10.2020 13:22:12 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:22:24.892 retry condition not satisfied: response.val == response.max
13:22:24.892 sleeping before retry #8
13:22:29.893 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:30.447 response time in milliseconds: 553.42
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Tue, 27 Oct 2020 13:22:30 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:21:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:41 UTC 2020)","27.10.2020 13:21:41 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:41 - Preparing 1 Test Task:","27.10.2020 13:21:41 -  TestTask 1 (285fc8f2-9f58-4453-97c6-f7014dafda34)","27.10.2020 13:21:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:41 -  with parameters: ","27.10.2020 13:21:41 - etf.testcases = *","27.10.2020 13:21:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:41 - Setting state to CREATED","27.10.2020 13:21:41 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:42 - Starting TestRun.ae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65 at 2020-10-27T13:21:43Z","27.10.2020 13:21:43 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:43 - Project Properties: ","27.10.2020 13:21:43 - etf.testcases - * ","27.10.2020 13:21:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:21:43 - username -  ","27.10.2020 13:21:43 - authUser -  ","27.10.2020 13:21:43 - authMethod - basic ","27.10.2020 13:21:43 - TestRunTask initialized","27.10.2020 13:22:12 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:22:26 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:22:27 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:22:29 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:22:30.447 retry condition not satisfied: response.val == response.max
13:22:30.447 sleeping before retry #9
13:22:35.448 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:35.956 response time in milliseconds: 507.50
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Tue, 27 Oct 2020 13:22:35 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:21:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:41 UTC 2020)","27.10.2020 13:21:41 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:41 - Preparing 1 Test Task:","27.10.2020 13:21:41 -  TestTask 1 (285fc8f2-9f58-4453-97c6-f7014dafda34)","27.10.2020 13:21:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:41 -  with parameters: ","27.10.2020 13:21:41 - etf.testcases = *","27.10.2020 13:21:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:41 - Setting state to CREATED","27.10.2020 13:21:41 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:42 - Starting TestRun.ae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65 at 2020-10-27T13:21:43Z","27.10.2020 13:21:43 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:43 - Project Properties: ","27.10.2020 13:21:43 - etf.testcases - * ","27.10.2020 13:21:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:21:43 - username -  ","27.10.2020 13:21:43 - authUser -  ","27.10.2020 13:21:43 - authMethod - basic ","27.10.2020 13:21:43 - TestRunTask initialized","27.10.2020 13:22:12 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:22:26 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:22:27 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:22:29 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:22:35.956 retry condition not satisfied: response.val == response.max
13:22:35.956 sleeping before retry #10
13:22:40.957 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:41.466 response time in milliseconds: 509.33
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Tue, 27 Oct 2020 13:22:41 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:21:41 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:21:41 UTC 2020)","27.10.2020 13:21:41 - Resolving Executable Test Suite dependencies","27.10.2020 13:21:41 - Preparing 1 Test Task:","27.10.2020 13:21:41 -  TestTask 1 (285fc8f2-9f58-4453-97c6-f7014dafda34)","27.10.2020 13:21:41 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:21:41 -  with parameters: ","27.10.2020 13:21:41 - etf.testcases = *","27.10.2020 13:21:41 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:21:41 - Setting state to CREATED","27.10.2020 13:21:41 - Changed state from CREATED to INITIALIZING","27.10.2020 13:21:42 - Starting TestRun.ae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65 at 2020-10-27T13:21:43Z","27.10.2020 13:21:43 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:21:43 - Project Properties: ","27.10.2020 13:21:43 - etf.testcases - * ","27.10.2020 13:21:43 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml ","27.10.2020 13:21:43 - username -  ","27.10.2020 13:21:43 - authUser -  ","27.10.2020 13:21:43 - authMethod - basic ","27.10.2020 13:21:43 - TestRunTask initialized","27.10.2020 13:22:12 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:22:26 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:22:27 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:22:29 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:22:41.471 retry condition not satisfied: response.val == response.max
13:22:41.471 sleeping before retry #11
13:22:46.471 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:48.480 response time in milliseconds: 2008.13
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Tue, 27 Oct 2020 13:22:48 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:22:48.481 retry condition satisfied
* print response 0.000
13:22:48.481 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 8.719
13:22:48.481 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:22:57.195 response time in milliseconds: 7756.76
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Cache-Control: public, max-age=120
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Tue, 27 Oct 2020 13:22:56 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Last-Modified: Tue, 27 Oct 2020 13:22:45 GMT
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/ae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65.json","testRuns":{"TestRun":{"id":"EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:21:41.521Z","testTasks":{"TestTask":{"id":"EID285fc8f2-9f58-4453-97c6-f7014dafda34","parent":{"ref":"EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID25fa9724-225d-441c-96c2-061ef6af559f"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EIDb3b016fb-db8a-41e1-8ef3-0654331882dd"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID25fa9724-225d-441c-96c2-061ef6af559f","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:21:35.789Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:21:40.89Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwater2009/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EIDb3b016fb-db8a-41e1-8ef3-0654331882dd","testObject":{"ref":"EID25fa9724-225d-441c-96c2-061ef6af559f"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a38b892-0175-1000-6553-3c4a2d4a741b","testCaseResults":{"TestCaseResult":[{"id":"EID6a38b892-0175-1000-818f-afc31cd47482","testStepResults":{"TestStepResult":[{"id":"EID6a38b892-0175-1000-58d3-32fbb159bb96","parent":{"ref":"EID6a38b892-0175-1000-818f-afc31cd47482"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:21:43Z","duration":20,"status":"PASSED"},{"id":"EID6a38b8a7-0175-1000-16ac-986d6e61a642","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a38bbc3-0175-1000-4192-4b6fd6d73fb0","parent":{"ref":"EID6a38b8a7-0175-1000-16ac-986d6e61a642"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:21:44Z","duration":0,"status":"PASSED"},{"id":"EID6a38bbc3-0175-1000-b826-c420811de7a9","parent":{"ref":"EID6a38b8a7-0175-1000-16ac-986d6e61a642"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:21:44Z","duration":0,"status":"PASSED"},{"id":"EID6a38bbc3-0175-1000-a38e-d4c0ee157aeb","parent":{"ref":"EID6a38b8a7-0175-1000-16ac-986d6e61a642"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:21:44Z","duration":0,"status":"PASSED"},{"id":"EID6a38bbc3-0175-1000-e4f9-37020c4e07a7","parent":{"ref":"EID6a38b8a7-0175-1000-16ac-986d6e61a642"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:21:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDefe817da-6380-485f-91de-55ae28da66c5"},{"ref":"EIDbd3e308c-4cce-48d2-9801-a9c21d5285ea"},{"ref":"EID3d9c1a89-fc9d-4c4c-aefc-9c783a0d8a64"}]},"parent":{"ref":"EID6a38b892-0175-1000-818f-afc31cd47482"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:21:43Z","duration":615,"status":"PASSED"}]},"parent":{"ref":"EID6a38b892-0175-1000-6553-3c4a2d4a741b"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:21:43Z","duration":832,"status":"PASSED"},{"id":"EID6a38bbd2-0175-1000-c238-69dd0e1615cd","testStepResults":{"TestStepResult":{"id":"EID6a38bbd2-0175-1000-5265-44ef0fd4e9d0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a38cc1c-0175-1000-268a-b4679b37b9f8","parent":{"ref":"EID6a38bbd2-0175-1000-5265-44ef0fd4e9d0"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:21:48Z","duration":0,"status":"PASSED"},{"id":"EID6a38cc1c-0175-1000-5e09-690b133de193","parent":{"ref":"EID6a38bbd2-0175-1000-5265-44ef0fd4e9d0"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:21:48Z","duration":0,"status":"PASSED"},{"id":"EID6a38cc1c-0175-1000-f056-f9e04d858278","parent":{"ref":"EID6a38bbd2-0175-1000-5265-44ef0fd4e9d0"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:21:48Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbb829ee3-903e-4d6f-8587-6fb53f1bcd98"},{"ref":"EID000347d2-13d7-496e-996d-aba4a99f01e5"},{"ref":"EIDee94282a-8414-4ddb-8dbf-636b09989f9b"}]},"parent":{"ref":"EID6a38bbd2-0175-1000-c238-69dd0e1615cd"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:21:44Z","duration":4084,"status":"PASSED"}},"parent":{"ref":"EID6a38b892-0175-1000-6553-3c4a2d4a741b"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:21:44Z","duration":4191,"status":"PASSED"}]},"parent":{"ref":"EIDb3b016fb-db8a-41e1-8ef3-0654331882dd"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:21:43Z","duration":5031,"status":"PASSED"},{"id":"EID6a38cc39-0175-1000-820f-917906350cb2","testCaseResults":{"TestCaseResult":[{"id":"EID6a38cc3a-0175-1000-85b6-d701711c9d5c","testStepResults":{"TestStepResult":[{"id":"EID6a38cc3a-0175-1000-5c0d-e3674a0660ed","parent":{"ref":"EID6a38cc3a-0175-1000-85b6-d701711c9d5c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:21:48Z","duration":4084,"status":"PASSED"},{"id":"EID6a38cc3a-0175-1000-7e64-cd6a7551f287","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a38cf20-0175-1000-1761-3b4d80136100","parent":{"ref":"EID6a38cc3a-0175-1000-7e64-cd6a7551f287"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:21:49Z","duration":0,"status":"PASSED"},{"id":"EID6a38cf20-0175-1000-b55d-877e9f8ae3c7","parent":{"ref":"EID6a38cc3a-0175-1000-7e64-cd6a7551f287"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:21:49Z","duration":0,"status":"PASSED"},{"id":"EID6a38cf20-0175-1000-ba78-ed7773baacd0","parent":{"ref":"EID6a38cc3a-0175-1000-7e64-cd6a7551f287"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:21:49Z","duration":0,"status":"PASSED"},{"id":"EID6a38cf20-0175-1000-f3f6-f690aa597a26","parent":{"ref":"EID6a38cc3a-0175-1000-7e64-cd6a7551f287"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:21:49Z","duration":0,"status":"PASSED"},{"id":"EID6a38cf20-0175-1000-d7ff-8abf862be0e0","parent":{"ref":"EID6a38cc3a-0175-1000-7e64-cd6a7551f287"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:21:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe4cb54a7-7c90-4d86-9d0a-a9ffe6834d98"},{"ref":"EID3725afd0-7ec6-4159-80c8-3d1a46d5ad5c"},{"ref":"EID428bcfa4-6062-4ce3-89f0-4db3a6fac2c3"}]},"parent":{"ref":"EID6a38cc3a-0175-1000-85b6-d701711c9d5c"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:21:48Z","duration":484,"status":"PASSED"}]},"parent":{"ref":"EID6a38cc39-0175-1000-820f-917906350cb2"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:21:48Z","duration":750,"status":"PASSED"},{"id":"EID6a38cf28-0175-1000-ccc8-af3ba19d9480","testStepResults":{"TestStepResult":[{"id":"EID6a38cf28-0175-1000-6144-ad9ecb557909","attachments":{"attachment":[{"ref":"EID6e9bf049-6c52-444c-a074-b6454dbd296f"},{"ref":"EIDe0d969ed-3020-41c3-b9bc-3472c49caabf"}]},"parent":{"ref":"EID6a38cf28-0175-1000-ccc8-af3ba19d9480"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:21:49Z","duration":1487,"status":"PASSED"},{"id":"EID6a38d538-0175-1000-bc93-280f9e71eb55","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a38d5f8-0175-1000-fb08-1366dfc1aa6a","parent":{"ref":"EID6a38d538-0175-1000-bc93-280f9e71eb55"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:21:51Z","duration":0,"status":"PASSED"},{"id":"EID6a38d5f8-0175-1000-2a09-be736ac4fde0","parent":{"ref":"EID6a38d538-0175-1000-bc93-280f9e71eb55"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:21:51Z","duration":0,"status":"PASSED"},{"id":"EID6a38d5f8-0175-1000-f106-85c9f312689c","parent":{"ref":"EID6a38d538-0175-1000-bc93-280f9e71eb55"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:21:51Z","duration":0,"status":"PASSED"},{"id":"EID6a38d5f8-0175-1000-2d3d-a5c529eb3c68","parent":{"ref":"EID6a38d538-0175-1000-bc93-280f9e71eb55"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:21:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe30e3765-8ebc-4a4f-adec-e5e979cf7f93"},{"ref":"EID863a05f4-9dc6-47ca-aac1-3f9ff27ccb78"},{"ref":"EIDe18e507e-39a4-407c-8376-b4a8b6baeca5"}]},"parent":{"ref":"EID6a38cf28-0175-1000-ccc8-af3ba19d9480"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:21:50Z","duration":76,"status":"PASSED"}]},"parent":{"ref":"EID6a38cc39-0175-1000-820f-917906350cb2"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:21:49Z","duration":1744,"status":"PASSED"},{"id":"EID6a38d5f8-0175-1000-2bad-589d911c0a2a","testStepResults":{"TestStepResult":[{"id":"EID6a38d5f8-0175-1000-52a6-24c51a7903d5","attachments":{"attachment":[{"ref":"EIDeb09340c-d66c-4daf-9d8c-969c3ab76afd"},{"ref":"EIDa94ec337-6bbb-4780-8fc9-6bebf5605d6c"}]},"parent":{"ref":"EID6a38d5f8-0175-1000-2bad-589d911c0a2a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:21:51Z","duration":509,"status":"PASSED"},{"id":"EID6a38d874-0175-1000-d661-7fe40fa14040","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a38d9e4-0175-1000-a6a4-c53363883e85","parent":{"ref":"EID6a38d874-0175-1000-d661-7fe40fa14040"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:21:52Z","duration":0,"status":"PASSED"},{"id":"EID6a38d9e4-0175-1000-7013-8204d7aa55a1","parent":{"ref":"EID6a38d874-0175-1000-d661-7fe40fa14040"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:21:52Z","duration":0,"status":"PASSED"},{"id":"EID6a38d9e4-0175-1000-f32a-59b4bd76be60","parent":{"ref":"EID6a38d874-0175-1000-d661-7fe40fa14040"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:21:52Z","duration":0,"status":"PASSED"},{"id":"EID6a38d9e4-0175-1000-0ba9-ca5ce29ce8de","parent":{"ref":"EID6a38d874-0175-1000-d661-7fe40fa14040"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:21:52Z","duration":0,"status":"PASSED"},{"id":"EID6a38d9e4-0175-1000-140b-fdfe1167a429","parent":{"ref":"EID6a38d874-0175-1000-d661-7fe40fa14040"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:21:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1432cf4c-7b1c-4881-bd88-3048d178abf1"},{"ref":"EIDefc4a099-bd11-4fea-aaf7-dc238e784ca3"},{"ref":"EID5b8caac7-80a2-4a7e-bf1f-6c372bee3ecf"}]},"parent":{"ref":"EID6a38d5f8-0175-1000-2bad-589d911c0a2a"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:21:51Z","duration":261,"status":"PASSED"}]},"parent":{"ref":"EID6a38cc39-0175-1000-820f-917906350cb2"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:21:51Z","duration":1004,"status":"PASSED"},{"id":"EID6a38d9e4-0175-1000-965f-1ffd03d895c4","testStepResults":{"TestStepResult":[{"id":"EID6a38d9e4-0175-1000-dde5-752be4a36817","attachments":{"attachment":[{"ref":"EID27830c61-d240-4fb0-99ab-5e4b9d1d9422"},{"ref":"EIDa600fc94-c42b-42b1-8759-16af25455044"}]},"parent":{"ref":"EID6a38d9e4-0175-1000-965f-1ffd03d895c4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:21:52Z","duration":505,"status":"PASSED"},{"id":"EID6a38dc0f-0175-1000-17cb-44abfaf04216","parent":{"ref":"EID6a38d9e4-0175-1000-965f-1ffd03d895c4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:21:52Z","duration":1,"status":"PASSED"},{"id":"EID6a38dc10-0175-1000-2958-8a71629757a4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a38df60-0175-1000-5628-002ec7df017b","parent":{"ref":"EID6a38dc10-0175-1000-2958-8a71629757a4"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:21:53Z","duration":1,"status":"PASSED"},{"id":"EID6a38df61-0175-1000-ef4f-57f502ee9ca3","parent":{"ref":"EID6a38dc10-0175-1000-2958-8a71629757a4"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:21:53Z","duration":0,"status":"PASSED"},{"id":"EID6a38df61-0175-1000-e9c5-1bca7d12c4b9","parent":{"ref":"EID6a38dc10-0175-1000-2958-8a71629757a4"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:21:53Z","duration":0,"status":"PASSED"},{"id":"EID6a38df61-0175-1000-ece1-97fb5e4c2198","parent":{"ref":"EID6a38dc10-0175-1000-2958-8a71629757a4"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:21:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8261c750-d243-4e4d-bc1d-537aca4a773d"},{"ref":"EIDff5c2d25-d6cb-4b97-a25f-72a23621c9aa"},{"ref":"EID52efd1f8-a586-4389-895f-a310a6dae6f7"}]},"parent":{"ref":"EID6a38d9e4-0175-1000-965f-1ffd03d895c4"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:21:52Z","duration":532,"status":"PASSED"},{"id":"EID6a38df61-0175-1000-28c2-120672164823","attachments":{"attachment":{"ref":"EID87314a14-3517-496d-ab4e-7b98538ac2c2"}},"parent":{"ref":"EID6a38d9e4-0175-1000-965f-1ffd03d895c4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:21:53Z","duration":0,"status":"PASSED"},{"id":"EID6a38df6c-0175-1000-4cdb-644194cde743","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a38e0ae-0175-1000-084c-76b29846f550","parent":{"ref":"EID6a38df6c-0175-1000-4cdb-644194cde743"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:21:53Z","duration":0,"status":"PASSED"},{"id":"EID6a38e0af-0175-1000-4be6-07ad5af79f7e","parent":{"ref":"EID6a38df6c-0175-1000-4cdb-644194cde743"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:21:53Z","duration":0,"status":"PASSED"},{"id":"EID6a38e0af-0175-1000-f70e-5b30109aac0d","parent":{"ref":"EID6a38df6c-0175-1000-4cdb-644194cde743"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:21:53Z","duration":0,"status":"PASSED"},{"id":"EID6a38e0af-0175-1000-8939-c6250d2ba148","parent":{"ref":"EID6a38df6c-0175-1000-4cdb-644194cde743"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:21:53Z","duration":0,"status":"PASSED"},{"id":"EID6a38e0af-0175-1000-2d68-32e97944a694","parent":{"ref":"EID6a38df6c-0175-1000-4cdb-644194cde743"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:21:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6cd34352-4aa6-4f60-8309-b4aa632105c2"},{"ref":"EIDc82a0045-0b7e-4b58-9e23-e128538dfa95"},{"ref":"EIDe67f8f06-c13e-4fd3-9ca8-39dc9e80df83"}]},"parent":{"ref":"EID6a38d9e4-0175-1000-965f-1ffd03d895c4"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:21:53Z","duration":166,"status":"PASSED"}]},"parent":{"ref":"EID6a38cc39-0175-1000-820f-917906350cb2"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:21:52Z","duration":1739,"status":"PASSED"},{"id":"EID6a38e0af-0175-1000-b2c9-bebe1cb68a20","testStepResults":{"TestStepResult":[{"id":"EID6a38e0af-0175-1000-1fc5-fc20ab47ecfd","attachments":{"attachment":[{"ref":"EID692520d1-96f0-4d9a-a9aa-13b3436d5ec7"},{"ref":"EID2163cf9a-df7b-4b15-be50-ad9d9ed538cf"}]},"parent":{"ref":"EID6a38e0af-0175-1000-b2c9-bebe1cb68a20"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:21:53Z","duration":677,"status":"PASSED"},{"id":"EID6a38e416-0175-1000-d749-4c1864e32097","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a38e8ca-0175-1000-ce17-b0f16df90bf4","parent":{"ref":"EID6a38e416-0175-1000-d749-4c1864e32097"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:21:55Z","duration":0,"status":"PASSED"},{"id":"EID6a38e8ca-0175-1000-e47c-8706efd14c20","parent":{"ref":"EID6a38e416-0175-1000-d749-4c1864e32097"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:21:55Z","duration":0,"status":"PASSED"},{"id":"EID6a38e8ca-0175-1000-0571-448e985802ab","parent":{"ref":"EID6a38e416-0175-1000-d749-4c1864e32097"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:21:55Z","duration":0,"status":"PASSED"},{"id":"EID6a38e8ca-0175-1000-9b3b-cf75f324362a","parent":{"ref":"EID6a38e416-0175-1000-d749-4c1864e32097"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:21:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID191e6374-a7bc-4712-b899-91c838012ebe"},{"ref":"EID55384c17-79d3-4b8e-a446-8ea962295beb"},{"ref":"EID0e852181-ba7f-4aeb-a993-e3c9c18096d2"}]},"parent":{"ref":"EID6a38e0af-0175-1000-b2c9-bebe1cb68a20"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:21:54Z","duration":872,"status":"PASSED"}]},"parent":{"ref":"EID6a38cc39-0175-1000-820f-917906350cb2"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:21:53Z","duration":2618,"status":"PASSED"},{"id":"EID6a38eaea-0175-1000-3e56-b0d2f9469c12","testStepResults":{"TestStepResult":[{"id":"EID6a38eaee-0175-1000-96ac-7f883148e870","attachments":{"attachment":[{"ref":"EID76c99456-fa1b-44d5-915d-310ef5fc98c2"},{"ref":"EID90ab926e-fadf-4e0c-a67a-ab5ce71b3803"}]},"parent":{"ref":"EID6a38eaea-0175-1000-3e56-b0d2f9469c12"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:21:56Z","duration":545,"status":"PASSED"},{"id":"EID6a38ed3c-0175-1000-477c-d7f76f2ea745","parent":{"ref":"EID6a38eaea-0175-1000-3e56-b0d2f9469c12"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:21:57Z","duration":0,"status":"PASSED"},{"id":"EID6a38ed3c-0175-1000-57af-2cfee657fc8f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a38ef5e-0175-1000-1a10-3e9dc8eec346","parent":{"ref":"EID6a38ed3c-0175-1000-57af-2cfee657fc8f"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:21:57Z","duration":0,"status":"PASSED"},{"id":"EID6a38ef5e-0175-1000-aaa6-1ce13caa30d8","parent":{"ref":"EID6a38ed3c-0175-1000-57af-2cfee657fc8f"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:21:57Z","duration":0,"status":"PASSED"},{"id":"EID6a38ef5e-0175-1000-061e-e217441bb1eb","parent":{"ref":"EID6a38ed3c-0175-1000-57af-2cfee657fc8f"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:21:57Z","duration":0,"status":"PASSED"},{"id":"EID6a38ef5e-0175-1000-2abc-cd584e60f667","parent":{"ref":"EID6a38ed3c-0175-1000-57af-2cfee657fc8f"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:21:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2120f504-99ee-4286-bb2c-1fcaa6bafb7c"},{"ref":"EID152a9b82-348a-465a-a7d1-e8a5ace717d4"},{"ref":"EID8b8337fc-c260-4138-825b-83c0f8f6e8fc"}]},"parent":{"ref":"EID6a38eaea-0175-1000-3e56-b0d2f9469c12"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:21:57Z","duration":440,"status":"PASSED"},{"id":"EID6a38ef5e-0175-1000-5bd2-aee1db0f6619","attachments":{"attachment":{"ref":"EID5b9d505e-6373-4d61-ab44-aa4d5e278d7c"}},"parent":{"ref":"EID6a38eaea-0175-1000-3e56-b0d2f9469c12"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:21:57Z","duration":1,"status":"PASSED"},{"id":"EID6a38ef69-0175-1000-3503-b9d9a3a14c74","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a38f016-0175-1000-14fe-5b71a71e4132","parent":{"ref":"EID6a38ef69-0175-1000-3503-b9d9a3a14c74"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:21:57Z","duration":0,"status":"PASSED"},{"id":"EID6a38f016-0175-1000-cd41-bd892a507ce8","parent":{"ref":"EID6a38ef69-0175-1000-3503-b9d9a3a14c74"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:21:57Z","duration":0,"status":"PASSED"},{"id":"EID6a38f016-0175-1000-1256-ab33a3de33cb","parent":{"ref":"EID6a38ef69-0175-1000-3503-b9d9a3a14c74"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:21:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbd00e084-7ec6-407e-be6c-0cdb6a837d23"},{"ref":"EID9b4b0059-b438-4c2f-81ca-7a22700fd8ec"},{"ref":"EIDa6e09382-da18-4662-81c1-5d6b6afd96e3"}]},"parent":{"ref":"EID6a38eaea-0175-1000-3e56-b0d2f9469c12"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:21:57Z","duration":89,"status":"PASSED"},{"id":"EID6a38f017-0175-1000-e88e-b7dae9078e33","attachments":{"attachment":{"ref":"EID7e2c4662-de24-41e2-82ce-b24677b27b21"}},"parent":{"ref":"EID6a38eaea-0175-1000-3e56-b0d2f9469c12"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-27T13:21:57Z","duration":0,"status":"PASSED"},{"id":"EID6a38f021-0175-1000-ccce-5dcf56f2b5a2","attachments":{"attachment":{"ref":"EID545bb6e4-0f90-4bce-924b-9d35e6531324"}},"parent":{"ref":"EID6a38eaea-0175-1000-3e56-b0d2f9469c12"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-27T13:21:57Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6a38cc39-0175-1000-820f-917906350cb2"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:21:56Z","duration":1346,"status":"PASSED"},{"id":"EID6a38f02c-0175-1000-4ce1-577d54eb7e5c","testStepResults":{"TestStepResult":[{"id":"EID6a38f03c-0175-1000-f62b-4eacaf8bc8cf","attachments":{"attachment":[{"ref":"EIDf8bde63b-e065-4b8e-be1a-7c6c8dff8cd1"},{"ref":"EIDcd9a7539-53d2-4fa6-b59b-b6e62db838d7"}]},"parent":{"ref":"EID6a38f02c-0175-1000-4ce1-577d54eb7e5c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:21:57Z","duration":598,"status":"PASSED"},{"id":"EID6a38f2be-0175-1000-e2f4-2f73b6659b59","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a38f6ca-0175-1000-404f-88b9b8f57c38","parent":{"ref":"EID6a38f2be-0175-1000-e2f4-2f73b6659b59"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:21:59Z","duration":0,"status":"PASSED"},{"id":"EID6a38f6ca-0175-1000-8784-7a857c988ca0","parent":{"ref":"EID6a38f2be-0175-1000-e2f4-2f73b6659b59"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:21:59Z","duration":0,"status":"PASSED"},{"id":"EID6a38f6ca-0175-1000-3919-526b0f78a14a","parent":{"ref":"EID6a38f2be-0175-1000-e2f4-2f73b6659b59"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:21:59Z","duration":0,"status":"PASSED"},{"id":"EID6a38f6ca-0175-1000-4c2f-30d6a823e1fd","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a38f2be-0175-1000-e2f4-2f73b6659b59"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:21:59Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID57dbea64-951a-435c-bf78-0c9a3f0a3e6a"},{"ref":"EID95505fad-3bec-496d-8b5a-0a89a5a7a0d3"},{"ref":"EIDb6b7431f-ac6a-4f5d-a75c-9ae19777de0f"}]},"parent":{"ref":"EID6a38f02c-0175-1000-4ce1-577d54eb7e5c"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:21:58Z","duration":926,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a38cc39-0175-1000-820f-917906350cb2"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:21:57Z","duration":1694,"status":"PASSED_MANUAL"},{"id":"EID6a38f6ca-0175-1000-f569-7601eda4a8e5","testStepResults":{"TestStepResult":{"id":"EID6a38f6ca-0175-1000-c557-53d58c913ba6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a38f9e1-0175-1000-c90f-4a0edd25db97","parent":{"ref":"EID6a38f6ca-0175-1000-c557-53d58c913ba6"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:22:00Z","duration":0,"status":"PASSED"},{"id":"EID6a38f9e1-0175-1000-b3ca-945959e35f8c","parent":{"ref":"EID6a38f6ca-0175-1000-c557-53d58c913ba6"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:22:00Z","duration":0,"status":"PASSED"},{"id":"EID6a38f9e1-0175-1000-e74e-3e38c8ca610c","parent":{"ref":"EID6a38f6ca-0175-1000-c557-53d58c913ba6"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:22:00Z","duration":0,"status":"PASSED"},{"id":"EID6a38f9e1-0175-1000-ac87-b7060e70cff3","parent":{"ref":"EID6a38f6ca-0175-1000-c557-53d58c913ba6"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:22:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf39a4ea2-da07-4095-8465-a5e8917367fd"},{"ref":"EID1f48b41a-c4f7-4c3a-a455-58566ddeeb7f"},{"ref":"EID1cb40e94-bd13-4e1e-ba5f-c4094ae67d0c"}]},"parent":{"ref":"EID6a38f6ca-0175-1000-f569-7601eda4a8e5"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:21:59Z","duration":578,"status":"PASSED"}},"parent":{"ref":"EID6a38cc39-0175-1000-820f-917906350cb2"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:21:59Z","duration":798,"status":"PASSED"},{"id":"EID6a38f9e8-0175-1000-e8a8-f03e408bcac5","testStepResults":{"TestStepResult":{"id":"EID6a38f9e8-0175-1000-995c-5af551b8b744","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a38fc3c-0175-1000-82da-0d370b9a1608","parent":{"ref":"EID6a38f9e8-0175-1000-995c-5af551b8b744"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:22:00Z","duration":0,"status":"PASSED"},{"id":"EID6a38fc3c-0175-1000-3046-0693147a3d22","parent":{"ref":"EID6a38f9e8-0175-1000-995c-5af551b8b744"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:22:00Z","duration":0,"status":"PASSED"},{"id":"EID6a38fc3c-0175-1000-6fa3-831fb2c05917","parent":{"ref":"EID6a38f9e8-0175-1000-995c-5af551b8b744"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:22:00Z","duration":0,"status":"PASSED"},{"id":"EID6a38fc3c-0175-1000-17dc-9ec7c64398ba","parent":{"ref":"EID6a38f9e8-0175-1000-995c-5af551b8b744"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:22:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID117d20ec-3702-42fd-a090-e7a2b1d618e5"},{"ref":"EID56398354-38c8-4377-8a62-cec9d76bac1c"},{"ref":"EIDd45c6e9c-844b-48f7-a9ee-eacbe842fb3b"}]},"parent":{"ref":"EID6a38f9e8-0175-1000-e8a8-f03e408bcac5"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:22:00Z","duration":491,"status":"PASSED"}},"parent":{"ref":"EID6a38cc39-0175-1000-820f-917906350cb2"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:22:00Z","duration":596,"status":"PASSED"},{"id":"EID6a38fc3c-0175-1000-82a0-c697fe4a8fa4","testStepResults":{"TestStepResult":[{"id":"EID6a38fc3c-0175-1000-0aca-ac5c2e2f745f","attachments":{"attachment":[{"ref":"EID83c2f604-5c4b-48fc-b5ff-e140c464062a"},{"ref":"EIDa8c1b13d-4841-4647-80b3-b5cae63f9e0d"},{"ref":"EID6e86b229-a232-4fc3-a66c-de060b666600"},{"ref":"EID8c8b25fb-2ab3-46fb-8218-0f4039656738"},{"ref":"EID5ac8c777-f469-49a6-a31e-08d695bc19a2"},{"ref":"EID079f7f4f-861a-43b4-b714-9b72c8dde2f9"},{"ref":"EID922b4a86-1992-4102-b3e5-ba48fee23976"},{"ref":"EIDd066b6ab-9725-4050-9484-99c78726f23d"},{"ref":"EID1f96e6c8-fdab-4648-b88b-c11b2205e4e6"},{"ref":"EID03d8117b-fb53-41d2-8cbd-a34f66ad09a3"},{"ref":"EID4e0383bf-3fdd-4a37-835e-d70415ce91ab"},{"ref":"EIDa324c22c-a28d-45fe-afe4-7a99e4ee802f"}]},"parent":{"ref":"EID6a38fc3c-0175-1000-82a0-c697fe4a8fa4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:22:00Z","duration":1363,"status":"PASSED"},{"id":"EID6a390227-0175-1000-3dd1-30e3a9173a83","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a390c7c-0175-1000-3dba-139600dc7655","parent":{"ref":"EID6a390227-0175-1000-3dd1-30e3a9173a83"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-27T13:22:05Z","duration":0,"status":"PASSED"},{"id":"EID6a390c7c-0175-1000-0c5b-ba38edf6c6a1","parent":{"ref":"EID6a390227-0175-1000-3dd1-30e3a9173a83"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-27T13:22:05Z","duration":0,"status":"PASSED"},{"id":"EID6a390c7c-0175-1000-c862-2224c21402ec","parent":{"ref":"EID6a390227-0175-1000-3dd1-30e3a9173a83"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-27T13:22:05Z","duration":0,"status":"PASSED"},{"id":"EID6a390c7c-0175-1000-6b5d-943a7025ef34","parent":{"ref":"EID6a390227-0175-1000-3dd1-30e3a9173a83"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-27T13:22:05Z","duration":0,"status":"PASSED"},{"id":"EID6a390c7c-0175-1000-35ce-17444a528bd0","parent":{"ref":"EID6a390227-0175-1000-3dd1-30e3a9173a83"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-27T13:22:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbc67bf72-a7a7-4ea5-8834-e58383519bb1"},{"ref":"EID878b11d3-7aa4-4662-9e75-a82f4d4f9975"},{"ref":"EIDccde368a-84c6-4399-942f-b76b8c64d0e1"}]},"parent":{"ref":"EID6a38fc3c-0175-1000-82a0-c697fe4a8fa4"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-27T13:22:02Z","duration":2484,"status":"PASSED"}]},"parent":{"ref":"EID6a38cc39-0175-1000-820f-917906350cb2"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:22:00Z","duration":4160,"status":"PASSED"},{"id":"EID6a390c7c-0175-1000-35a9-68bf22cf8f33","testStepResults":{"TestStepResult":{"id":"EID6a390c7c-0175-1000-67c1-8a17e8b5009f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3915f3-0175-1000-8975-40d6c1559609","parent":{"ref":"EID6a390c7c-0175-1000-67c1-8a17e8b5009f"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3915f3-0175-1000-0792-525be5f434bc","parent":{"ref":"EID6a390c7c-0175-1000-67c1-8a17e8b5009f"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3915f3-0175-1000-2251-580f99e81384","parent":{"ref":"EID6a390c7c-0175-1000-67c1-8a17e8b5009f"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3915f3-0175-1000-1a25-d73e8e504e62","parent":{"ref":"EID6a390c7c-0175-1000-67c1-8a17e8b5009f"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc53c310d-6122-47e3-bb21-e195e6b95d41"},{"ref":"EID6c4c6820-3042-4024-af19-e7c032a230ee"},{"ref":"EID4bfc15f1-9474-4b33-8959-125d7d262ea4"}]},"parent":{"ref":"EID6a390c7c-0175-1000-35a9-68bf22cf8f33"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:22:05Z","duration":2329,"status":"PASSED"}},"parent":{"ref":"EID6a38cc39-0175-1000-820f-917906350cb2"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:22:05Z","duration":2433,"status":"PASSED"},{"id":"EID6a3915fd-0175-1000-d6a2-5ff488ec8f13","testStepResults":{"TestStepResult":{"id":"EID6a3915fd-0175-1000-5f39-e88b9bdb92fb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3917cf-0175-1000-427d-f7d72d271e30","parent":{"ref":"EID6a3915fd-0175-1000-5f39-e88b9bdb92fb"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3917cf-0175-1000-bbff-860b31b524b2","parent":{"ref":"EID6a3915fd-0175-1000-5f39-e88b9bdb92fb"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3917cf-0175-1000-a270-5cd065b9ee1b","parent":{"ref":"EID6a3915fd-0175-1000-5f39-e88b9bdb92fb"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3917cf-0175-1000-8090-3926b8b98547","parent":{"ref":"EID6a3915fd-0175-1000-5f39-e88b9bdb92fb"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3917cf-0175-1000-d39e-9603db2734c8","parent":{"ref":"EID6a3915fd-0175-1000-5f39-e88b9bdb92fb"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3917cf-0175-1000-352c-e4d01037f221","parent":{"ref":"EID6a3915fd-0175-1000-5f39-e88b9bdb92fb"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:22:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbde01015-3269-4963-bef5-aade0c916c2e"},{"ref":"EIDdbc1271c-c3a1-4983-8951-be0a133020bc"},{"ref":"EIDbd848bad-d1a4-4a1d-9495-c302eb560efc"}]},"parent":{"ref":"EID6a3915fd-0175-1000-d6a2-5ff488ec8f13"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:22:07Z","duration":196,"status":"PASSED"}},"parent":{"ref":"EID6a38cc39-0175-1000-820f-917906350cb2"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:22:07Z","duration":466,"status":"PASSED"},{"id":"EID6a391820-0175-1000-3c28-a129a6ccbd19","testStepResults":{"TestStepResult":{"id":"EID6a391820-0175-1000-41bf-2fa23698eda9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3919a5-0175-1000-aae3-6349900f824f","parent":{"ref":"EID6a391820-0175-1000-41bf-2fa23698eda9"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3919a5-0175-1000-0e04-ec45efd389d5","parent":{"ref":"EID6a391820-0175-1000-41bf-2fa23698eda9"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3919a5-0175-1000-b0ba-61c6eee10ebe","parent":{"ref":"EID6a391820-0175-1000-41bf-2fa23698eda9"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3919a5-0175-1000-ad5f-2417f7544802","parent":{"ref":"EID6a391820-0175-1000-41bf-2fa23698eda9"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3919a5-0175-1000-7c85-87a027af91c0","parent":{"ref":"EID6a391820-0175-1000-41bf-2fa23698eda9"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3919a5-0175-1000-2cb4-a80a01d1a206","parent":{"ref":"EID6a391820-0175-1000-41bf-2fa23698eda9"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:22:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDef466c43-e42b-4e54-893e-0e5d0771eb2b"},{"ref":"EIDa302d1c2-2815-4609-9f28-aae0028b2737"},{"ref":"EID414d2568-6c04-48bb-9943-8c4b231d35fe"}]},"parent":{"ref":"EID6a391820-0175-1000-3c28-a129a6ccbd19"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:22:08Z","duration":250,"status":"PASSED"}},"parent":{"ref":"EID6a38cc39-0175-1000-820f-917906350cb2"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:22:08Z","duration":389,"status":"PASSED"},{"id":"EID6a3919a5-0175-1000-4c1f-7af2306ce0eb","testStepResults":{"TestStepResult":{"id":"EID6a3919a5-0175-1000-b572-4bc696b79085","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a391bfa-0175-1000-474d-46c16067d886","parent":{"ref":"EID6a3919a5-0175-1000-b572-4bc696b79085"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"},{"id":"EID6a391bfa-0175-1000-dcb1-2f1a8994a283","parent":{"ref":"EID6a3919a5-0175-1000-b572-4bc696b79085"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"},{"id":"EID6a391bfa-0175-1000-4ad0-5cf76876cf38","parent":{"ref":"EID6a3919a5-0175-1000-b572-4bc696b79085"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"},{"id":"EID6a391bfa-0175-1000-332d-b9915f887a3b","parent":{"ref":"EID6a3919a5-0175-1000-b572-4bc696b79085"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:22:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcf63333b-761f-4f96-9fd0-ccaec8f43b68"},{"ref":"EID279dac73-5274-431f-aaf1-b191a5188986"},{"ref":"EID3f5c1cf7-f204-4b55-a89d-4b5ffb5a6505"}]},"parent":{"ref":"EID6a3919a5-0175-1000-4c1f-7af2306ce0eb"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:22:08Z","duration":457,"status":"PASSED"}},"parent":{"ref":"EID6a38cc39-0175-1000-820f-917906350cb2"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:22:08Z","duration":598,"status":"PASSED"},{"id":"EID6a391bfb-0175-1000-4808-34ac1da91102","testStepResults":{"TestStepResult":[{"id":"EID6a391c0c-0175-1000-f840-2c5d0c5cc32e","attachments":{"attachment":[{"ref":"EID959b078a-ff9e-477d-856f-570796745729"},{"ref":"EID3e9acefe-1ff8-4eb8-98de-935b60eda911"},{"ref":"EID142a551e-f715-40c2-b91c-248e636ab0f1"},{"ref":"EIDd87196be-e67b-4c57-83de-e998699ff77d"}]},"parent":{"ref":"EID6a391bfb-0175-1000-4808-34ac1da91102"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:22:09Z","duration":1993,"status":"PASSED"},{"id":"EID6a392408-0175-1000-6819-08a759a0956e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a392720-0175-1000-49b1-ee7c5beef57e","parent":{"ref":"EID6a392408-0175-1000-6819-08a759a0956e"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a392720-0175-1000-dce1-7a23a8146508","parent":{"ref":"EID6a392408-0175-1000-6819-08a759a0956e"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a392720-0175-1000-4a58-f718d0227a7b","parent":{"ref":"EID6a392408-0175-1000-6819-08a759a0956e"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"},{"id":"EID6a392720-0175-1000-fe61-1bd68c0f620d","parent":{"ref":"EID6a392408-0175-1000-6819-08a759a0956e"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:22:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID53090a6b-9294-4d95-a6a0-02638e2c00e6"},{"ref":"EID94ce53c1-2a22-47bc-8589-5587c2a042dd"},{"ref":"EID4e61ada5-d330-4eb1-8353-b8d56cc474a3"}]},"parent":{"ref":"EID6a391bfb-0175-1000-4808-34ac1da91102"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:22:11Z","duration":611,"status":"PASSED"}]},"parent":{"ref":"EID6a38cc39-0175-1000-820f-917906350cb2"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:22:09Z","duration":2854,"status":"PASSED"},{"id":"EID6a392721-0175-1000-2414-fa324ef8067e","testStepResults":{"TestStepResult":{"id":"EID6a392721-0175-1000-0cce-292f90866862","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3928c6-0175-1000-0560-3b7b58e03bf5","parent":{"ref":"EID6a392721-0175-1000-0cce-292f90866862"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3928c6-0175-1000-3eb8-ede0021bf8c7","parent":{"ref":"EID6a392721-0175-1000-0cce-292f90866862"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3928c6-0175-1000-f160-2b81a22cebbf","parent":{"ref":"EID6a392721-0175-1000-0cce-292f90866862"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3928c6-0175-1000-fb7f-a19c7a96e34c","parent":{"ref":"EID6a392721-0175-1000-0cce-292f90866862"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8731c67a-0084-4dcb-b4d4-684a9e417795"},{"ref":"EIDf422c124-4fca-414e-af63-7a41dc6b9e69"},{"ref":"EID95486dea-ec68-4764-a5a8-aec57b9b313e"}]},"parent":{"ref":"EID6a392721-0175-1000-2414-fa324ef8067e"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:22:11Z","duration":315,"status":"PASSED"}},"parent":{"ref":"EID6a38cc39-0175-1000-820f-917906350cb2"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:22:11Z","duration":441,"status":"PASSED"},{"id":"EID6a3928da-0175-1000-7980-331364e586ba","testStepResults":{"TestStepResult":[{"id":"EID6a3928da-0175-1000-9d3d-bc2164f4a503","parent":{"ref":"EID6a3928da-0175-1000-7980-331364e586ba"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3928db-0175-1000-f363-50dcf7789499","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a392b30-0175-1000-6e8e-05775a576cf6","parent":{"ref":"EID6a3928db-0175-1000-f363-50dcf7789499"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a392b30-0175-1000-0b9f-6d54a20d43fa","parent":{"ref":"EID6a3928db-0175-1000-f363-50dcf7789499"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a392b30-0175-1000-f026-e678e79afc5b","parent":{"ref":"EID6a3928db-0175-1000-f363-50dcf7789499"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a392b30-0175-1000-6f7f-88d91cd567b7","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6a3928db-0175-1000-f363-50dcf7789499"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDe0bb1ad1-5f06-4df0-8acc-96bf8fcc7273"},{"ref":"EIDf83e1a57-eb15-4785-a174-9195fbf82b57"},{"ref":"EIDc9783a84-b2bf-40d9-9202-306659fa1d73"}]},"parent":{"ref":"EID6a3928da-0175-1000-7980-331364e586ba"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:22:12Z","duration":380,"status":"FAILED"}]},"parent":{"ref":"EID6a38cc39-0175-1000-820f-917906350cb2"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:22:12Z","duration":599,"status":"FAILED"}]},"parent":{"ref":"EIDb3b016fb-db8a-41e1-8ef3-0654331882dd"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:21:48Z","duration":24312,"status":"FAILED"},{"id":"EID6a392b31-0175-1000-accc-bd92a05ad606","testCaseResults":{"TestCaseResult":[{"id":"EID6a392b31-0175-1000-cc38-2818f6f1757b","testStepResults":{"TestStepResult":[{"id":"EID6a392b31-0175-1000-e78e-3bccc1e7711e","parent":{"ref":"EID6a392b31-0175-1000-cc38-2818f6f1757b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:22:12Z","duration":0,"status":"PASSED"},{"id":"EID6a392b31-0175-1000-52cb-a2b1947d5998","parent":{"ref":"EID6a392b31-0175-1000-cc38-2818f6f1757b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:22:12Z","duration":315,"status":"PASSED"},{"id":"EID6a392b31-0175-1000-6cfb-0e09664f6313","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a392ccf-0175-1000-f392-381ac4763418","parent":{"ref":"EID6a392b31-0175-1000-6cfb-0e09664f6313"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"PASSED"},{"id":"EID6a392ccf-0175-1000-7445-5687f07cb4cf","parent":{"ref":"EID6a392b31-0175-1000-6cfb-0e09664f6313"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"PASSED"},{"id":"EID6a392ccf-0175-1000-6534-0ec3c1965311","parent":{"ref":"EID6a392b31-0175-1000-6cfb-0e09664f6313"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf2526174-2252-4f52-b051-fc41ef1a4451"},{"ref":"EIDc1314ce9-317c-4612-818b-c34be7cbd9f8"},{"ref":"EID1fab42e0-0d12-4e22-b33e-d519a2f84152"}]},"parent":{"ref":"EID6a392b31-0175-1000-cc38-2818f6f1757b"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:22:12Z","duration":283,"status":"PASSED"},{"id":"EID6a392ccf-0175-1000-3d42-bab1edb5d72b","attachments":{"attachment":{"ref":"EIDc8d6904d-1636-4d6f-8b6e-03d8d89ee3c9"}},"parent":{"ref":"EID6a392b31-0175-1000-cc38-2818f6f1757b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"PASSED"},{"id":"EID6a392cd9-0175-1000-f721-817bf545fe3d","parent":{"ref":"EID6a392b31-0175-1000-cc38-2818f6f1757b"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:22:13Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6a392b31-0175-1000-accc-bd92a05ad606"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:22:12Z","duration":446,"status":"PASSED"},{"id":"EID6a392cef-0175-1000-6c4a-0915d9d4eaa4","testStepResults":{"TestStepResult":[{"id":"EID6a392d02-0175-1000-f978-5f120e94e7c9","parent":{"ref":"EID6a392cef-0175-1000-6c4a-0915d9d4eaa4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:22:13Z","duration":4084,"status":"PASSED"},{"id":"EID6a392d02-0175-1000-c936-bbada97f4e4d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a392e2e-0175-1000-e20b-003f0a19566d","parent":{"ref":"EID6a392d02-0175-1000-c936-bbada97f4e4d"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"PASSED"},{"id":"EID6a392e2e-0175-1000-3bab-da6793d2aa07","parent":{"ref":"EID6a392d02-0175-1000-c936-bbada97f4e4d"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"PASSED"},{"id":"EID6a392e2e-0175-1000-2228-57c30fcf5cbc","parent":{"ref":"EID6a392d02-0175-1000-c936-bbada97f4e4d"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"PASSED"},{"id":"EID6a392e2e-0175-1000-a844-01e09a9be7f0","parent":{"ref":"EID6a392d02-0175-1000-c936-bbada97f4e4d"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"PASSED"},{"id":"EID6a392e2e-0175-1000-1912-60cc92e3b1bd","parent":{"ref":"EID6a392d02-0175-1000-c936-bbada97f4e4d"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:22:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6048f366-a8d7-4fe3-b96c-72bde3d6ac9e"},{"ref":"EID8554ee11-f7da-4bfb-84f2-3c68fa3b5596"},{"ref":"EID1eae1a15-4e23-48ed-a4b2-3a9ebdf7acb0"}]},"parent":{"ref":"EID6a392cef-0175-1000-6c4a-0915d9d4eaa4"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:22:13Z","duration":214,"status":"PASSED"}]},"parent":{"ref":"EID6a392b31-0175-1000-accc-bd92a05ad606"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:22:13Z","duration":319,"status":"PASSED"},{"id":"EID6a392e2e-0175-1000-b8f4-9272c87fd119","testStepResults":{"TestStepResult":[{"id":"EID6a392e2e-0175-1000-9602-8f9eb9fafeb9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a393262-0175-1000-eac6-4b70fec4417b","parent":{"ref":"EID6a392e2e-0175-1000-9602-8f9eb9fafeb9"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:22:14Z","duration":0,"status":"PASSED"},{"id":"EID6a393262-0175-1000-b872-2870ae3fb656","parent":{"ref":"EID6a392e2e-0175-1000-9602-8f9eb9fafeb9"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:22:14Z","duration":0,"status":"PASSED"},{"id":"EID6a393262-0175-1000-4465-d6afa3e4272a","parent":{"ref":"EID6a392e2e-0175-1000-9602-8f9eb9fafeb9"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:22:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5dde447c-8d9d-4c8e-814a-02295616a636"},{"ref":"EID9da127e2-9c92-4d01-b613-f89863e57eec"},{"ref":"EID2b9f097d-77b9-4ec0-9b4d-dec99557000c"}]},"parent":{"ref":"EID6a392e2e-0175-1000-b8f4-9272c87fd119"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:22:13Z","duration":1010,"status":"PASSED"},{"id":"EID6a393262-0175-1000-9856-a096418dc8e4","attachments":{"attachment":{"ref":"EID8d311a99-0e8f-4e7d-8d18-ed463fb90fa5"}},"parent":{"ref":"EID6a392e2e-0175-1000-b8f4-9272c87fd119"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-27T13:22:14Z","duration":1,"status":"PASSED"},{"id":"EID6a39328b-0175-1000-7033-084a3007c0ca","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39359d-0175-1000-4860-6ddd39b4c9f6","parent":{"ref":"EID6a39328b-0175-1000-7033-084a3007c0ca"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-27T13:22:15Z","duration":0,"status":"PASSED"},{"id":"EID6a39359d-0175-1000-319d-d69dc81dcf42","parent":{"ref":"EID6a39328b-0175-1000-7033-084a3007c0ca"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-27T13:22:15Z","duration":0,"status":"PASSED"},{"id":"EID6a39359d-0175-1000-6c4c-e8391d3e5b34","parent":{"ref":"EID6a39328b-0175-1000-7033-084a3007c0ca"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-27T13:22:15Z","duration":0,"status":"PASSED"},{"id":"EID6a39359d-0175-1000-2d0c-4e9a1ae9aeb0","parent":{"ref":"EID6a39328b-0175-1000-7033-084a3007c0ca"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-27T13:22:15Z","duration":0,"status":"PASSED"},{"id":"EID6a39359d-0175-1000-9b42-21a456aff070","parent":{"ref":"EID6a39328b-0175-1000-7033-084a3007c0ca"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-27T13:22:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1a804c6c-22f4-4da5-9606-a6f45a100f08"},{"ref":"EID16334b3a-a201-4a66-af33-cd3de6309682"},{"ref":"EIDb083ac95-e38c-4268-8a30-96cc6a466608"}]},"parent":{"ref":"EID6a392e2e-0175-1000-b8f4-9272c87fd119"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-27T13:22:14Z","duration":684,"status":"PASSED"}]},"parent":{"ref":"EID6a392b31-0175-1000-accc-bd92a05ad606"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:22:13Z","duration":1903,"status":"PASSED"},{"id":"EID6a39359d-0175-1000-1b75-083c00258a9c","testStepResults":{"TestStepResult":[{"id":"EID6a39359d-0175-1000-1435-d83ef31c40f6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a393728-0175-1000-eb8d-df54e017216f","parent":{"ref":"EID6a39359d-0175-1000-1435-d83ef31c40f6"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:22:15Z","duration":0,"status":"PASSED"},{"id":"EID6a393728-0175-1000-46ce-e6bcc949fa27","parent":{"ref":"EID6a39359d-0175-1000-1435-d83ef31c40f6"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:22:15Z","duration":0,"status":"PASSED"},{"id":"EID6a393728-0175-1000-2a26-f48f4ce8cb25","parent":{"ref":"EID6a39359d-0175-1000-1435-d83ef31c40f6"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:22:15Z","duration":0,"status":"PASSED"},{"id":"EID6a393729-0175-1000-6042-d701ecfa8748","parent":{"ref":"EID6a39359d-0175-1000-1435-d83ef31c40f6"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:22:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9d085b1c-2eba-4557-8f80-817541205346"},{"ref":"EIDc093830a-8666-4864-8657-5aff2e7e4e1d"},{"ref":"EIDbab92953-53dc-4236-8c7f-8ff19197fd47"}]},"parent":{"ref":"EID6a39359d-0175-1000-1b75-083c00258a9c"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:22:15Z","duration":323,"status":"PASSED"},{"id":"EID6a393729-0175-1000-be46-3ab20dffb741","attachments":{"attachment":{"ref":"EIDfe5df4ae-091e-4635-9e18-197027738f87"}},"parent":{"ref":"EID6a39359d-0175-1000-1b75-083c00258a9c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-27T13:22:15Z","duration":1,"status":"PASSED"},{"id":"EID6a393736-0175-1000-4fa7-7b067f350297","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a393929-0175-1000-8418-1421f3a39601","parent":{"ref":"EID6a393736-0175-1000-4fa7-7b067f350297"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-27T13:22:16Z","duration":0,"status":"PASSED"},{"id":"EID6a393929-0175-1000-9a4a-afff0e26a39f","parent":{"ref":"EID6a393736-0175-1000-4fa7-7b067f350297"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-27T13:22:16Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4851959c-e6b4-49cc-9c04-fa05d8ed68ff"},{"ref":"EIDa403e95d-b989-44c7-840d-52ec40c2eec8"}]},"parent":{"ref":"EID6a39359d-0175-1000-1b75-083c00258a9c"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-27T13:22:15Z","duration":494,"status":"PASSED"},{"id":"EID6a393929-0175-1000-500d-c4ab5ddb20d3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a393bd3-0175-1000-4d20-afbf3e6b3ecd","parent":{"ref":"EID6a393929-0175-1000-500d-c4ab5ddb20d3"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-27T13:22:17Z","duration":0,"status":"PASSED"},{"id":"EID6a393bd3-0175-1000-19ca-bb8167a43607","parent":{"ref":"EID6a393929-0175-1000-500d-c4ab5ddb20d3"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-27T13:22:17Z","duration":0,"status":"PASSED"},{"id":"EID6a393bd3-0175-1000-6e7b-9459a9a5aa42","parent":{"ref":"EID6a393929-0175-1000-500d-c4ab5ddb20d3"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-27T13:22:17Z","duration":0,"status":"PASSED"},{"id":"EID6a393bd3-0175-1000-790d-f98106e57bc5","parent":{"ref":"EID6a393929-0175-1000-500d-c4ab5ddb20d3"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-27T13:22:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe06576c1-7835-49d9-a618-0bb8166a277c"},{"ref":"EIDcc73cb4e-cb96-4b42-b714-1f6a294f5278"},{"ref":"EIDbda6db02-1d70-4311-9b16-679ef8409a9a"}]},"parent":{"ref":"EID6a39359d-0175-1000-1b75-083c00258a9c"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-27T13:22:16Z","duration":608,"status":"PASSED"}]},"parent":{"ref":"EID6a392b31-0175-1000-accc-bd92a05ad606"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:22:15Z","duration":1598,"status":"PASSED"},{"id":"EID6a393bdb-0175-1000-8144-f20b14791be9","testStepResults":{"TestStepResult":{"id":"EID6a393be4-0175-1000-bdd5-17bd44e2be40","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a393e99-0175-1000-0b1c-ab570571d4cc","parent":{"ref":"EID6a393be4-0175-1000-bdd5-17bd44e2be40"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:22:17Z","duration":0,"status":"PASSED"},{"id":"EID6a393e99-0175-1000-04ca-b23689dc7d2b","parent":{"ref":"EID6a393be4-0175-1000-bdd5-17bd44e2be40"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:22:17Z","duration":0,"status":"PASSED"},{"id":"EID6a393e99-0175-1000-1f4e-6372a07cada3","parent":{"ref":"EID6a393be4-0175-1000-bdd5-17bd44e2be40"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:22:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfd034d31-55f9-459f-bdef-aae178062beb"},{"ref":"EIDc8511578-3c6f-474a-a339-aa5738960b1f"},{"ref":"EIDe9275f93-b5a4-4618-a542-4b8915839349"}]},"parent":{"ref":"EID6a393bdb-0175-1000-8144-f20b14791be9"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:22:17Z","duration":628,"status":"PASSED"}},"parent":{"ref":"EID6a392b31-0175-1000-accc-bd92a05ad606"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:22:17Z","duration":702,"status":"PASSED"},{"id":"EID6a393e99-0175-1000-01ea-3aeb14165c6c","testStepResults":{"TestStepResult":{"id":"EID6a393e99-0175-1000-d3c1-32e18c7258ae","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39419a-0175-1000-615f-79124e076c0f","parent":{"ref":"EID6a393e99-0175-1000-d3c1-32e18c7258ae"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:22:18Z","duration":0,"status":"PASSED"},{"id":"EID6a39419a-0175-1000-411b-8261bb346cc4","parent":{"ref":"EID6a393e99-0175-1000-d3c1-32e18c7258ae"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:22:18Z","duration":0,"status":"PASSED"},{"id":"EID6a39419a-0175-1000-a248-38a53c327b7c","parent":{"ref":"EID6a393e99-0175-1000-d3c1-32e18c7258ae"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:22:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3e4a9989-1bc9-4cb6-9084-866d237f235a"},{"ref":"EID2c0f4f8c-05e0-45bc-8888-5d1fc30f7c57"},{"ref":"EID7356b801-0d3a-41c3-a29f-9527c15ea945"}]},"parent":{"ref":"EID6a393e99-0175-1000-01ea-3aeb14165c6c"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:22:17Z","duration":711,"status":"PASSED"}},"parent":{"ref":"EID6a392b31-0175-1000-accc-bd92a05ad606"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:22:17Z","duration":780,"status":"PASSED"},{"id":"EID6a3941a5-0175-1000-6e8f-3007ae278daa","testStepResults":{"TestStepResult":{"id":"EID6a3941a5-0175-1000-0462-ee1e8853ebec","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a394419-0175-1000-da60-62a951b745a8","parent":{"ref":"EID6a3941a5-0175-1000-0462-ee1e8853ebec"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:22:19Z","duration":0,"status":"PASSED"},{"id":"EID6a394419-0175-1000-611d-52875875b619","parent":{"ref":"EID6a3941a5-0175-1000-0462-ee1e8853ebec"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:22:19Z","duration":0,"status":"PASSED"},{"id":"EID6a394419-0175-1000-647b-af7bb0456459","parent":{"ref":"EID6a3941a5-0175-1000-0462-ee1e8853ebec"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:22:19Z","duration":0,"status":"PASSED"},{"id":"EID6a394419-0175-1000-ae22-3bacac519734","parent":{"ref":"EID6a3941a5-0175-1000-0462-ee1e8853ebec"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:22:19Z","duration":0,"status":"PASSED"},{"id":"EID6a394419-0175-1000-4e96-75fc80aff6c3","parent":{"ref":"EID6a3941a5-0175-1000-0462-ee1e8853ebec"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:22:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDca1c7437-25fa-49ee-9c7e-a7d9906ab68c"},{"ref":"EIDe92d2760-f3cc-4bb9-a541-88704479fedb"},{"ref":"EID68754c66-ab9e-44b0-bee4-84b4fb5f5e0e"}]},"parent":{"ref":"EID6a3941a5-0175-1000-6e8f-3007ae278daa"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:22:18Z","duration":532,"status":"PASSED"}},"parent":{"ref":"EID6a392b31-0175-1000-accc-bd92a05ad606"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:22:18Z","duration":628,"status":"PASSED"},{"id":"EID6a394419-0175-1000-13b6-34b32574991c","testStepResults":{"TestStepResult":{"id":"EID6a394419-0175-1000-079e-961343b62ca6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39475c-0175-1000-5826-9ace161669cc","parent":{"ref":"EID6a394419-0175-1000-079e-961343b62ca6"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:22:20Z","duration":0,"status":"PASSED"},{"id":"EID6a39475c-0175-1000-2cec-e4741f35bf18","parent":{"ref":"EID6a394419-0175-1000-079e-961343b62ca6"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:22:20Z","duration":0,"status":"PASSED"},{"id":"EID6a39475d-0175-1000-4b87-424e5aca3614","parent":{"ref":"EID6a394419-0175-1000-079e-961343b62ca6"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:22:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3f4bc5a5-49cb-4462-804c-9d594abe86f7"},{"ref":"EIDedbedccc-2b5e-4bdf-a541-9a8e65d6cba2"},{"ref":"EID0b921614-f64b-4e85-a28e-b32b2d201c6a"}]},"parent":{"ref":"EID6a394419-0175-1000-13b6-34b32574991c"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:22:19Z","duration":777,"status":"PASSED"}},"parent":{"ref":"EID6a392b31-0175-1000-accc-bd92a05ad606"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:22:19Z","duration":853,"status":"PASSED"},{"id":"EID6a39476e-0175-1000-d500-0147a3bfac51","testStepResults":{"TestStepResult":{"id":"EID6a39476e-0175-1000-8836-e7dab355fb8b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a394913-0175-1000-fbbb-750bf19c5cc3","parent":{"ref":"EID6a39476e-0175-1000-8836-e7dab355fb8b"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:22:20Z","duration":0,"status":"PASSED"},{"id":"EID6a394913-0175-1000-7562-f200125885c3","parent":{"ref":"EID6a39476e-0175-1000-8836-e7dab355fb8b"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:22:20Z","duration":0,"status":"PASSED"},{"id":"EID6a394913-0175-1000-1181-37b96344856e","parent":{"ref":"EID6a39476e-0175-1000-8836-e7dab355fb8b"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:22:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbb0dbb14-2538-4742-9a04-07dbb051d4ac"},{"ref":"EID59876664-95b0-4c55-9c03-34f40dd46059"},{"ref":"EIDaf22884f-886c-402f-b716-49e0a563cc38"}]},"parent":{"ref":"EID6a39476e-0175-1000-d500-0147a3bfac51"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:22:20Z","duration":339,"status":"PASSED"}},"parent":{"ref":"EID6a392b31-0175-1000-accc-bd92a05ad606"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:22:20Z","duration":421,"status":"PASSED"},{"id":"EID6a394914-0175-1000-f547-46ed31358abe","testStepResults":{"TestStepResult":{"id":"EID6a394920-0175-1000-eb3a-0623add55b71","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a394c8e-0175-1000-816f-3a77d1429aa1","parent":{"ref":"EID6a394920-0175-1000-eb3a-0623add55b71"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:22:21Z","duration":0,"status":"PASSED"},{"id":"EID6a394c8e-0175-1000-f3c3-29a7d15bece3","parent":{"ref":"EID6a394920-0175-1000-eb3a-0623add55b71"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:22:21Z","duration":0,"status":"PASSED"},{"id":"EID6a394c8e-0175-1000-e808-d8649ba6d6a7","parent":{"ref":"EID6a394920-0175-1000-eb3a-0623add55b71"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:22:21Z","duration":0,"status":"PASSED"},{"id":"EID6a394c8e-0175-1000-bd7e-9600d43cb2e3","parent":{"ref":"EID6a394920-0175-1000-eb3a-0623add55b71"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:22:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID81c13ed8-3dce-45a8-9434-130d768ffd11"},{"ref":"EID3944539d-fb41-4af1-8408-74164e54b96f"},{"ref":"EIDdfcc9074-5334-45b4-9479-19e8b144b086"}]},"parent":{"ref":"EID6a394914-0175-1000-f547-46ed31358abe"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:22:20Z","duration":805,"status":"PASSED"}},"parent":{"ref":"EID6a392b31-0175-1000-accc-bd92a05ad606"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:22:20Z","duration":907,"status":"PASSED"},{"id":"EID6a394ca0-0175-1000-26ac-0ee5e20aa358","testStepResults":{"TestStepResult":{"id":"EID6a394ca0-0175-1000-472c-817a0bb9b0ed","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a394f34-0175-1000-850b-7d646a53c9f9","parent":{"ref":"EID6a394ca0-0175-1000-472c-817a0bb9b0ed"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:22:22Z","duration":0,"status":"PASSED"},{"id":"EID6a394f34-0175-1000-3003-db4b20eab56f","parent":{"ref":"EID6a394ca0-0175-1000-472c-817a0bb9b0ed"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:22:22Z","duration":0,"status":"PASSED"},{"id":"EID6a394f34-0175-1000-9d1c-eb7f727dbd46","parent":{"ref":"EID6a394ca0-0175-1000-472c-817a0bb9b0ed"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:22:22Z","duration":0,"status":"PASSED"},{"id":"EID6a394f34-0175-1000-1671-443c6aa08f9b","parent":{"ref":"EID6a394ca0-0175-1000-472c-817a0bb9b0ed"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:22:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb4a6bfe9-9017-4c10-b806-e7452ab00616"},{"ref":"EID453abcdc-77ae-41e1-b32e-15b4346d695a"},{"ref":"EIDe5ab0d5b-2d0b-4c64-85b4-5eb1f803bec7"}]},"parent":{"ref":"EID6a394ca0-0175-1000-26ac-0ee5e20aa358"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:22:21Z","duration":523,"status":"PASSED"}},"parent":{"ref":"EID6a392b31-0175-1000-accc-bd92a05ad606"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:22:21Z","duration":660,"status":"PASSED"},{"id":"EID6a394f34-0175-1000-3aa3-ac52ae64f55e","testStepResults":{"TestStepResult":[{"id":"EID6a394f34-0175-1000-b93a-6d8d02e54e7f","parent":{"ref":"EID6a394f34-0175-1000-3aa3-ac52ae64f55e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:22:22Z","duration":0,"status":"PASSED"},{"id":"EID6a394f34-0175-1000-39e7-71fcd35796fe","parent":{"ref":"EID6a394f34-0175-1000-3aa3-ac52ae64f55e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:22:22Z","duration":4577,"status":"PASSED"},{"id":"EID6a394f3e-0175-1000-963e-0218ef58dd52","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a395094-0175-1000-e106-555d73acd9f1","parent":{"ref":"EID6a394f3e-0175-1000-963e-0218ef58dd52"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:22:22Z","duration":0,"status":"PASSED"},{"id":"EID6a395094-0175-1000-7ae6-7db817ca910f","parent":{"ref":"EID6a394f3e-0175-1000-963e-0218ef58dd52"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:22:22Z","duration":0,"status":"PASSED"},{"id":"EID6a395094-0175-1000-b0f9-161c4ac7e2c7","parent":{"ref":"EID6a394f3e-0175-1000-963e-0218ef58dd52"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:22:22Z","duration":0,"status":"PASSED"},{"id":"EID6a395094-0175-1000-3ae8-96e4c3657b47","parent":{"ref":"EID6a394f3e-0175-1000-963e-0218ef58dd52"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:22:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID67c29f53-f0ac-4e24-bf1e-62cefa4dc4aa"},{"ref":"EID33ce3287-d5d9-494f-9dad-2f1a7a94d62a"},{"ref":"EID5453a3c2-8b1a-47c4-bea3-c777271fa227"}]},"parent":{"ref":"EID6a394f34-0175-1000-3aa3-ac52ae64f55e"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:22:22Z","duration":246,"status":"PASSED"},{"id":"EID6a395095-0175-1000-b74c-d6f06f0203c4","attachments":{"attachment":{"ref":"EID0f023c78-e88c-4b00-8d1d-44e5875236ed"}},"parent":{"ref":"EID6a394f34-0175-1000-3aa3-ac52ae64f55e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:22:22Z","duration":1,"status":"PASSED"},{"id":"EID6a3950a0-0175-1000-e04c-1ea023ce9633","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a395174-0175-1000-e005-da1e2643991b","parent":{"ref":"EID6a3950a0-0175-1000-e04c-1ea023ce9633"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:22:22Z","duration":0,"status":"PASSED"},{"id":"EID6a395174-0175-1000-9e48-7a94a3f11e08","parent":{"ref":"EID6a3950a0-0175-1000-e04c-1ea023ce9633"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:22:22Z","duration":0,"status":"PASSED"},{"id":"EID6a395174-0175-1000-4c53-023fc2d1f45c","parent":{"ref":"EID6a3950a0-0175-1000-e04c-1ea023ce9633"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:22:22Z","duration":0,"status":"PASSED"},{"id":"EID6a395174-0175-1000-7d6c-1d7e5f26ab8f","parent":{"ref":"EID6a3950a0-0175-1000-e04c-1ea023ce9633"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:22:22Z","duration":0,"status":"PASSED"},{"id":"EID6a395174-0175-1000-eef2-1b481b4c0b29","parent":{"ref":"EID6a3950a0-0175-1000-e04c-1ea023ce9633"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:22:22Z","duration":0,"status":"PASSED"},{"id":"EID6a395174-0175-1000-9d18-a1c54a2de3f4","parent":{"ref":"EID6a3950a0-0175-1000-e04c-1ea023ce9633"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:22:22Z","duration":0,"status":"PASSED"},{"id":"EID6a395174-0175-1000-8ea1-2fc3fa36dd30","parent":{"ref":"EID6a3950a0-0175-1000-e04c-1ea023ce9633"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:22:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd85ab1e4-ea52-4cb4-aeb3-df18e052d6dd"},{"ref":"EID2da0e96d-2bd1-4fb5-9560-89c13d606ff1"},{"ref":"EID0fa769f6-566b-480f-875b-cb0fa67e4140"}]},"parent":{"ref":"EID6a394f34-0175-1000-3aa3-ac52ae64f55e"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:22:22Z","duration":53,"status":"PASSED"}]},"parent":{"ref":"EID6a392b31-0175-1000-accc-bd92a05ad606"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:22:22Z","duration":576,"status":"PASSED"},{"id":"EID6a39517d-0175-1000-6ad3-6a6c3b3bd1dd","testStepResults":{"TestStepResult":[{"id":"EID6a39517d-0175-1000-41f9-6e629215c554","parent":{"ref":"EID6a39517d-0175-1000-6ad3-6a6c3b3bd1dd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:22:22Z","duration":0,"status":"PASSED"},{"id":"EID6a39517d-0175-1000-dd84-ee317ea13bbe","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39526f-0175-1000-b2d4-63b75a1a2a2d","parent":{"ref":"EID6a39517d-0175-1000-dd84-ee317ea13bbe"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:22:22Z","duration":0,"status":"PASSED"},{"id":"EID6a39526f-0175-1000-87bf-10ebf33e8b6b","parent":{"ref":"EID6a39517d-0175-1000-dd84-ee317ea13bbe"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:22:22Z","duration":0,"status":"PASSED"},{"id":"EID6a39526f-0175-1000-3224-8c3c283941b3","parent":{"ref":"EID6a39517d-0175-1000-dd84-ee317ea13bbe"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:22:22Z","duration":0,"status":"PASSED"},{"id":"EID6a39526f-0175-1000-c2c5-2f3b8a961aee","parent":{"ref":"EID6a39517d-0175-1000-dd84-ee317ea13bbe"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:22:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID16d048a6-c3ba-41f3-b987-ca023004ef73"},{"ref":"EID6c0c8540-ac2b-4209-8314-e0cfc989612c"},{"ref":"EIDede77124-8d18-41ae-a991-037a8fbd4af1"}]},"parent":{"ref":"EID6a39517d-0175-1000-6ad3-6a6c3b3bd1dd"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:22:22Z","duration":141,"status":"PASSED"},{"id":"EID6a395277-0175-1000-5c36-82984f2ddc35","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a39528e-0175-1000-bf4e-c1776bfbeed0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a395468-0175-1000-3c61-97e9b02c1b23","parent":{"ref":"EID6a39528e-0175-1000-bf4e-c1776bfbeed0"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:22:23Z","duration":0,"status":"PASSED"},{"id":"EID6a395468-0175-1000-9051-f8036d8d6126","parent":{"ref":"EID6a39528e-0175-1000-bf4e-c1776bfbeed0"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:22:23Z","duration":0,"status":"PASSED"},{"id":"EID6a395468-0175-1000-d69d-91268e6de715","parent":{"ref":"EID6a39528e-0175-1000-bf4e-c1776bfbeed0"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:22:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8cc4383d-e821-49af-af62-6913c2009574"},{"ref":"EID389cd319-bd2f-4be6-bc8a-203893780edd"},{"ref":"EID0c645621-3582-4abe-8ca4-c9f5f1305e5a"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:22:22Z","duration":148,"status":"PASSED"},{"id":"EID6a39546a-0175-1000-f598-a37c0c2d4108","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39555a-0175-1000-1e63-da8d2ed8d511","parent":{"ref":"EID6a39546a-0175-1000-f598-a37c0c2d4108"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:22:23Z","duration":0,"status":"PASSED"},{"id":"EID6a39555a-0175-1000-333e-2d42e58020a3","parent":{"ref":"EID6a39546a-0175-1000-f598-a37c0c2d4108"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:22:23Z","duration":0,"status":"PASSED"},{"id":"EID6a39555a-0175-1000-ea93-23df274df6eb","parent":{"ref":"EID6a39546a-0175-1000-f598-a37c0c2d4108"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:22:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDde1ee166-e37b-4851-bd34-4824b8db5812"},{"ref":"EID5403ee42-c614-4302-b780-8dec64ff3466"},{"ref":"EIDbe95c54f-2a48-401f-bddb-39192b48b87a"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:22:23Z","duration":154,"status":"PASSED"},{"id":"EID6a39555c-0175-1000-ef70-a76d7950e804","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3955fb-0175-1000-195b-d548bd759644","parent":{"ref":"EID6a39555c-0175-1000-ef70-a76d7950e804"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:22:23Z","duration":0,"status":"PASSED"},{"id":"EID6a3955fb-0175-1000-37ac-fe9ca4515e6b","parent":{"ref":"EID6a39555c-0175-1000-ef70-a76d7950e804"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:22:23Z","duration":0,"status":"PASSED"},{"id":"EID6a3955fb-0175-1000-6e1a-05d2d2816c3f","parent":{"ref":"EID6a39555c-0175-1000-ef70-a76d7950e804"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:22:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID43d06bfe-5c44-4bac-8018-6e417017fab4"},{"ref":"EIDca9682c3-d89e-463a-b2e4-c1cecd2ce10b"},{"ref":"EID5b0dd0bf-a734-4742-a2d7-b517e36113c7"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:22:23Z","duration":39,"status":"PASSED"}]},"parent":{"ref":"EID6a39517d-0175-1000-6ad3-6a6c3b3bd1dd"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:22:22Z","duration":901,"status":"PASSED"},{"id":"EID6a3955fc-0175-1000-c296-c06254f5fa9a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3956e6-0175-1000-c0e0-4e2394d76a8f","parent":{"ref":"EID6a3955fc-0175-1000-c296-c06254f5fa9a"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:22:24Z","duration":0,"status":"PASSED"},{"id":"EID6a3956e6-0175-1000-abe7-b26c282f8460","parent":{"ref":"EID6a3955fc-0175-1000-c296-c06254f5fa9a"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:22:24Z","duration":0,"status":"PASSED"},{"id":"EID6a3956e6-0175-1000-7778-95aa0ec6b39b","parent":{"ref":"EID6a3955fc-0175-1000-c296-c06254f5fa9a"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:22:24Z","duration":0,"status":"PASSED"},{"id":"EID6a3956e6-0175-1000-c5ff-e4952fe45060","parent":{"ref":"EID6a3955fc-0175-1000-c296-c06254f5fa9a"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:22:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5419d652-9bcf-4648-ab2e-c2aa27816f8a"},{"ref":"EID4d314868-9031-45f4-a5c1-be4fd0b26601"},{"ref":"EIDc207b57c-253a-4b2f-a5d3-527bb2c1bf23"}]},"parent":{"ref":"EID6a39517d-0175-1000-6ad3-6a6c3b3bd1dd"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:22:23Z","duration":121,"status":"PASSED"}]},"parent":{"ref":"EID6a392b31-0175-1000-accc-bd92a05ad606"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:22:22Z","duration":1394,"status":"PASSED"},{"id":"EID6a3956ef-0175-1000-83c7-ba701adbece7","testStepResults":{"TestStepResult":{"id":"EID6a3956ef-0175-1000-3e2d-63eae6d55ec3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3957f6-0175-1000-83c1-1f7577e12aa8","parent":{"ref":"EID6a3956ef-0175-1000-3e2d-63eae6d55ec3"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:22:24Z","duration":0,"status":"PASSED"},{"id":"EID6a3957f6-0175-1000-2f0b-4e31c21a8ac7","parent":{"ref":"EID6a3956ef-0175-1000-3e2d-63eae6d55ec3"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:22:24Z","duration":0,"status":"PASSED"},{"id":"EID6a3957f6-0175-1000-d5f3-20f9e1475aef","parent":{"ref":"EID6a3956ef-0175-1000-3e2d-63eae6d55ec3"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:22:24Z","duration":0,"status":"PASSED"},{"id":"EID6a3957f6-0175-1000-6599-7f0836f59b1a","parent":{"ref":"EID6a3956ef-0175-1000-3e2d-63eae6d55ec3"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:22:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb51013ea-88ad-46b3-a329-bb8755a96372"},{"ref":"EID17725254-41e8-4759-a31d-bb4de3e61561"},{"ref":"EIDd5dc51e4-e606-46c7-afa4-7c9cdd68e7fa"}]},"parent":{"ref":"EID6a3956ef-0175-1000-83c7-ba701adbece7"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:22:24Z","duration":83,"status":"PASSED"}},"parent":{"ref":"EID6a392b31-0175-1000-accc-bd92a05ad606"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:22:24Z","duration":313,"status":"PASSED"}]},"parent":{"ref":"EIDb3b016fb-db8a-41e1-8ef3-0654331882dd"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:22:12Z","duration":11512,"status":"PASSED"},{"id":"EID6a395829-0175-1000-9a80-8042e0db401a","testCaseResults":{"TestCaseResult":[{"id":"EID6a395831-0175-1000-bf3f-6b494b55836c","testStepResults":{"TestStepResult":[{"id":"EID6a395831-0175-1000-f45e-479ddcab1e8c","parent":{"ref":"EID6a395831-0175-1000-bf3f-6b494b55836c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:22:24Z","duration":1075,"status":"PASSED"},{"id":"EID6a395832-0175-1000-a896-ceb3f553ab3f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3958f3-0175-1000-62bd-6aa3c5ad11a0","parent":{"ref":"EID6a395832-0175-1000-a896-ceb3f553ab3f"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-27T13:22:24Z","duration":0,"status":"PASSED"},{"id":"EID6a3958f3-0175-1000-d381-0fcda83e4e00","parent":{"ref":"EID6a395832-0175-1000-a896-ceb3f553ab3f"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-27T13:22:24Z","duration":0,"status":"PASSED"},{"id":"EID6a3958f3-0175-1000-0b37-a6be70413bda","parent":{"ref":"EID6a395832-0175-1000-a896-ceb3f553ab3f"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-27T13:22:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID17598d1b-d213-4c49-8909-d9e0aa438218"},{"ref":"EIDaaeafcbd-7c84-4443-8117-684d884eee5d"},{"ref":"EIDbe781faf-f26c-4924-baf2-1b1a63a2c58a"}]},"parent":{"ref":"EID6a395831-0175-1000-bf3f-6b494b55836c"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-27T13:22:24Z","duration":40,"status":"PASSED"},{"id":"EID6a3958f3-0175-1000-65d4-7e065b60485b","attachments":{"attachment":{"ref":"EIDef6c1079-e292-4293-a150-945230e051bd"}},"parent":{"ref":"EID6a395831-0175-1000-bf3f-6b494b55836c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-27T13:22:24Z","duration":10,"status":"PASSED"}]},"parent":{"ref":"EID6a395829-0175-1000-9a80-8042e0db401a"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:22:24Z","duration":276,"status":"PASSED"},{"id":"EID6a395946-0175-1000-40cb-67eb39aa465f","testStepResults":{"TestStepResult":[{"id":"EID6a395946-0175-1000-c71c-ce1978e7e6cb","parent":{"ref":"EID6a395946-0175-1000-40cb-67eb39aa465f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:22:24Z","duration":1075,"status":"PASSED"},{"id":"EID6a395946-0175-1000-622a-b5be9049e3a7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a395a8a-0175-1000-95bc-78b6af53896f","parent":{"ref":"EID6a395946-0175-1000-622a-b5be9049e3a7"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-27T13:22:25Z","duration":0,"status":"PASSED"},{"id":"EID6a395a8a-0175-1000-7f9d-6cad97164970","parent":{"ref":"EID6a395946-0175-1000-622a-b5be9049e3a7"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-27T13:22:25Z","duration":0,"status":"PASSED"},{"id":"EID6a395a8a-0175-1000-d072-df65dee43124","parent":{"ref":"EID6a395946-0175-1000-622a-b5be9049e3a7"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-27T13:22:25Z","duration":0,"status":"PASSED"},{"id":"EID6a395a8a-0175-1000-c5f7-4789fa98d5f5","parent":{"ref":"EID6a395946-0175-1000-622a-b5be9049e3a7"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-27T13:22:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID65cee088-3601-45f9-a2e0-1f931101f2d9"},{"ref":"EID9de7bc7a-d158-4e25-8f5d-b2b619c9cc48"},{"ref":"EID48dbb71f-79ef-4b5e-bf77-c115787534ca"}]},"parent":{"ref":"EID6a395946-0175-1000-40cb-67eb39aa465f"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-27T13:22:24Z","duration":211,"status":"PASSED"}]},"parent":{"ref":"EID6a395829-0175-1000-9a80-8042e0db401a"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:22:24Z","duration":334,"status":"PASSED"},{"id":"EID6a395a94-0175-1000-b325-5ba6ec0349cf","testStepResults":{"TestStepResult":[{"id":"EID6a395a94-0175-1000-e526-7d492615545f","parent":{"ref":"EID6a395a94-0175-1000-b325-5ba6ec0349cf"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:22:25Z","duration":1075,"status":"PASSED"},{"id":"EID6a395a94-0175-1000-5307-9c56508a45fa","parent":{"ref":"EID6a395a94-0175-1000-b325-5ba6ec0349cf"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-27T13:22:25Z","duration":0,"status":"PASSED"},{"id":"EID6a395a94-0175-1000-05e7-f70c0d7c947b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a395de7-0175-1000-8121-f555ddafdfa2","parent":{"ref":"EID6a395a94-0175-1000-05e7-f70c0d7c947b"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-27T13:22:25Z","duration":0,"status":"PASSED"},{"id":"EID6a395de7-0175-1000-1f7a-625c5bc449ae","parent":{"ref":"EID6a395a94-0175-1000-05e7-f70c0d7c947b"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-27T13:22:25Z","duration":0,"status":"PASSED"},{"id":"EID6a395de7-0175-1000-98fa-856d5848124e","parent":{"ref":"EID6a395a94-0175-1000-05e7-f70c0d7c947b"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-27T13:22:25Z","duration":0,"status":"PASSED"},{"id":"EID6a395de7-0175-1000-dbf9-a3b5e0696525","parent":{"ref":"EID6a395a94-0175-1000-05e7-f70c0d7c947b"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-27T13:22:25Z","duration":0,"status":"PASSED"},{"id":"EID6a395de7-0175-1000-7e10-566ade412263","parent":{"ref":"EID6a395a94-0175-1000-05e7-f70c0d7c947b"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-27T13:22:25Z","duration":0,"status":"PASSED"},{"id":"EID6a395de7-0175-1000-bca0-6d48e1815f50","parent":{"ref":"EID6a395a94-0175-1000-05e7-f70c0d7c947b"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-27T13:22:25Z","duration":0,"status":"PASSED"},{"id":"EID6a395de7-0175-1000-6425-db92581945b6","parent":{"ref":"EID6a395a94-0175-1000-05e7-f70c0d7c947b"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-27T13:22:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDedc9b5e1-e190-4c9c-a6f3-f4684227ae70"},{"ref":"EID543697a6-6ca4-4504-882d-9df1b8e2c61e"},{"ref":"EID1b6c4b8c-f136-4a89-9c9f-bc9581d3c563"}]},"parent":{"ref":"EID6a395a94-0175-1000-b325-5ba6ec0349cf"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-27T13:22:25Z","duration":599,"status":"PASSED"},{"id":"EID6a395e03-0175-1000-dec5-fdfc85122490","invokedTests":{"":null,"TestStepResult":{"id":"EID6a395e5b-0175-1000-a354-58b6a39517d8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a39601b-0175-1000-a887-1a579db875b2","parent":{"ref":"EID6a395e5b-0175-1000-a354-58b6a39517d8"},"resultedFrom":{"ref":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2"},"startTimestamp":"2020-10-27T13:22:26Z","duration":1,"status":"PASSED"},{"id":"EID6a39601c-0175-1000-02c4-9d4caf089536","parent":{"ref":"EID6a395e5b-0175-1000-a354-58b6a39517d8"},"resultedFrom":{"ref":"EID4c8b189c-31ec-4098-8f45-6952a58780c6"},"startTimestamp":"2020-10-27T13:22:26Z","duration":0,"status":"PASSED"},{"id":"EID6a39601c-0175-1000-8104-e58fb92f34bd","messages":{"message":{"ref":"TR.unexpectedContentType","translationArguments":{"argument":[{"token":"actual","$":"application/x-zip-compressed"},{"token":"expected","$":"application/x-compressed"}]}}},"parent":{"ref":"EID6a395e5b-0175-1000-a354-58b6a39517d8"},"resultedFrom":{"ref":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3"},"startTimestamp":"2020-10-27T13:22:26Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDc2cd80f4-5de3-4ce6-a4de-19577ec9bf14"},{"ref":"EID65834fa6-cfe0-4d34-998e-672cef87e76a"},{"ref":"EID277bf738-0dda-4a1a-b2f4-48d17a87728c"}]},"resultedFrom":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"startTimestamp":"2020-10-27T13:22:26Z","duration":234,"status":"FAILED"}},"attachments":{"attachment":[{"ref":"EID5be0b3b4-0220-4c86-9f2c-7d9d0b2ce7d6"},{"ref":"EID689b4bac-b6dc-4a3a-8e74-4336531be9b1"}]},"parent":{"ref":"EID6a395a94-0175-1000-b325-5ba6ec0349cf"},"resultedFrom":{"ref":"EIDb0803022-623e-456c-aa2e-bc968ee33150"},"startTimestamp":"2020-10-27T13:22:25Z","duration":555,"status":"FAILED"}]},"parent":{"ref":"EID6a395829-0175-1000-9a80-8042e0db401a"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:22:25Z","duration":1503,"status":"FAILED"},{"id":"EID6a396096-0175-1000-f64a-723170adc163","testStepResults":{"TestStepResult":[{"id":"EID6a396096-0175-1000-eb4a-4cb6cbaf992e","parent":{"ref":"EID6a396096-0175-1000-f64a-723170adc163"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:22:26Z","duration":1075,"status":"PASSED"},{"id":"EID6a396096-0175-1000-cd68-c890927d90dc","parent":{"ref":"EID6a396096-0175-1000-f64a-723170adc163"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-27T13:22:26Z","duration":0,"status":"PASSED"},{"id":"EID6a396096-0175-1000-2c83-23dac2d8e88f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3961e4-0175-1000-d31a-4f157886ea44","parent":{"ref":"EID6a396096-0175-1000-2c83-23dac2d8e88f"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-27T13:22:26Z","duration":0,"status":"PASSED"},{"id":"EID6a3961e4-0175-1000-16e0-f112467f13a5","parent":{"ref":"EID6a396096-0175-1000-2c83-23dac2d8e88f"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-27T13:22:26Z","duration":0,"status":"PASSED"},{"id":"EID6a3961e4-0175-1000-76de-179bcb8833fd","parent":{"ref":"EID6a396096-0175-1000-2c83-23dac2d8e88f"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-27T13:22:26Z","duration":0,"status":"PASSED"},{"id":"EID6a3961e4-0175-1000-56aa-4d4c31c172a9","parent":{"ref":"EID6a396096-0175-1000-2c83-23dac2d8e88f"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-27T13:22:26Z","duration":0,"status":"PASSED"},{"id":"EID6a3961e4-0175-1000-74d3-c728afe23f7f","parent":{"ref":"EID6a396096-0175-1000-2c83-23dac2d8e88f"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-27T13:22:26Z","duration":0,"status":"PASSED"},{"id":"EID6a3961e4-0175-1000-8d99-810786841e06","parent":{"ref":"EID6a396096-0175-1000-2c83-23dac2d8e88f"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-27T13:22:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb7d2cbb7-95ac-493a-a3ec-da57049b141d"},{"ref":"EID8fad6b62-8c16-4881-9292-d3c1c364a80a"},{"ref":"EID51350030-d6b5-4876-8226-4ba5ef38f98b"}]},"parent":{"ref":"EID6a396096-0175-1000-f64a-723170adc163"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-27T13:22:26Z","duration":99,"status":"PASSED"},{"id":"EID6a3961e4-0175-1000-2c01-7dc5cde2dd6b","parent":{"ref":"EID6a396096-0175-1000-f64a-723170adc163"},"resultedFrom":{"ref":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b"},"startTimestamp":"2020-10-27T13:22:26Z","duration":90,"status":"PASSED"},{"id":"EID6a39623f-0175-1000-b617-88d2554f7298","parent":{"ref":"EID6a396096-0175-1000-f64a-723170adc163"},"resultedFrom":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"startTimestamp":"2020-10-27T13:22:27Z","duration":1,"status":"UNDEFINED"}]},"parent":{"ref":"EID6a395829-0175-1000-9a80-8042e0db401a"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:22:26Z","duration":426,"status":"UNDEFINED"},{"id":"EID6a396240-0175-1000-2135-d8a44b1c1edf","testStepResults":{"TestStepResult":[{"id":"EID6a396240-0175-1000-c384-5e0cfa272515","parent":{"ref":"EID6a396240-0175-1000-2135-d8a44b1c1edf"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:22:27Z","duration":1075,"status":"PASSED"},{"id":"EID6a396240-0175-1000-a905-728700ddd80c","messages":{"message":{"ref":"TR.unexpectedContentType","translationArguments":{"argument":[{"token":"actual","$":"application/x-zip-compressed"},{"token":"expected","$":"application/x-compressed"}]}}},"attachments":{"attachment":[{"ref":"EID1b84482c-34f6-4202-8651-f5a81f3fe5a7"},{"ref":"EID73ff2a89-3d74-43c9-b48f-fbd86f4524a0"},{"ref":"EID96143d58-7720-49cf-a9e8-676c15f7af58"},{"ref":"EID8779811b-a339-4919-b744-f933c137763d"},{"ref":"EIDef977b21-f84c-4961-a901-7d056408da8f"},{"ref":"EID8c9a64b9-b68f-466b-86f9-ad62b4c03f51"},{"ref":"EID18948873-4ab0-410b-ad63-5f7ca2c067dc"},{"ref":"EIDea7e3257-59b1-4519-adb2-51170933e838"},{"ref":"EIDac83ac11-99b9-4134-b5e5-39148997769c"},{"ref":"EID8824f6b8-67e9-433c-8839-940415f5cd54"},{"ref":"EID852d15ab-09d1-417b-8c2a-2dcbdb69158a"},{"ref":"EID3807af87-601f-44a9-b724-46ce11d71a65"},{"ref":"EIDe27c7a7f-f15a-44db-aed2-4a3df567ed94"},{"ref":"EID078b3d5f-7e38-49c8-b6f2-0c44e2d3d9b7"},{"ref":"EID4a4a6ec8-cdbb-4614-b847-938dc9b755c0"},{"ref":"EID70576ed2-442e-4fb0-8390-39b3f493b81c"},{"ref":"EIDc97cbcc4-ac2c-4d14-984c-df0e28eed8dc"},{"ref":"EID5c3ac8b2-6ba4-4e4e-992a-d9675a5b344c"},{"ref":"EIDd59b9612-1182-493f-b566-eb23e2ac5f0f"}]},"parent":{"ref":"EID6a396240-0175-1000-2135-d8a44b1c1edf"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-27T13:22:27Z","duration":2163,"status":"SKIPPED"}]},"parent":{"ref":"EID6a395829-0175-1000-9a80-8042e0db401a"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:22:27Z","duration":2613,"status":"SKIPPED"},{"id":"EID6a396c75-0175-1000-b7b4-87f23afa98cb","testStepResults":{"TestStepResult":[{"id":"EID6a396c75-0175-1000-d175-86606f2c3804","parent":{"ref":"EID6a396c75-0175-1000-b7b4-87f23afa98cb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:22:29Z","duration":1075,"status":"PASSED"},{"id":"EID6a396c75-0175-1000-71c8-38d790376d8b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a396d1d-0175-1000-68db-983b05e789d8","parent":{"ref":"EID6a396c75-0175-1000-71c8-38d790376d8b"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-27T13:22:29Z","duration":0,"status":"PASSED"},{"id":"EID6a396d1d-0175-1000-e200-7bb52b2278e5","parent":{"ref":"EID6a396c75-0175-1000-71c8-38d790376d8b"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-27T13:22:29Z","duration":0,"status":"PASSED"},{"id":"EID6a396d1d-0175-1000-7594-485b3c8672e2","parent":{"ref":"EID6a396c75-0175-1000-71c8-38d790376d8b"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-27T13:22:29Z","duration":0,"status":"PASSED"},{"id":"EID6a396d1d-0175-1000-c57b-35e4672a9e94","parent":{"ref":"EID6a396c75-0175-1000-71c8-38d790376d8b"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-27T13:22:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd09ecdd8-f73b-4680-9942-ee1be6529af7"},{"ref":"EID88e9f3df-611a-4e73-bb8a-f24b9551fff8"},{"ref":"EID92681562-d41b-4b4b-9e0e-180d08082bc9"}]},"parent":{"ref":"EID6a396c75-0175-1000-b7b4-87f23afa98cb"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-27T13:22:29Z","duration":89,"status":"PASSED"}]},"parent":{"ref":"EID6a395829-0175-1000-9a80-8042e0db401a"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:22:29Z","duration":168,"status":"PASSED"},{"id":"EID6a396d1d-0175-1000-07b1-b4a30505425e","testStepResults":{"TestStepResult":[{"id":"EID6a396d1d-0175-1000-4c07-01282eac3c3b","parent":{"ref":"EID6a396d1d-0175-1000-07b1-b4a30505425e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:22:29Z","duration":1075,"status":"PASSED"},{"id":"EID6a396d1d-0175-1000-14e4-0c35b5c2263f","parent":{"ref":"EID6a396d1d-0175-1000-07b1-b4a30505425e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-27T13:22:29Z","duration":0,"status":"PASSED"},{"id":"EID6a396d1d-0175-1000-0dcc-21f05fd31c52","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a396dbf-0175-1000-fde5-3961e9275940","parent":{"ref":"EID6a396d1d-0175-1000-0dcc-21f05fd31c52"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-27T13:22:29Z","duration":0,"status":"PASSED"},{"id":"EID6a396dbf-0175-1000-fe98-1ddb86b4245a","parent":{"ref":"EID6a396d1d-0175-1000-0dcc-21f05fd31c52"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-27T13:22:29Z","duration":0,"status":"PASSED"},{"id":"EID6a396dbf-0175-1000-8dda-c5b8b6819e38","parent":{"ref":"EID6a396d1d-0175-1000-0dcc-21f05fd31c52"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-27T13:22:29Z","duration":0,"status":"PASSED"},{"id":"EID6a396dbf-0175-1000-dd6d-b67edd973258","parent":{"ref":"EID6a396d1d-0175-1000-0dcc-21f05fd31c52"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-27T13:22:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfd11fefc-ffdd-4704-a9e1-ec715399f41b"},{"ref":"EID0e90f01b-e30f-48ce-a2d3-946be31c86d0"},{"ref":"EIDe57bcfd9-7dfa-4f13-b9c9-b54ccd8449ee"}]},"parent":{"ref":"EID6a396d1d-0175-1000-07b1-b4a30505425e"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-27T13:22:29Z","duration":95,"status":"PASSED"},{"id":"EID6a396dbf-0175-1000-35af-5c804e729cb2","attachments":{"attachment":{"ref":"EIDe461e8c5-dd27-4c34-85c6-023f3d3a4fd8"}},"parent":{"ref":"EID6a396d1d-0175-1000-07b1-b4a30505425e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-27T13:22:29Z","duration":1,"status":"PASSED"},{"id":"EID6a396dce-0175-1000-40d3-4c65b6fcdd80","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a396dd2-0175-1000-1997-8f4c8453f2bc","parent":{"ref":"EID6a396dce-0175-1000-40d3-4c65b6fcdd80"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-27T13:22:29Z","duration":0,"status":"PASSED"},{"id":"EID6a396dd2-0175-1000-5f75-ee5975730e2f","parent":{"ref":"EID6a396dce-0175-1000-40d3-4c65b6fcdd80"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-27T13:22:29Z","duration":0,"status":"PASSED"},{"id":"EID6a396dd2-0175-1000-440b-c0eb4dd90fff","parent":{"ref":"EID6a396dce-0175-1000-40d3-4c65b6fcdd80"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-27T13:22:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9fbc0c26-c0e0-4136-844c-a06183ddbb56"},{"ref":"EID4ca61282-b604-490e-afac-327a58618b7e"}]},"parent":{"ref":"EID6a396d1d-0175-1000-07b1-b4a30505425e"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-27T13:22:29Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a395829-0175-1000-9a80-8042e0db401a"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:22:29Z","duration":181,"status":"PASSED"}]},"parent":{"ref":"EIDb3b016fb-db8a-41e1-8ef3-0654331882dd"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:22:24Z","duration":5545,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"Message","id":"EID8779811b-a339-4919-b744-f933c137763d","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID8779811b-a339-4919-b744-f933c137763d"}},{"type":"Message","id":"EID03d8117b-fb53-41d2-8cbd-a34f66ad09a3","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID03d8117b-fb53-41d2-8cbd-a34f66ad09a3"}},{"type":"ServiceEndpoint","id":"EID57dbea64-951a-435c-bf78-0c9a3f0a3e6a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID117d20ec-3702-42fd-a090-e7a2b1d618e5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID5be0b3b4-0220-4c86-9f2c-7d9d0b2ce7d6","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID5be0b3b4-0220-4c86-9f2c-7d9d0b2ce7d6"}},{"type":"ServiceEndpoint","id":"EID2120f504-99ee-4286-bb2c-1fcaa6bafb7c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID1eae1a15-4e23-48ed-a4b2-3a9ebdf7acb0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"GetParameter","id":"EID51350030-d6b5-4876-8226-4ba5ef38f98b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDbe95c54f-2a48-401f-bddb-39192b48b87a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EIDf422c124-4fca-414e-af63-7a41dc6b9e69","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDf422c124-4fca-414e-af63-7a41dc6b9e69"}},{"type":"ServiceResponse","id":"EID55384c17-79d3-4b8e-a446-8ea962295beb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID55384c17-79d3-4b8e-a446-8ea962295beb"}},{"type":"GetParameter","id":"EIDa6e09382-da18-4662-81c1-5d6b6afd96e3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDbab92953-53dc-4236-8c7f-8ff19197fd47","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"GetParameter","id":"EIDe9275f93-b5a4-4618-a542-4b8915839349","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EIDb4a6bfe9-9017-4c10-b806-e7452ab00616","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EID94ce53c1-2a22-47bc-8589-5587c2a042dd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID94ce53c1-2a22-47bc-8589-5587c2a042dd"}},{"type":"GetParameter","id":"EID4ca61282-b604-490e-afac-327a58618b7e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceResponse","id":"EID279dac73-5274-431f-aaf1-b191a5188986","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID279dac73-5274-431f-aaf1-b191a5188986"}},{"type":"GetParameter","id":"EID414d2568-6c04-48bb-9943-8c4b231d35fe","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDe5ab0d5b-2d0b-4c64-85b4-5eb1f803bec7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EIDefc4a099-bd11-4fea-aaf7-dc238e784ca3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDefc4a099-bd11-4fea-aaf7-dc238e784ca3"}},{"type":"ServiceResponse","id":"EIDc8511578-3c6f-474a-a339-aa5738960b1f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDc8511578-3c6f-474a-a339-aa5738960b1f"}},{"type":"ServiceResponse","id":"EID6c0c8540-ac2b-4209-8314-e0cfc989612c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID6c0c8540-ac2b-4209-8314-e0cfc989612c"}},{"type":"GetParameter","id":"EID5453a3c2-8b1a-47c4-bea3-c777271fa227","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID5ac8c777-f469-49a6-a31e-08d695bc19a2","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID5ac8c777-f469-49a6-a31e-08d695bc19a2"}},{"type":"Message","id":"EIDfe5df4ae-091e-4635-9e18-197027738f87","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDfe5df4ae-091e-4635-9e18-197027738f87"}},{"type":"ServiceEndpoint","id":"EID1a804c6c-22f4-4da5-9606-a6f45a100f08","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EIDd85ab1e4-ea52-4cb4-aeb3-df18e052d6dd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EID6c4c6820-3042-4024-af19-e7c032a230ee","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID6c4c6820-3042-4024-af19-e7c032a230ee"}},{"type":"GetParameter","id":"EID1fab42e0-0d12-4e22-b33e-d519a2f84152","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID0e852181-ba7f-4aeb-a993-e3c9c18096d2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID65834fa6-cfe0-4d34-998e-672cef87e76a","label":"Service Response","encoding":"UTF-8","mimeType":"application/zip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID65834fa6-cfe0-4d34-998e-672cef87e76a"}},{"type":"ServiceEndpoint","id":"EIDe30e3765-8ebc-4a4f-adec-e5e979cf7f93","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDc9783a84-b2bf-40d9-9202-306659fa1d73","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDc97cbcc4-ac2c-4d14-984c-df0e28eed8dc","label":"Message.18","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDc97cbcc4-ac2c-4d14-984c-df0e28eed8dc"}},{"type":"GetParameter","id":"EIDee94282a-8414-4ddb-8dbf-636b09989f9b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID079f7f4f-861a-43b4-b714-9b72c8dde2f9","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID079f7f4f-861a-43b4-b714-9b72c8dde2f9"}},{"type":"ServiceResponse","id":"EID95505fad-3bec-496d-8b5a-0a89a5a7a0d3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID95505fad-3bec-496d-8b5a-0a89a5a7a0d3"}},{"type":"Message","id":"EIDac83ac11-99b9-4134-b5e5-39148997769c","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDac83ac11-99b9-4134-b5e5-39148997769c"}},{"type":"ServiceResponse","id":"EIDc82a0045-0b7e-4b58-9e23-e128538dfa95","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDc82a0045-0b7e-4b58-9e23-e128538dfa95"}},{"type":"Message","id":"EID8d311a99-0e8f-4e7d-8d18-ed463fb90fa5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID8d311a99-0e8f-4e7d-8d18-ed463fb90fa5"}},{"type":"GetParameter","id":"EID428bcfa4-6062-4ce3-89f0-4db3a6fac2c3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDfd034d31-55f9-459f-bdef-aae178062beb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"GetParameter","id":"EID3d9c1a89-fc9d-4c4c-aefc-9c783a0d8a64","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDc093830a-8666-4864-8657-5aff2e7e4e1d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDc093830a-8666-4864-8657-5aff2e7e4e1d"}},{"type":"ServiceResponse","id":"EID3944539d-fb41-4af1-8408-74164e54b96f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID3944539d-fb41-4af1-8408-74164e54b96f"}},{"type":"ServiceEndpoint","id":"EID5dde447c-8d9d-4c8e-814a-02295616a636","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EID543697a6-6ca4-4504-882d-9df1b8e2c61e","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID543697a6-6ca4-4504-882d-9df1b8e2c61e"}},{"type":"ServiceEndpoint","id":"EIDe0bb1ad1-5f06-4df0-8acc-96bf8fcc7273","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID1f96e6c8-fdab-4648-b88b-c11b2205e4e6","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID1f96e6c8-fdab-4648-b88b-c11b2205e4e6"}},{"type":"ServiceEndpoint","id":"EIDcf63333b-761f-4f96-9fd0-ccaec8f43b68","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDd066b6ab-9725-4050-9484-99c78726f23d","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDd066b6ab-9725-4050-9484-99c78726f23d"}},{"type":"ServiceEndpoint","id":"EIDbde01015-3269-4963-bef5-aade0c916c2e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID16d048a6-c3ba-41f3-b987-ca023004ef73","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EID3e9acefe-1ff8-4eb8-98de-935b60eda911","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID3e9acefe-1ff8-4eb8-98de-935b60eda911"}},{"type":"ServiceResponse","id":"EID000347d2-13d7-496e-996d-aba4a99f01e5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID000347d2-13d7-496e-996d-aba4a99f01e5"}},{"type":"GetParameter","id":"EID5b8caac7-80a2-4a7e-bf1f-6c372bee3ecf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID6e9bf049-6c52-444c-a074-b6454dbd296f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID6e9bf049-6c52-444c-a074-b6454dbd296f"}},{"type":"GetParameter","id":"EID52efd1f8-a586-4389-895f-a310a6dae6f7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID4e0383bf-3fdd-4a37-835e-d70415ce91ab","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID4e0383bf-3fdd-4a37-835e-d70415ce91ab"}},{"type":"ServiceResponse","id":"EID9da127e2-9c92-4d01-b613-f89863e57eec","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID9da127e2-9c92-4d01-b613-f89863e57eec"}},{"type":"ServiceEndpoint","id":"EID9d085b1c-2eba-4557-8f80-817541205346","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EIDca1c7437-25fa-49ee-9c7e-a7d9906ab68c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EID33ce3287-d5d9-494f-9dad-2f1a7a94d62a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID33ce3287-d5d9-494f-9dad-2f1a7a94d62a"}},{"type":"ServiceEndpoint","id":"EIDedc9b5e1-e190-4c9c-a6f3-f4684227ae70","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDbd00e084-7ec6-407e-be6c-0cdb6a837d23","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID389cd319-bd2f-4be6-bc8a-203893780edd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID389cd319-bd2f-4be6-bc8a-203893780edd"}},{"type":"GetParameter","id":"EID5b0dd0bf-a734-4742-a2d7-b517e36113c7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EIDb7d2cbb7-95ac-493a-a3ec-da57049b141d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDde1ee166-e37b-4851-bd34-4824b8db5812","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EID9b4b0059-b438-4c2f-81ca-7a22700fd8ec","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID9b4b0059-b438-4c2f-81ca-7a22700fd8ec"}},{"type":"GetParameter","id":"EID8b8337fc-c260-4138-825b-83c0f8f6e8fc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDe57bcfd9-7dfa-4f13-b9c9-b54ccd8449ee","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID87314a14-3517-496d-ab4e-7b98538ac2c2","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID87314a14-3517-496d-ab4e-7b98538ac2c2"}},{"type":"Message","id":"EID76c99456-fa1b-44d5-915d-310ef5fc98c2","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID76c99456-fa1b-44d5-915d-310ef5fc98c2"}},{"type":"GetParameter","id":"EID1cb40e94-bd13-4e1e-ba5f-c4094ae67d0c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDc8d6904d-1636-4d6f-8b6e-03d8d89ee3c9","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDc8d6904d-1636-4d6f-8b6e-03d8d89ee3c9"}},{"type":"GetParameter","id":"EID7356b801-0d3a-41c3-a29f-9527c15ea945","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"GetParameter","id":"EID4e61ada5-d330-4eb1-8353-b8d56cc474a3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID81c13ed8-3dce-45a8-9434-130d768ffd11","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"GetParameter","id":"EIDb083ac95-e38c-4268-8a30-96cc6a466608","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EIDc1314ce9-317c-4612-818b-c34be7cbd9f8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDc1314ce9-317c-4612-818b-c34be7cbd9f8"}},{"type":"GetParameter","id":"EID0fa769f6-566b-480f-875b-cb0fa67e4140","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EID1f48b41a-c4f7-4c3a-a455-58566ddeeb7f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID1f48b41a-c4f7-4c3a-a455-58566ddeeb7f"}},{"type":"ServiceResponse","id":"EIDff5c2d25-d6cb-4b97-a25f-72a23621c9aa","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDff5c2d25-d6cb-4b97-a25f-72a23621c9aa"}},{"type":"ServiceResponse","id":"EIDf83e1a57-eb15-4785-a174-9195fbf82b57","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDf83e1a57-eb15-4785-a174-9195fbf82b57"}},{"type":"Message","id":"EID8c9a64b9-b68f-466b-86f9-ad62b4c03f51","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID8c9a64b9-b68f-466b-86f9-ad62b4c03f51"}},{"type":"ServiceEndpoint","id":"EIDc2cd80f4-5de3-4ce6-a4de-19577ec9bf14","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kb3dubG9hZA=="},{"type":"Message","id":"EID27830c61-d240-4fb0-99ab-5e4b9d1d9422","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID27830c61-d240-4fb0-99ab-5e4b9d1d9422"}},{"type":"ServiceEndpoint","id":"EID6cd34352-4aa6-4f60-8309-b4aa632105c2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID8fad6b62-8c16-4881-9292-d3c1c364a80a","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID8fad6b62-8c16-4881-9292-d3c1c364a80a"}},{"type":"ServiceEndpoint","id":"EID65cee088-3601-45f9-a2e0-1f931101f2d9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID0c645621-3582-4abe-8ca4-c9f5f1305e5a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EIDd5dc51e4-e606-46c7-afa4-7c9cdd68e7fa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EID88e9f3df-611a-4e73-bb8a-f24b9551fff8","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID88e9f3df-611a-4e73-bb8a-f24b9551fff8"}},{"type":"ServiceEndpoint","id":"EIDf39a4ea2-da07-4095-8465-a5e8917367fd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID92681562-d41b-4b4b-9e0e-180d08082bc9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID1b84482c-34f6-4202-8651-f5a81f3fe5a7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID1b84482c-34f6-4202-8651-f5a81f3fe5a7"}},{"type":"GetParameter","id":"EIDb6b7431f-ac6a-4f5d-a75c-9ae19777de0f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EID48dbb71f-79ef-4b5e-bf77-c115787534ca","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID545bb6e4-0f90-4bce-924b-9d35e6531324","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID545bb6e4-0f90-4bce-924b-9d35e6531324"}},{"type":"GetParameter","id":"EID0b921614-f64b-4e85-a28e-b32b2d201c6a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"Message","id":"EIDeb09340c-d66c-4daf-9d8c-969c3ab76afd","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDeb09340c-d66c-4daf-9d8c-969c3ab76afd"}},{"type":"ServiceResponse","id":"EID8554ee11-f7da-4bfb-84f2-3c68fa3b5596","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID8554ee11-f7da-4bfb-84f2-3c68fa3b5596"}},{"type":"Message","id":"EID2163cf9a-df7b-4b15-be50-ad9d9ed538cf","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID2163cf9a-df7b-4b15-be50-ad9d9ed538cf"}},{"type":"ServiceEndpoint","id":"EID3e4a9989-1bc9-4cb6-9084-866d237f235a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EID152a9b82-348a-465a-a7d1-e8a5ace717d4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID152a9b82-348a-465a-a7d1-e8a5ace717d4"}},{"type":"ServiceEndpoint","id":"EIDbb0dbb14-2538-4742-9a04-07dbb051d4ac","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EIDaaeafcbd-7c84-4443-8117-684d884eee5d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDaaeafcbd-7c84-4443-8117-684d884eee5d"}},{"type":"ServiceEndpoint","id":"EIDe4cb54a7-7c90-4d86-9d0a-a9ffe6834d98","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDbe781faf-f26c-4924-baf2-1b1a63a2c58a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID2c0f4f8c-05e0-45bc-8888-5d1fc30f7c57","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID2c0f4f8c-05e0-45bc-8888-5d1fc30f7c57"}},{"type":"Message","id":"EIDe27c7a7f-f15a-44db-aed2-4a3df567ed94","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDe27c7a7f-f15a-44db-aed2-4a3df567ed94"}},{"type":"GetParameter","id":"EIDd45c6e9c-844b-48f7-a9ee-eacbe842fb3b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID67c29f53-f0ac-4e24-bf1e-62cefa4dc4aa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDea7e3257-59b1-4519-adb2-51170933e838","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDea7e3257-59b1-4519-adb2-51170933e838"}},{"type":"GetParameter","id":"EIDe67f8f06-c13e-4fd3-9ca8-39dc9e80df83","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID56398354-38c8-4377-8a62-cec9d76bac1c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID56398354-38c8-4377-8a62-cec9d76bac1c"}},{"type":"ServiceEndpoint","id":"EIDef466c43-e42b-4e54-893e-0e5d0771eb2b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID0e90f01b-e30f-48ce-a2d3-946be31c86d0","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID0e90f01b-e30f-48ce-a2d3-946be31c86d0"}},{"type":"GetParameter","id":"EID277bf738-0dda-4a1a-b2f4-48d17a87728c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19vcHBlcnZsYWt0ZXdhdGVybGljaGFtZW5fbmxkX2V1MjAwOV9sX2dwa2cuemlw"},{"type":"ServiceEndpoint","id":"EID17598d1b-d213-4c49-8909-d9e0aa438218","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDe18e507e-39a4-407c-8376-b4a8b6baeca5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID9de7bc7a-d158-4e25-8f5d-b2b619c9cc48","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID9de7bc7a-d158-4e25-8f5d-b2b619c9cc48"}},{"type":"Message","id":"EID6e86b229-a232-4fc3-a66c-de060b666600","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID6e86b229-a232-4fc3-a66c-de060b666600"}},{"type":"ServiceEndpoint","id":"EIDfd11fefc-ffdd-4704-a9e1-ec715399f41b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID4851959c-e6b4-49cc-9c04-fa05d8ed68ff","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19vcHBlcnZsYWt0ZXdhdGVybGljaGFtZW5fbmxkX2V1MjAwOV92X2dwa2cuemlw"},{"type":"ServiceResponse","id":"EIDa302d1c2-2815-4609-9f28-aae0028b2737","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDa302d1c2-2815-4609-9f28-aae0028b2737"}},{"type":"Message","id":"EID70576ed2-442e-4fb0-8390-39b3f493b81c","label":"Message.16","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID70576ed2-442e-4fb0-8390-39b3f493b81c"}},{"type":"ServiceEndpoint","id":"EID8731c67a-0084-4dcb-b4d4-684a9e417795","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID0f023c78-e88c-4b00-8d1d-44e5875236ed","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID0f023c78-e88c-4b00-8d1d-44e5875236ed"}},{"type":"ServiceResponse","id":"EID878b11d3-7aa4-4662-9e75-a82f4d4f9975","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID878b11d3-7aa4-4662-9e75-a82f4d4f9975"}},{"type":"Message","id":"EID4a4a6ec8-cdbb-4614-b847-938dc9b755c0","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID4a4a6ec8-cdbb-4614-b847-938dc9b755c0"}},{"type":"ServiceEndpoint","id":"EIDf2526174-2252-4f52-b051-fc41ef1a4451","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID689b4bac-b6dc-4a3a-8e74-4336531be9b1","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID689b4bac-b6dc-4a3a-8e74-4336531be9b1"}},{"type":"Message","id":"EID96143d58-7720-49cf-a9e8-676c15f7af58","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID96143d58-7720-49cf-a9e8-676c15f7af58"}},{"type":"ServiceResponse","id":"EID5403ee42-c614-4302-b780-8dec64ff3466","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID5403ee42-c614-4302-b780-8dec64ff3466"}},{"type":"ServiceResponse","id":"EID17725254-41e8-4759-a31d-bb4de3e61561","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID17725254-41e8-4759-a31d-bb4de3e61561"}},{"type":"ServiceResponse","id":"EIDca9682c3-d89e-463a-b2e4-c1cecd2ce10b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDca9682c3-d89e-463a-b2e4-c1cecd2ce10b"}},{"type":"Message","id":"EID8c8b25fb-2ab3-46fb-8218-0f4039656738","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID8c8b25fb-2ab3-46fb-8218-0f4039656738"}},{"type":"GetParameter","id":"EID3f5c1cf7-f204-4b55-a89d-4b5ffb5a6505","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID18948873-4ab0-410b-ad63-5f7ca2c067dc","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID18948873-4ab0-410b-ad63-5f7ca2c067dc"}},{"type":"Message","id":"EID959b078a-ff9e-477d-856f-570796745729","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID959b078a-ff9e-477d-856f-570796745729"}},{"type":"GetParameter","id":"EID2b9f097d-77b9-4ec0-9b4d-dec99557000c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EID863a05f4-9dc6-47ca-aac1-3f9ff27ccb78","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID863a05f4-9dc6-47ca-aac1-3f9ff27ccb78"}},{"type":"GetParameter","id":"EID68754c66-ab9e-44b0-bee4-84b4fb5f5e0e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EIDbb829ee3-903e-4d6f-8587-6fb53f1bcd98","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID53090a6b-9294-4d95-a6a0-02638e2c00e6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDa324c22c-a28d-45fe-afe4-7a99e4ee802f","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDa324c22c-a28d-45fe-afe4-7a99e4ee802f"}},{"type":"GetParameter","id":"EIDbd848bad-d1a4-4a1d-9495-c302eb560efc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDbda6db02-1d70-4311-9b16-679ef8409a9a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EID5419d652-9bcf-4648-ab2e-c2aa27816f8a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"Message","id":"EID852d15ab-09d1-417b-8c2a-2dcbdb69158a","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID852d15ab-09d1-417b-8c2a-2dcbdb69158a"}},{"type":"GetParameter","id":"EID1b6c4b8c-f136-4a89-9c9f-bc9581d3c563","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDbc67bf72-a7a7-4ea5-8834-e58383519bb1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDa600fc94-c42b-42b1-8759-16af25455044","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDa600fc94-c42b-42b1-8759-16af25455044"}},{"type":"Message","id":"EID5c3ac8b2-6ba4-4e4e-992a-d9675a5b344c","label":"Message.19","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID5c3ac8b2-6ba4-4e4e-992a-d9675a5b344c"}},{"type":"ServiceEndpoint","id":"EID9fbc0c26-c0e0-4136-844c-a06183ddbb56","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"Message","id":"EIDa8c1b13d-4841-4647-80b3-b5cae63f9e0d","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDa8c1b13d-4841-4647-80b3-b5cae63f9e0d"}},{"type":"Message","id":"EIDef977b21-f84c-4961-a901-7d056408da8f","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDef977b21-f84c-4961-a901-7d056408da8f"}},{"type":"Message","id":"EID90ab926e-fadf-4e0c-a67a-ab5ce71b3803","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID90ab926e-fadf-4e0c-a67a-ab5ce71b3803"}},{"type":"ServiceEndpoint","id":"EIDc53c310d-6122-47e3-bb21-e195e6b95d41","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDcc73cb4e-cb96-4b42-b714-1f6a294f5278","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDcc73cb4e-cb96-4b42-b714-1f6a294f5278"}},{"type":"Message","id":"EID3807af87-601f-44a9-b724-46ce11d71a65","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID3807af87-601f-44a9-b724-46ce11d71a65"}},{"type":"Message","id":"EID692520d1-96f0-4d9a-a9aa-13b3436d5ec7","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID692520d1-96f0-4d9a-a9aa-13b3436d5ec7"}},{"type":"Message","id":"EID078b3d5f-7e38-49c8-b6f2-0c44e2d3d9b7","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID078b3d5f-7e38-49c8-b6f2-0c44e2d3d9b7"}},{"type":"GetParameter","id":"EIDdfcc9074-5334-45b4-9479-19e8b144b086","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"Message","id":"EIDd87196be-e67b-4c57-83de-e998699ff77d","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDd87196be-e67b-4c57-83de-e998699ff77d"}},{"type":"ServiceEndpoint","id":"EIDefe817da-6380-485f-91de-55ae28da66c5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EID7e2c4662-de24-41e2-82ce-b24677b27b21","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID7e2c4662-de24-41e2-82ce-b24677b27b21"}},{"type":"ServiceResponse","id":"EID2da0e96d-2bd1-4fb5-9560-89c13d606ff1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID2da0e96d-2bd1-4fb5-9560-89c13d606ff1"}},{"type":"ServiceEndpoint","id":"EID6048f366-a8d7-4fe3-b96c-72bde3d6ac9e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EIDdbc1271c-c3a1-4983-8951-be0a133020bc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDdbc1271c-c3a1-4983-8951-be0a133020bc"}},{"type":"GetParameter","id":"EIDccde368a-84c6-4399-942f-b76b8c64d0e1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID453abcdc-77ae-41e1-b32e-15b4346d695a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID453abcdc-77ae-41e1-b32e-15b4346d695a"}},{"type":"ServiceEndpoint","id":"EIDb51013ea-88ad-46b3-a329-bb8755a96372","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EIDedbedccc-2b5e-4bdf-a541-9a8e65d6cba2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDedbedccc-2b5e-4bdf-a541-9a8e65d6cba2"}},{"type":"ServiceResponse","id":"EID16334b3a-a201-4a66-af33-cd3de6309682","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID16334b3a-a201-4a66-af33-cd3de6309682"}},{"type":"GetParameter","id":"EIDc207b57c-253a-4b2f-a5d3-527bb2c1bf23","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"GetParameter","id":"EID95486dea-ec68-4764-a5a8-aec57b9b313e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDcd9a7539-53d2-4fa6-b59b-b6e62db838d7","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDcd9a7539-53d2-4fa6-b59b-b6e62db838d7"}},{"type":"ServiceResponse","id":"EID4d314868-9031-45f4-a5c1-be4fd0b26601","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID4d314868-9031-45f4-a5c1-be4fd0b26601"}},{"type":"GetParameter","id":"EIDa403e95d-b989-44c7-840d-52ec40c2eec8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvZG93bmxvYWRzL2tyd19vcHBlcnZsYWt0ZXdhdGVybGljaGFtZW5fbmxkX2V1MjAwOV92X2dwa2cuemlw"},{"type":"ServiceResponse","id":"EID3725afd0-7ec6-4159-80c8-3d1a46d5ad5c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID3725afd0-7ec6-4159-80c8-3d1a46d5ad5c"}},{"type":"ServiceEndpoint","id":"EIDd09ecdd8-f73b-4680-9942-ee1be6529af7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9lOTE3MTliMS1hMTM5LTQyY2YtOGExYS1kYjc4Y2Q3NDc3ZjgvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDef6c1079-e292-4293-a150-945230e051bd","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDef6c1079-e292-4293-a150-945230e051bd"}},{"type":"ServiceEndpoint","id":"EIDe06576c1-7835-49d9-a618-0bb8166a277c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceEndpoint","id":"EID8cc4383d-e821-49af-af62-6913c2009574","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EID1432cf4c-7b1c-4881-bd88-3048d178abf1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDa94ec337-6bbb-4780-8fc9-6bebf5605d6c","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDa94ec337-6bbb-4780-8fc9-6bebf5605d6c"}},{"type":"Message","id":"EID8824f6b8-67e9-433c-8839-940415f5cd54","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID8824f6b8-67e9-433c-8839-940415f5cd54"}},{"type":"GetParameter","id":"EID4bfc15f1-9474-4b33-8959-125d7d262ea4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDaf22884f-886c-402f-b716-49e0a563cc38","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"Message","id":"EIDe0d969ed-3020-41c3-b9bc-3472c49caabf","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDe0d969ed-3020-41c3-b9bc-3472c49caabf"}},{"type":"Message","id":"EID83c2f604-5c4b-48fc-b5ff-e140c464062a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID83c2f604-5c4b-48fc-b5ff-e140c464062a"}},{"type":"Message","id":"EID73ff2a89-3d74-43c9-b48f-fbd86f4524a0","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID73ff2a89-3d74-43c9-b48f-fbd86f4524a0"}},{"type":"Message","id":"EID5b9d505e-6373-4d61-ab44-aa4d5e278d7c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID5b9d505e-6373-4d61-ab44-aa4d5e278d7c"}},{"type":"ServiceResponse","id":"EID59876664-95b0-4c55-9c03-34f40dd46059","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID59876664-95b0-4c55-9c03-34f40dd46059"}},{"type":"ServiceEndpoint","id":"EID3f4bc5a5-49cb-4462-804c-9d594abe86f7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAva3J3X29wcGVydmxha3Rld2F0ZXJsaWNoYW1lbl9ubGRfZXUyMDA5X3YueG1s"},{"type":"ServiceResponse","id":"EIDe92d2760-f3cc-4bb9-a541-88704479fedb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDe92d2760-f3cc-4bb9-a541-88704479fedb"}},{"type":"LogFile","id":"EID31ee94ca-78d4-4649-9f04-cc683e5c4571","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID31ee94ca-78d4-4649-9f04-cc683e5c4571"}},{"type":"Message","id":"EIDf8bde63b-e065-4b8e-be1a-7c6c8dff8cd1","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDf8bde63b-e065-4b8e-be1a-7c6c8dff8cd1"}},{"type":"Message","id":"EIDd59b9612-1182-493f-b566-eb23e2ac5f0f","label":"Message.20","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDd59b9612-1182-493f-b566-eb23e2ac5f0f"}},{"type":"ServiceEndpoint","id":"EID43d06bfe-5c44-4bac-8018-6e417017fab4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EID8261c750-d243-4e4d-bc1d-537aca4a773d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID191e6374-a7bc-4712-b899-91c838012ebe","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbndhdGVyMjAwOS9hdG9tL3YxXzAvaW5kZXgueG1s"},{"type":"Message","id":"EIDe461e8c5-dd27-4c34-85c6-023f3d3a4fd8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDe461e8c5-dd27-4c34-85c6-023f3d3a4fd8"}},{"type":"Message","id":"EID142a551e-f715-40c2-b91c-248e636ab0f1","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID142a551e-f715-40c2-b91c-248e636ab0f1"}},{"type":"Message","id":"EID922b4a86-1992-4102-b3e5-ba48fee23976","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EID922b4a86-1992-4102-b3e5-ba48fee23976"}},{"type":"ServiceResponse","id":"EIDbd3e308c-4cce-48d2-9801-a9c21d5285ea","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb3b016fb-db8a-41e1-8ef3-0654331882dd/Attachments/EIDbd3e308c-4cce-48d2-9801-a9c21d5285ea"}},{"type":"GetParameter","id":"EIDede77124-8d18-41ae-a991-037a8fbd4af1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:21:43Z","duration":46438,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.005
13:22:57.206 [print] EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65
* print response.EtfItemCollection.testRuns.TestRun.status 0.024
13:22:57.231 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:22:57.231 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:22:57.231 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:22:57.231 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/ae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:22:57.231 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/ae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:22:57.231 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDae6ba7bd-2abf-42f4-bf0b-38c0f12e4a65/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.017
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
13:22:57.250 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.001
* print refs 0.001
13:22:57.254 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* print sortedrefs 0.000
13:22:57.255 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1:53.205
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:19:09.891 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 6.615
13:19:09.892 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}

13:19:16.464 response time in milliseconds: 5815.65
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:19:15 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:19:13 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/8898f494-3de2-4aba-87d4-11535b186acf.json","testRuns":{"TestRun":{"id":"EID8898f494-3de2-4aba-87d4-11535b186acf","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:19:12.389Z","testTasks":{"TestTask":{"id":"EIDcab3fd5b-1c50-49ad-a324-42ecf30e7447","parent":{"ref":"EID8898f494-3de2-4aba-87d4-11535b186acf"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDb6315bf6-c8c5-4458-a745-158ff9ed8430"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDb6315bf6-c8c5-4458-a745-158ff9ed8430","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:19:10.332Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:19:11.885Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:19:16.507 [print] EID8898f494-3de2-4aba-87d4-11535b186acf
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:19:16.507 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:19:16.508 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:19:16.508 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/8898f494-3de2-4aba-87d4-11535b186acf.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:19:16.508 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:19:16.508 [print] statuspath TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf
* print 'progresspath ', progresspath 0.000
13:19:16.508 [print] progresspath  TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
Given path progresspath 0.000
When method GET 0.513
13:19:16.509 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:17.022 response time in milliseconds: 512.53
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:19:16 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)","27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:12 - Preparing 1 Test Task:","27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)","27.10.2020 13:19:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:12 -  with parameters: ","27.10.2020 13:19:12 - etf.testcases = *","27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:12 - Setting state to CREATED","27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z","27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:14 - Project Properties: ","27.10.2020 13:19:14 - etf.testcases - * ","27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:14 - username -  ","27.10.2020 13:19:14 - authUser -  ","27.10.2020 13:19:14 - authMethod - basic ","27.10.2020 13:19:14 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:19:17.022 [print] {
  "val": "21",
  "max": "22",
  "log": [
    "27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)",
    "27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:19:12 - Preparing 1 Test Task:",
    "27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)",
    "27.10.2020 13:19:12 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:19:12 -  with parameters: ",
    "27.10.2020 13:19:12 - etf.testcases = *",
    "27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:19:12 - Setting state to CREATED",
    "27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z",
    "27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:19:14 - Project Properties: ",
    "27.10.2020 13:19:14 - etf.testcases - * ",
    "27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ",
    "27.10.2020 13:19:14 - username -  ",
    "27.10.2020 13:19:14 - authUser -  ",
    "27.10.2020 13:19:14 - authMethod - basic ",
    "27.10.2020 13:19:14 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 1:46.075
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:62 - too many retry attempts: 20
13:19:17.023 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:17.532 response time in milliseconds: 508.46
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:19:17 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"30","max":"31","log":["27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)","27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:12 - Preparing 1 Test Task:","27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)","27.10.2020 13:19:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:12 -  with parameters: ","27.10.2020 13:19:12 - etf.testcases = *","27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:12 - Setting state to CREATED","27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z","27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:14 - Project Properties: ","27.10.2020 13:19:14 - etf.testcases - * ","27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:14 - username -  ","27.10.2020 13:19:14 - authUser -  ","27.10.2020 13:19:14 - authMethod - basic ","27.10.2020 13:19:14 - TestRunTask initialized"]}

13:19:17.532 retry condition not satisfied: response.val == response.max
13:19:17.532 sleeping before retry #1
13:19:22.533 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:23.081 response time in milliseconds: 545.50
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:19:23 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"62","max":"63","log":["27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)","27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:12 - Preparing 1 Test Task:","27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)","27.10.2020 13:19:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:12 -  with parameters: ","27.10.2020 13:19:12 - etf.testcases = *","27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:12 - Setting state to CREATED","27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z","27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:14 - Project Properties: ","27.10.2020 13:19:14 - etf.testcases - * ","27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:14 - username -  ","27.10.2020 13:19:14 - authUser -  ","27.10.2020 13:19:14 - authMethod - basic ","27.10.2020 13:19:14 - TestRunTask initialized","27.10.2020 13:19:21 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}

13:19:23.082 retry condition not satisfied: response.val == response.max
13:19:23.082 sleeping before retry #2
13:19:28.083 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:28.591 response time in milliseconds: 507.54
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:19:28 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"145","max":"146","log":["27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)","27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:12 - Preparing 1 Test Task:","27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)","27.10.2020 13:19:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:12 -  with parameters: ","27.10.2020 13:19:12 - etf.testcases = *","27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:12 - Setting state to CREATED","27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z","27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:14 - Project Properties: ","27.10.2020 13:19:14 - etf.testcases - * ","27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:14 - username -  ","27.10.2020 13:19:14 - authUser -  ","27.10.2020 13:19:14 - authMethod - basic ","27.10.2020 13:19:14 - TestRunTask initialized","27.10.2020 13:19:21 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:19:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:19:28.591 retry condition not satisfied: response.val == response.max
13:19:28.591 sleeping before retry #3
13:19:33.592 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:34.099 response time in milliseconds: 506.62
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:19:34 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)","27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:12 - Preparing 1 Test Task:","27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)","27.10.2020 13:19:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:12 -  with parameters: ","27.10.2020 13:19:12 - etf.testcases = *","27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:12 - Setting state to CREATED","27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z","27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:14 - Project Properties: ","27.10.2020 13:19:14 - etf.testcases - * ","27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:14 - username -  ","27.10.2020 13:19:14 - authUser -  ","27.10.2020 13:19:14 - authMethod - basic ","27.10.2020 13:19:14 - TestRunTask initialized","27.10.2020 13:19:21 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:19:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:19:34.100 retry condition not satisfied: response.val == response.max
13:19:34.100 sleeping before retry #4
13:19:39.101 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:39.617 response time in milliseconds: 515.46
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:19:39 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)","27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:12 - Preparing 1 Test Task:","27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)","27.10.2020 13:19:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:12 -  with parameters: ","27.10.2020 13:19:12 - etf.testcases = *","27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:12 - Setting state to CREATED","27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z","27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:14 - Project Properties: ","27.10.2020 13:19:14 - etf.testcases - * ","27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:14 - username -  ","27.10.2020 13:19:14 - authUser -  ","27.10.2020 13:19:14 - authMethod - basic ","27.10.2020 13:19:14 - TestRunTask initialized","27.10.2020 13:19:21 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:19:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:19:39.618 retry condition not satisfied: response.val == response.max
13:19:39.618 sleeping before retry #5
13:19:44.619 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:45.132 response time in milliseconds: 511.98
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:19:45 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)","27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:12 - Preparing 1 Test Task:","27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)","27.10.2020 13:19:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:12 -  with parameters: ","27.10.2020 13:19:12 - etf.testcases = *","27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:12 - Setting state to CREATED","27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z","27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:14 - Project Properties: ","27.10.2020 13:19:14 - etf.testcases - * ","27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:14 - username -  ","27.10.2020 13:19:14 - authUser -  ","27.10.2020 13:19:14 - authMethod - basic ","27.10.2020 13:19:14 - TestRunTask initialized","27.10.2020 13:19:21 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:19:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:19:45.132 retry condition not satisfied: response.val == response.max
13:19:45.133 sleeping before retry #6
13:19:50.133 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:50.643 response time in milliseconds: 509.28
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:19:50 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)","27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:12 - Preparing 1 Test Task:","27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)","27.10.2020 13:19:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:12 -  with parameters: ","27.10.2020 13:19:12 - etf.testcases = *","27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:12 - Setting state to CREATED","27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z","27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:14 - Project Properties: ","27.10.2020 13:19:14 - etf.testcases - * ","27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:14 - username -  ","27.10.2020 13:19:14 - authUser -  ","27.10.2020 13:19:14 - authMethod - basic ","27.10.2020 13:19:14 - TestRunTask initialized","27.10.2020 13:19:21 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:19:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:19:50.643 retry condition not satisfied: response.val == response.max
13:19:50.644 sleeping before retry #7
13:19:55.645 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:56.165 response time in milliseconds: 519.52
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Tue, 27 Oct 2020 13:19:56 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)","27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:12 - Preparing 1 Test Task:","27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)","27.10.2020 13:19:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:12 -  with parameters: ","27.10.2020 13:19:12 - etf.testcases = *","27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:12 - Setting state to CREATED","27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z","27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:14 - Project Properties: ","27.10.2020 13:19:14 - etf.testcases - * ","27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:14 - username -  ","27.10.2020 13:19:14 - authUser -  ","27.10.2020 13:19:14 - authMethod - basic ","27.10.2020 13:19:14 - TestRunTask initialized","27.10.2020 13:19:21 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:19:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:19:56.165 retry condition not satisfied: response.val == response.max
13:19:56.165 sleeping before retry #8
13:20:01.166 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:01.688 response time in milliseconds: 520.97
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Tue, 27 Oct 2020 13:20:01 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)","27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:12 - Preparing 1 Test Task:","27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)","27.10.2020 13:19:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:12 -  with parameters: ","27.10.2020 13:19:12 - etf.testcases = *","27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:12 - Setting state to CREATED","27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z","27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:14 - Project Properties: ","27.10.2020 13:19:14 - etf.testcases - * ","27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:14 - username -  ","27.10.2020 13:19:14 - authUser -  ","27.10.2020 13:19:14 - authMethod - basic ","27.10.2020 13:19:14 - TestRunTask initialized","27.10.2020 13:19:21 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:19:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:20:01.688 retry condition not satisfied: response.val == response.max
13:20:01.688 sleeping before retry #9
13:20:06.689 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:07.931 response time in milliseconds: 1241.86
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Tue, 27 Oct 2020 13:20:07 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)","27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:12 - Preparing 1 Test Task:","27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)","27.10.2020 13:19:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:12 -  with parameters: ","27.10.2020 13:19:12 - etf.testcases = *","27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:12 - Setting state to CREATED","27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z","27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:14 - Project Properties: ","27.10.2020 13:19:14 - etf.testcases - * ","27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:14 - username -  ","27.10.2020 13:19:14 - authUser -  ","27.10.2020 13:19:14 - authMethod - basic ","27.10.2020 13:19:14 - TestRunTask initialized","27.10.2020 13:19:21 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:19:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:20:07.932 retry condition not satisfied: response.val == response.max
13:20:07.932 sleeping before retry #10
13:20:12.933 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:13.469 response time in milliseconds: 535.68
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Tue, 27 Oct 2020 13:20:13 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)","27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:12 - Preparing 1 Test Task:","27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)","27.10.2020 13:19:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:12 -  with parameters: ","27.10.2020 13:19:12 - etf.testcases = *","27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:12 - Setting state to CREATED","27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z","27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:14 - Project Properties: ","27.10.2020 13:19:14 - etf.testcases - * ","27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:14 - username -  ","27.10.2020 13:19:14 - authUser -  ","27.10.2020 13:19:14 - authMethod - basic ","27.10.2020 13:19:14 - TestRunTask initialized","27.10.2020 13:19:21 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:19:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:20:09 ERROR Response did not meet SLA 30666/30000","27.10.2020 13:20:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:20:12 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:20:13.469 retry condition not satisfied: response.val == response.max
13:20:13.469 sleeping before retry #11
13:20:18.470 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:18.987 response time in milliseconds: 516.49
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Tue, 27 Oct 2020 13:20:18 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)","27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:12 - Preparing 1 Test Task:","27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)","27.10.2020 13:19:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:12 -  with parameters: ","27.10.2020 13:19:12 - etf.testcases = *","27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:12 - Setting state to CREATED","27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z","27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:14 - Project Properties: ","27.10.2020 13:19:14 - etf.testcases - * ","27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:14 - username -  ","27.10.2020 13:19:14 - authUser -  ","27.10.2020 13:19:14 - authMethod - basic ","27.10.2020 13:19:14 - TestRunTask initialized","27.10.2020 13:19:21 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:19:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:20:09 ERROR Response did not meet SLA 30666/30000","27.10.2020 13:20:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:20:12 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:20:18.987 retry condition not satisfied: response.val == response.max
13:20:18.987 sleeping before retry #12
13:20:23.988 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:24.488 response time in milliseconds: 499.31
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Tue, 27 Oct 2020 13:20:24 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)","27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:12 - Preparing 1 Test Task:","27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)","27.10.2020 13:19:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:12 -  with parameters: ","27.10.2020 13:19:12 - etf.testcases = *","27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:12 - Setting state to CREATED","27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z","27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:14 - Project Properties: ","27.10.2020 13:19:14 - etf.testcases - * ","27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:14 - username -  ","27.10.2020 13:19:14 - authUser -  ","27.10.2020 13:19:14 - authMethod - basic ","27.10.2020 13:19:14 - TestRunTask initialized","27.10.2020 13:19:21 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:19:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:20:09 ERROR Response did not meet SLA 30666/30000","27.10.2020 13:20:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:20:12 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:20:24.488 retry condition not satisfied: response.val == response.max
13:20:24.488 sleeping before retry #13
13:20:29.489 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:30.011 response time in milliseconds: 517.74
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Tue, 27 Oct 2020 13:20:29 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)","27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:12 - Preparing 1 Test Task:","27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)","27.10.2020 13:19:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:12 -  with parameters: ","27.10.2020 13:19:12 - etf.testcases = *","27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:12 - Setting state to CREATED","27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z","27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:14 - Project Properties: ","27.10.2020 13:19:14 - etf.testcases - * ","27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:14 - username -  ","27.10.2020 13:19:14 - authUser -  ","27.10.2020 13:19:14 - authMethod - basic ","27.10.2020 13:19:14 - TestRunTask initialized","27.10.2020 13:19:21 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:19:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:20:09 ERROR Response did not meet SLA 30666/30000","27.10.2020 13:20:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:20:12 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:20:30.011 retry condition not satisfied: response.val == response.max
13:20:30.011 sleeping before retry #14
13:20:35.012 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:35.512 response time in milliseconds: 499.07
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Tue, 27 Oct 2020 13:20:35 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)","27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:12 - Preparing 1 Test Task:","27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)","27.10.2020 13:19:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:12 -  with parameters: ","27.10.2020 13:19:12 - etf.testcases = *","27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:12 - Setting state to CREATED","27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z","27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:14 - Project Properties: ","27.10.2020 13:19:14 - etf.testcases - * ","27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:14 - username -  ","27.10.2020 13:19:14 - authUser -  ","27.10.2020 13:19:14 - authMethod - basic ","27.10.2020 13:19:14 - TestRunTask initialized","27.10.2020 13:19:21 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:19:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:20:09 ERROR Response did not meet SLA 30666/30000","27.10.2020 13:20:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:20:12 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:20:35.514 retry condition not satisfied: response.val == response.max
13:20:35.514 sleeping before retry #15
13:20:40.515 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:41.024 response time in milliseconds: 508.61
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Tue, 27 Oct 2020 13:20:40 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)","27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:12 - Preparing 1 Test Task:","27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)","27.10.2020 13:19:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:12 -  with parameters: ","27.10.2020 13:19:12 - etf.testcases = *","27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:12 - Setting state to CREATED","27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z","27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:14 - Project Properties: ","27.10.2020 13:19:14 - etf.testcases - * ","27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:14 - username -  ","27.10.2020 13:19:14 - authUser -  ","27.10.2020 13:19:14 - authMethod - basic ","27.10.2020 13:19:14 - TestRunTask initialized","27.10.2020 13:19:21 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:19:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:20:09 ERROR Response did not meet SLA 30666/30000","27.10.2020 13:20:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:20:12 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:20:41.025 retry condition not satisfied: response.val == response.max
13:20:41.025 sleeping before retry #16
13:20:46.025 request:
19 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
19 > Accept-Encoding: gzip,deflate
19 > Connection: Keep-Alive
19 > Host: inspire.ec.europa.eu
19 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:46.531 response time in milliseconds: 504.85
19 < 200
19 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
19 < Connection: Keep-Alive
19 < Content-Type: application/json;charset=UTF-8
19 < Date: Tue, 27 Oct 2020 13:20:46 GMT
19 < Keep-Alive: timeout=3, max=100
19 < Server: nginx/1.16.1
19 < Vary: Origin
19 < X-Frame-Options: SAMEORIGIN
19 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)","27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:12 - Preparing 1 Test Task:","27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)","27.10.2020 13:19:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:12 -  with parameters: ","27.10.2020 13:19:12 - etf.testcases = *","27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:12 - Setting state to CREATED","27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z","27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:14 - Project Properties: ","27.10.2020 13:19:14 - etf.testcases - * ","27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:14 - username -  ","27.10.2020 13:19:14 - authUser -  ","27.10.2020 13:19:14 - authMethod - basic ","27.10.2020 13:19:14 - TestRunTask initialized","27.10.2020 13:19:21 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:19:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:20:09 ERROR Response did not meet SLA 30666/30000","27.10.2020 13:20:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:20:12 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:20:46.531 retry condition not satisfied: response.val == response.max
13:20:46.531 sleeping before retry #17
13:20:51.532 request:
20 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
20 > Accept-Encoding: gzip,deflate
20 > Connection: Keep-Alive
20 > Host: inspire.ec.europa.eu
20 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:52.062 response time in milliseconds: 528.23
20 < 200
20 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
20 < Connection: Keep-Alive
20 < Content-Type: application/json;charset=UTF-8
20 < Date: Tue, 27 Oct 2020 13:20:51 GMT
20 < Keep-Alive: timeout=3, max=100
20 < Server: nginx/1.16.1
20 < Vary: Origin
20 < X-Frame-Options: SAMEORIGIN
20 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)","27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:12 - Preparing 1 Test Task:","27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)","27.10.2020 13:19:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:12 -  with parameters: ","27.10.2020 13:19:12 - etf.testcases = *","27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:12 - Setting state to CREATED","27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z","27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:14 - Project Properties: ","27.10.2020 13:19:14 - etf.testcases - * ","27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:14 - username -  ","27.10.2020 13:19:14 - authUser -  ","27.10.2020 13:19:14 - authMethod - basic ","27.10.2020 13:19:14 - TestRunTask initialized","27.10.2020 13:19:21 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:19:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:20:09 ERROR Response did not meet SLA 30666/30000","27.10.2020 13:20:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:20:12 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:20:52.062 retry condition not satisfied: response.val == response.max
13:20:52.062 sleeping before retry #18
13:20:57.063 request:
21 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
21 > Accept-Encoding: gzip,deflate
21 > Connection: Keep-Alive
21 > Host: inspire.ec.europa.eu
21 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:20:57.586 response time in milliseconds: 522.35
21 < 200
21 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
21 < Connection: Keep-Alive
21 < Content-Type: application/json;charset=UTF-8
21 < Date: Tue, 27 Oct 2020 13:20:57 GMT
21 < Keep-Alive: timeout=3, max=100
21 < Server: nginx/1.16.1
21 < Vary: Origin
21 < X-Frame-Options: SAMEORIGIN
21 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)","27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:12 - Preparing 1 Test Task:","27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)","27.10.2020 13:19:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:12 -  with parameters: ","27.10.2020 13:19:12 - etf.testcases = *","27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:12 - Setting state to CREATED","27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z","27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:14 - Project Properties: ","27.10.2020 13:19:14 - etf.testcases - * ","27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:14 - username -  ","27.10.2020 13:19:14 - authUser -  ","27.10.2020 13:19:14 - authMethod - basic ","27.10.2020 13:19:14 - TestRunTask initialized","27.10.2020 13:19:21 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:19:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:20:09 ERROR Response did not meet SLA 30666/30000","27.10.2020 13:20:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:20:12 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:20:57.586 retry condition not satisfied: response.val == response.max
13:20:57.586 sleeping before retry #19
13:21:02.587 request:
22 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID8898f494-3de2-4aba-87d4-11535b186acf/progress
22 > Accept-Encoding: gzip,deflate
22 > Connection: Keep-Alive
22 > Host: inspire.ec.europa.eu
22 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:21:03.097 response time in milliseconds: 509.40
22 < 200
22 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
22 < Connection: Keep-Alive
22 < Content-Type: application/json;charset=UTF-8
22 < Date: Tue, 27 Oct 2020 13:21:03 GMT
22 < Keep-Alive: timeout=3, max=100
22 < Server: nginx/1.16.1
22 < Vary: Origin
22 < X-Frame-Options: SAMEORIGIN
22 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:19:12 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:12 UTC 2020)","27.10.2020 13:19:12 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:12 - Preparing 1 Test Task:","27.10.2020 13:19:12 -  TestTask 1 (cab3fd5b-1c50-49ad-a324-42ecf30e7447)","27.10.2020 13:19:12 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:12 -  with parameters: ","27.10.2020 13:19:12 - etf.testcases = *","27.10.2020 13:19:12 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:12 - Setting state to CREATED","27.10.2020 13:19:12 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:13 - Starting TestRun.8898f494-3de2-4aba-87d4-11535b186acf at 2020-10-27T13:19:14Z","27.10.2020 13:19:14 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:14 - Project Properties: ","27.10.2020 13:19:14 - etf.testcases - * ","27.10.2020 13:19:14 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:19:14 - username -  ","27.10.2020 13:19:14 - authUser -  ","27.10.2020 13:19:14 - authMethod - basic ","27.10.2020 13:19:14 - TestRunTask initialized","27.10.2020 13:19:21 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:19:26 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:20:09 ERROR Response did not meet SLA 30666/30000","27.10.2020 13:20:09 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:20:12 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:21:03.097 retry condition not satisfied: response.val == response.max
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
30.338
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:12:36.980 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 30.338
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:38 - 
java.net.SocketTimeoutException: Read timed out
13:12:36.981 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 295
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/richtlijnstedelijkafvalwater2015/atom/v1_0/index.xml"}}}

13:13:07.318 java.net.SocketTimeoutException: Read timed out, http call failed after 30337 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns
13:13:07.318 http request failed: 
java.net.SocketTimeoutException: Read timed out
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1:13.596
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.001
13:12:29.718 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 21.442
13:12:29.720 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

13:12:51.159 response time in milliseconds: 20699.55
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:12:50 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:12:47 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/f594fa8d-7f7d-46a7-b630-af830c0c81f8.json","testRuns":{"TestRun":{"id":"EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:12:43.273Z","testTasks":{"TestTask":{"id":"EID7a90610c-235d-422e-b857-e0223b56dbd3","parent":{"ref":"EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDc3cb958a-ff98-4080-a6a7-1af4b2b4777e"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDc3cb958a-ff98-4080-a6a7-1af4b2b4777e","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:12:30.151Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:12:35.814Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:12:51.162 [print] EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8
* print response.EtfItemCollection.testRuns.TestRun.status 0.001
13:12:51.163 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:12:51.164 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:12:51.164 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/f594fa8d-7f7d-46a7-b630-af830c0c81f8.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:12:51.164 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.003
* print 'statuspath', statuspath 0.000
13:12:51.169 [print] statuspath TestRuns/EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8
* print 'progresspath ', progresspath 0.000
13:12:51.169 [print] progresspath  TestRuns/EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8/progress
Given path progresspath 0.000
When method GET 0.584
13:12:51.170 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:12:51.753 response time in milliseconds: 583.15
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:12:51 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["27.10.2020 13:12:43 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:12:43 UTC 2020)","27.10.2020 13:12:43 - Resolving Executable Test Suite dependencies","27.10.2020 13:12:43 - Preparing 1 Test Task:","27.10.2020 13:12:43 -  TestTask 1 (7a90610c-235d-422e-b857-e0223b56dbd3)","27.10.2020 13:12:43 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:12:43 -  with parameters: ","27.10.2020 13:12:43 - etf.testcases = *","27.10.2020 13:12:43 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:12:43 - Setting state to CREATED","27.10.2020 13:12:43 - Changed state from CREATED to INITIALIZING","27.10.2020 13:12:47 - Starting TestRun.f594fa8d-7f7d-46a7-b630-af830c0c81f8 at 2020-10-27T13:12:49Z","27.10.2020 13:12:49 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:12:49 - Project Properties: ","27.10.2020 13:12:49 - etf.testcases - * ","27.10.2020 13:12:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:12:49 - username -  ","27.10.2020 13:12:49 - authUser -  ","27.10.2020 13:12:49 - authMethod - basic ","27.10.2020 13:12:49 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:12:51.754 [print] {
  "val": "21",
  "max": "22",
  "log": [
    "27.10.2020 13:12:43 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:12:43 UTC 2020)",
    "27.10.2020 13:12:43 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:12:43 - Preparing 1 Test Task:",
    "27.10.2020 13:12:43 -  TestTask 1 (7a90610c-235d-422e-b857-e0223b56dbd3)",
    "27.10.2020 13:12:43 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:12:43 -  with parameters: ",
    "27.10.2020 13:12:43 - etf.testcases = *",
    "27.10.2020 13:12:43 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:12:43 - Setting state to CREATED",
    "27.10.2020 13:12:43 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:12:47 - Starting TestRun.f594fa8d-7f7d-46a7-b630-af830c0c81f8 at 2020-10-27T13:12:49Z",
    "27.10.2020 13:12:49 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:12:49 - Project Properties: ",
    "27.10.2020 13:12:49 - etf.testcases - * ",
    "27.10.2020 13:12:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "27.10.2020 13:12:49 - username -  ",
    "27.10.2020 13:12:49 - authUser -  ",
    "27.10.2020 13:12:49 - authMethod - basic ",
    "27.10.2020 13:12:49 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 46.239
13:12:51.755 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:12:52.276 response time in milliseconds: 518.07
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:12:52 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"30","max":"31","log":["27.10.2020 13:12:43 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:12:43 UTC 2020)","27.10.2020 13:12:43 - Resolving Executable Test Suite dependencies","27.10.2020 13:12:43 - Preparing 1 Test Task:","27.10.2020 13:12:43 -  TestTask 1 (7a90610c-235d-422e-b857-e0223b56dbd3)","27.10.2020 13:12:43 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:12:43 -  with parameters: ","27.10.2020 13:12:43 - etf.testcases = *","27.10.2020 13:12:43 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:12:43 - Setting state to CREATED","27.10.2020 13:12:43 - Changed state from CREATED to INITIALIZING","27.10.2020 13:12:47 - Starting TestRun.f594fa8d-7f7d-46a7-b630-af830c0c81f8 at 2020-10-27T13:12:49Z","27.10.2020 13:12:49 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:12:49 - Project Properties: ","27.10.2020 13:12:49 - etf.testcases - * ","27.10.2020 13:12:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:12:49 - username -  ","27.10.2020 13:12:49 - authUser -  ","27.10.2020 13:12:49 - authMethod - basic ","27.10.2020 13:12:49 - TestRunTask initialized"]}

13:12:52.277 retry condition not satisfied: response.val == response.max
13:12:52.277 sleeping before retry #1
13:12:57.278 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:12:57.829 response time in milliseconds: 550.27
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:12:57 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"96","max":"97","log":["27.10.2020 13:12:43 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:12:43 UTC 2020)","27.10.2020 13:12:43 - Resolving Executable Test Suite dependencies","27.10.2020 13:12:43 - Preparing 1 Test Task:","27.10.2020 13:12:43 -  TestTask 1 (7a90610c-235d-422e-b857-e0223b56dbd3)","27.10.2020 13:12:43 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:12:43 -  with parameters: ","27.10.2020 13:12:43 - etf.testcases = *","27.10.2020 13:12:43 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:12:43 - Setting state to CREATED","27.10.2020 13:12:43 - Changed state from CREATED to INITIALIZING","27.10.2020 13:12:47 - Starting TestRun.f594fa8d-7f7d-46a7-b630-af830c0c81f8 at 2020-10-27T13:12:49Z","27.10.2020 13:12:49 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:12:49 - Project Properties: ","27.10.2020 13:12:49 - etf.testcases - * ","27.10.2020 13:12:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:12:49 - username -  ","27.10.2020 13:12:49 - authUser -  ","27.10.2020 13:12:49 - authMethod - basic ","27.10.2020 13:12:49 - TestRunTask initialized","27.10.2020 13:12:53 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:12:53 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:12:55 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:12:56 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes"]}

13:12:57.829 retry condition not satisfied: response.val == response.max
13:12:57.829 sleeping before retry #2
13:13:02.830 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:03.378 response time in milliseconds: 541.54
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:13:03 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["27.10.2020 13:12:43 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:12:43 UTC 2020)","27.10.2020 13:12:43 - Resolving Executable Test Suite dependencies","27.10.2020 13:12:43 - Preparing 1 Test Task:","27.10.2020 13:12:43 -  TestTask 1 (7a90610c-235d-422e-b857-e0223b56dbd3)","27.10.2020 13:12:43 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:12:43 -  with parameters: ","27.10.2020 13:12:43 - etf.testcases = *","27.10.2020 13:12:43 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:12:43 - Setting state to CREATED","27.10.2020 13:12:43 - Changed state from CREATED to INITIALIZING","27.10.2020 13:12:47 - Starting TestRun.f594fa8d-7f7d-46a7-b630-af830c0c81f8 at 2020-10-27T13:12:49Z","27.10.2020 13:12:49 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:12:49 - Project Properties: ","27.10.2020 13:12:49 - etf.testcases - * ","27.10.2020 13:12:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:12:49 - username -  ","27.10.2020 13:12:49 - authUser -  ","27.10.2020 13:12:49 - authMethod - basic ","27.10.2020 13:12:49 - TestRunTask initialized","27.10.2020 13:12:53 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:12:53 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:12:55 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:12:56 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:12:59 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:13:00 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:13:00 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:13:00 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:13:00 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:13:03.379 retry condition not satisfied: response.val == response.max
13:13:03.379 sleeping before retry #3
13:13:08.380 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:08.896 response time in milliseconds: 515.54
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:13:08 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["27.10.2020 13:12:43 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:12:43 UTC 2020)","27.10.2020 13:12:43 - Resolving Executable Test Suite dependencies","27.10.2020 13:12:43 - Preparing 1 Test Task:","27.10.2020 13:12:43 -  TestTask 1 (7a90610c-235d-422e-b857-e0223b56dbd3)","27.10.2020 13:12:43 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:12:43 -  with parameters: ","27.10.2020 13:12:43 - etf.testcases = *","27.10.2020 13:12:43 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:12:43 - Setting state to CREATED","27.10.2020 13:12:43 - Changed state from CREATED to INITIALIZING","27.10.2020 13:12:47 - Starting TestRun.f594fa8d-7f7d-46a7-b630-af830c0c81f8 at 2020-10-27T13:12:49Z","27.10.2020 13:12:49 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:12:49 - Project Properties: ","27.10.2020 13:12:49 - etf.testcases - * ","27.10.2020 13:12:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:12:49 - username -  ","27.10.2020 13:12:49 - authUser -  ","27.10.2020 13:12:49 - authMethod - basic ","27.10.2020 13:12:49 - TestRunTask initialized","27.10.2020 13:12:53 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:12:53 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:12:55 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:12:56 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:12:59 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:13:00 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:13:00 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:13:00 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:13:00 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:13:08.896 retry condition not satisfied: response.val == response.max
13:13:08.897 sleeping before retry #4
13:13:13.898 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:14.426 response time in milliseconds: 527.29
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:13:14 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["27.10.2020 13:12:43 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:12:43 UTC 2020)","27.10.2020 13:12:43 - Resolving Executable Test Suite dependencies","27.10.2020 13:12:43 - Preparing 1 Test Task:","27.10.2020 13:12:43 -  TestTask 1 (7a90610c-235d-422e-b857-e0223b56dbd3)","27.10.2020 13:12:43 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:12:43 -  with parameters: ","27.10.2020 13:12:43 - etf.testcases = *","27.10.2020 13:12:43 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:12:43 - Setting state to CREATED","27.10.2020 13:12:43 - Changed state from CREATED to INITIALIZING","27.10.2020 13:12:47 - Starting TestRun.f594fa8d-7f7d-46a7-b630-af830c0c81f8 at 2020-10-27T13:12:49Z","27.10.2020 13:12:49 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:12:49 - Project Properties: ","27.10.2020 13:12:49 - etf.testcases - * ","27.10.2020 13:12:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:12:49 - username -  ","27.10.2020 13:12:49 - authUser -  ","27.10.2020 13:12:49 - authMethod - basic ","27.10.2020 13:12:49 - TestRunTask initialized","27.10.2020 13:12:53 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:12:53 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:12:55 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:12:56 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:12:59 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:13:00 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:13:00 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:13:00 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:13:00 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:13:14.426 retry condition not satisfied: response.val == response.max
13:13:14.426 sleeping before retry #5
13:13:19.427 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:19.943 response time in milliseconds: 511.75
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:13:19 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["27.10.2020 13:12:43 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:12:43 UTC 2020)","27.10.2020 13:12:43 - Resolving Executable Test Suite dependencies","27.10.2020 13:12:43 - Preparing 1 Test Task:","27.10.2020 13:12:43 -  TestTask 1 (7a90610c-235d-422e-b857-e0223b56dbd3)","27.10.2020 13:12:43 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:12:43 -  with parameters: ","27.10.2020 13:12:43 - etf.testcases = *","27.10.2020 13:12:43 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:12:43 - Setting state to CREATED","27.10.2020 13:12:43 - Changed state from CREATED to INITIALIZING","27.10.2020 13:12:47 - Starting TestRun.f594fa8d-7f7d-46a7-b630-af830c0c81f8 at 2020-10-27T13:12:49Z","27.10.2020 13:12:49 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:12:49 - Project Properties: ","27.10.2020 13:12:49 - etf.testcases - * ","27.10.2020 13:12:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:12:49 - username -  ","27.10.2020 13:12:49 - authUser -  ","27.10.2020 13:12:49 - authMethod - basic ","27.10.2020 13:12:49 - TestRunTask initialized","27.10.2020 13:12:53 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:12:53 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:12:55 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:12:56 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:12:59 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:13:00 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:13:00 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:13:00 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:13:00 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:13:19.947 retry condition not satisfied: response.val == response.max
13:13:19.947 sleeping before retry #6
13:13:24.948 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:25.463 response time in milliseconds: 513.09
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:13:25 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["27.10.2020 13:12:43 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:12:43 UTC 2020)","27.10.2020 13:12:43 - Resolving Executable Test Suite dependencies","27.10.2020 13:12:43 - Preparing 1 Test Task:","27.10.2020 13:12:43 -  TestTask 1 (7a90610c-235d-422e-b857-e0223b56dbd3)","27.10.2020 13:12:43 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:12:43 -  with parameters: ","27.10.2020 13:12:43 - etf.testcases = *","27.10.2020 13:12:43 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:12:43 - Setting state to CREATED","27.10.2020 13:12:43 - Changed state from CREATED to INITIALIZING","27.10.2020 13:12:47 - Starting TestRun.f594fa8d-7f7d-46a7-b630-af830c0c81f8 at 2020-10-27T13:12:49Z","27.10.2020 13:12:49 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:12:49 - Project Properties: ","27.10.2020 13:12:49 - etf.testcases - * ","27.10.2020 13:12:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:12:49 - username -  ","27.10.2020 13:12:49 - authUser -  ","27.10.2020 13:12:49 - authMethod - basic ","27.10.2020 13:12:49 - TestRunTask initialized","27.10.2020 13:12:53 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:12:53 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:12:55 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:12:56 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:12:59 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:13:00 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:13:00 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:13:00 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:13:00 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:13:25.463 retry condition not satisfied: response.val == response.max
13:13:25.463 sleeping before retry #7
13:13:30.464 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:30.969 response time in milliseconds: 503.58
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Tue, 27 Oct 2020 13:13:30 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["27.10.2020 13:12:43 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:12:43 UTC 2020)","27.10.2020 13:12:43 - Resolving Executable Test Suite dependencies","27.10.2020 13:12:43 - Preparing 1 Test Task:","27.10.2020 13:12:43 -  TestTask 1 (7a90610c-235d-422e-b857-e0223b56dbd3)","27.10.2020 13:12:43 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:12:43 -  with parameters: ","27.10.2020 13:12:43 - etf.testcases = *","27.10.2020 13:12:43 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:12:43 - Setting state to CREATED","27.10.2020 13:12:43 - Changed state from CREATED to INITIALIZING","27.10.2020 13:12:47 - Starting TestRun.f594fa8d-7f7d-46a7-b630-af830c0c81f8 at 2020-10-27T13:12:49Z","27.10.2020 13:12:49 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:12:49 - Project Properties: ","27.10.2020 13:12:49 - etf.testcases - * ","27.10.2020 13:12:49 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:12:49 - username -  ","27.10.2020 13:12:49 - authUser -  ","27.10.2020 13:12:49 - authMethod - basic ","27.10.2020 13:12:49 - TestRunTask initialized","27.10.2020 13:12:53 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:12:53 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:12:55 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:12:56 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:12:57 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:57 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:12:58 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:12:58 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:12:59 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:13:00 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:13:00 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:13:00 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:13:00 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:13:30.969 retry condition not satisfied: response.val == response.max
13:13:30.969 sleeping before retry #8
13:13:35.970 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:37.993 response time in milliseconds: 2021.44
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Tue, 27 Oct 2020 13:13:37 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:13:37.993 retry condition satisfied
* print response 0.000
13:13:37.994 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 5.288
13:13:37.995 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:43.278 response time in milliseconds: 4304.59
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Cache-Control: public, max-age=120
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Tue, 27 Oct 2020 13:13:42 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Last-Modified: Tue, 27 Oct 2020 13:13:36 GMT
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/f594fa8d-7f7d-46a7-b630-af830c0c81f8.json","testRuns":{"TestRun":{"id":"EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:12:43.273Z","testTasks":{"TestTask":{"id":"EID7a90610c-235d-422e-b857-e0223b56dbd3","parent":{"ref":"EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDc3cb958a-ff98-4080-a6a7-1af4b2b4777e"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID35e75a2d-39a5-4eee-bb73-ed0b2312165c"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDc3cb958a-ff98-4080-a6a7-1af4b2b4777e","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:12:30.151Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:12:35.814Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID35e75a2d-39a5-4eee-bb73-ed0b2312165c","testObject":{"ref":"EIDc3cb958a-ff98-4080-a6a7-1af4b2b4777e"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a30918a-0175-1000-2ebe-e4103befb8ec","testCaseResults":{"TestCaseResult":[{"id":"EID6a30918a-0175-1000-eece-13ddc01860a1","testStepResults":{"TestStepResult":[{"id":"EID6a30918a-0175-1000-b728-e3e2e3e6aad0","parent":{"ref":"EID6a30918a-0175-1000-eece-13ddc01860a1"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:12:49Z","duration":17,"status":"PASSED"},{"id":"EID6a30919c-0175-1000-e2ef-56f06bbd1db8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3092be-0175-1000-115e-6d9e484112fa","parent":{"ref":"EID6a30919c-0175-1000-e2ef-56f06bbd1db8"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a3092be-0175-1000-8840-a297904c223d","parent":{"ref":"EID6a30919c-0175-1000-e2ef-56f06bbd1db8"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a3092be-0175-1000-e1b7-a09cd9f6ef3f","parent":{"ref":"EID6a30919c-0175-1000-e2ef-56f06bbd1db8"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a3092be-0175-1000-a8c0-0905f4507e8c","parent":{"ref":"EID6a30919c-0175-1000-e2ef-56f06bbd1db8"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID94512012-0076-4832-a529-5d96d56425ea"},{"ref":"EIDa3a3281b-e2d2-4cd5-ae34-82ca6fa2ff33"},{"ref":"EIDfcf6cdf2-fac1-4e1e-ac86-70dc5a50acc3"}]},"parent":{"ref":"EID6a30918a-0175-1000-eece-13ddc01860a1"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:12:49Z","duration":33,"status":"PASSED"}]},"parent":{"ref":"EID6a30918a-0175-1000-2ebe-e4103befb8ec"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:12:49Z","duration":308,"status":"PASSED"},{"id":"EID6a3092be-0175-1000-da8b-32d9b57b0c3a","testStepResults":{"TestStepResult":{"id":"EID6a3092be-0175-1000-f831-5dbf34df925c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3093cf-0175-1000-f511-b93993ec4908","parent":{"ref":"EID6a3092be-0175-1000-f831-5dbf34df925c"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:12:49Z","duration":1,"status":"PASSED"},{"id":"EID6a3093d0-0175-1000-79aa-281cd8f38021","parent":{"ref":"EID6a3092be-0175-1000-f831-5dbf34df925c"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"},{"id":"EID6a3093d0-0175-1000-0ac4-a122d930d34c","parent":{"ref":"EID6a3092be-0175-1000-f831-5dbf34df925c"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:12:49Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe27615fc-1e59-46be-b107-2c39ea7728ff"},{"ref":"EID20b14447-08ed-435c-8edf-ab183eaa6730"},{"ref":"EID9c6c8e83-2982-4a3f-85e8-5d027f408ccc"}]},"parent":{"ref":"EID6a3092be-0175-1000-da8b-32d9b57b0c3a"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:12:49Z","duration":91,"status":"PASSED"}},"parent":{"ref":"EID6a30918a-0175-1000-2ebe-e4103befb8ec"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:12:49Z","duration":274,"status":"PASSED"}]},"parent":{"ref":"EID35e75a2d-39a5-4eee-bb73-ed0b2312165c"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:12:49Z","duration":582,"status":"PASSED"},{"id":"EID6a3093d0-0175-1000-c4c5-c8fa7c6ef2b1","testCaseResults":{"TestCaseResult":[{"id":"EID6a3093d0-0175-1000-f4ba-af50cbba9f79","testStepResults":{"TestStepResult":[{"id":"EID6a3093d0-0175-1000-1f09-c7a845e5192a","parent":{"ref":"EID6a3093d0-0175-1000-f4ba-af50cbba9f79"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:12:49Z","duration":91,"status":"PASSED"},{"id":"EID6a3093d0-0175-1000-4c4d-17ea78e4a14f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a309520-0175-1000-0a0d-7a23368afd11","parent":{"ref":"EID6a3093d0-0175-1000-4c4d-17ea78e4a14f"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"},{"id":"EID6a309520-0175-1000-e96d-83ce89cc88a5","parent":{"ref":"EID6a3093d0-0175-1000-4c4d-17ea78e4a14f"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"},{"id":"EID6a309520-0175-1000-8077-7c88926596be","parent":{"ref":"EID6a3093d0-0175-1000-4c4d-17ea78e4a14f"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"},{"id":"EID6a309520-0175-1000-28c6-9733c0850669","parent":{"ref":"EID6a3093d0-0175-1000-4c4d-17ea78e4a14f"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"},{"id":"EID6a309520-0175-1000-8616-abc8e21a43f8","parent":{"ref":"EID6a3093d0-0175-1000-4c4d-17ea78e4a14f"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID77ffc5fc-4fa4-46c0-a841-4951fa7ccfd7"},{"ref":"EIDf4bfa456-725f-4066-85fb-564530a05ae9"},{"ref":"EIDaccd32bf-2db8-4a77-aa5a-fca433a1db72"}]},"parent":{"ref":"EID6a3093d0-0175-1000-f4ba-af50cbba9f79"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:12:49Z","duration":64,"status":"PASSED"}]},"parent":{"ref":"EID6a3093d0-0175-1000-c4c5-c8fa7c6ef2b1"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:12:49Z","duration":336,"status":"PASSED"},{"id":"EID6a309520-0175-1000-9345-cd71a8b8dde5","testStepResults":{"TestStepResult":[{"id":"EID6a309520-0175-1000-c183-979b0dfd84db","attachments":{"attachment":[{"ref":"EIDad8be2c8-b874-4f5a-b4fa-f647042bfa0b"},{"ref":"EID60d01db5-d11a-40e9-b774-2c7f577bd9fe"}]},"parent":{"ref":"EID6a309520-0175-1000-9345-cd71a8b8dde5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:12:50Z","duration":121,"status":"PASSED"},{"id":"EID6a3095f2-0175-1000-7b46-be1b69974643","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a309711-0175-1000-9b12-9faf15562302","parent":{"ref":"EID6a3095f2-0175-1000-7b46-be1b69974643"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"},{"id":"EID6a309711-0175-1000-a685-1f4e8d666053","parent":{"ref":"EID6a3095f2-0175-1000-7b46-be1b69974643"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"},{"id":"EID6a309711-0175-1000-54ae-30289b8926e1","parent":{"ref":"EID6a3095f2-0175-1000-7b46-be1b69974643"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"},{"id":"EID6a309711-0175-1000-d87c-194cf5a0c48a","parent":{"ref":"EID6a3095f2-0175-1000-7b46-be1b69974643"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:12:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID003f8487-5ae6-4afa-bbab-3bfe7ccc423e"},{"ref":"EID18936352-9b74-4a8b-a585-aaaaa2af2ca3"},{"ref":"EIDbdded3ca-e0d2-44ab-b929-fdd0a7169c62"}]},"parent":{"ref":"EID6a309520-0175-1000-9345-cd71a8b8dde5"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:12:50Z","duration":108,"status":"PASSED"}]},"parent":{"ref":"EID6a3093d0-0175-1000-c4c5-c8fa7c6ef2b1"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:12:50Z","duration":498,"status":"PASSED"},{"id":"EID6a309712-0175-1000-ebb3-d14b41453f72","testStepResults":{"TestStepResult":[{"id":"EID6a309712-0175-1000-8c2e-bf4c4d4f6d4d","attachments":{"attachment":[{"ref":"EID8e8ac169-5aff-41f4-92cb-e844dd60192f"},{"ref":"EID026add88-cdb2-4034-b32e-98437a20d3b5"}]},"parent":{"ref":"EID6a309712-0175-1000-ebb3-d14b41453f72"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:12:50Z","duration":115,"status":"PASSED"},{"id":"EID6a3097f6-0175-1000-8065-fe72b80a8013","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3098f5-0175-1000-ffbe-c18adea1816f","parent":{"ref":"EID6a3097f6-0175-1000-8065-fe72b80a8013"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a3098f5-0175-1000-d12f-f8480cd598ae","parent":{"ref":"EID6a3097f6-0175-1000-8065-fe72b80a8013"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a3098f5-0175-1000-ccf3-aca740d7c2f8","parent":{"ref":"EID6a3097f6-0175-1000-8065-fe72b80a8013"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a3098f5-0175-1000-e218-062f8983ec1a","parent":{"ref":"EID6a3097f6-0175-1000-8065-fe72b80a8013"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a3098f5-0175-1000-2926-4a2b68b1a628","parent":{"ref":"EID6a3097f6-0175-1000-8065-fe72b80a8013"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd0bf024f-0deb-4152-bed1-8dd093e5a126"},{"ref":"EID1b3bfc81-6d0a-46df-bc16-2d4a22e10e4e"},{"ref":"EID442f016e-3ff7-44ad-9010-c68aa9451a98"}]},"parent":{"ref":"EID6a309712-0175-1000-ebb3-d14b41453f72"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:12:50Z","duration":59,"status":"PASSED"}]},"parent":{"ref":"EID6a3093d0-0175-1000-c4c5-c8fa7c6ef2b1"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:12:50Z","duration":483,"status":"PASSED"},{"id":"EID6a3098f5-0175-1000-ad8f-db0425f828c0","testStepResults":{"TestStepResult":[{"id":"EID6a3098f5-0175-1000-e228-f66d0be654bb","attachments":{"attachment":[{"ref":"EIDa93bcadf-cdbd-4ed9-a004-e96115162a17"},{"ref":"EIDca7bd03b-2990-4d73-a11f-69ba33ea15fe"}]},"parent":{"ref":"EID6a3098f5-0175-1000-ad8f-db0425f828c0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:12:51Z","duration":204,"status":"PASSED"},{"id":"EID6a3099ed-0175-1000-329a-1107185d4781","parent":{"ref":"EID6a3098f5-0175-1000-ad8f-db0425f828c0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a3099ed-0175-1000-adfe-ff975014216d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a309b1e-0175-1000-0836-f113116014d7","parent":{"ref":"EID6a3099ed-0175-1000-adfe-ff975014216d"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a309b1e-0175-1000-25c2-62037b352fc0","parent":{"ref":"EID6a3099ed-0175-1000-adfe-ff975014216d"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a309b1e-0175-1000-ee79-f913e415a83a","parent":{"ref":"EID6a3099ed-0175-1000-adfe-ff975014216d"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"},{"id":"EID6a309b1e-0175-1000-1a38-75cbe75053fb","parent":{"ref":"EID6a3099ed-0175-1000-adfe-ff975014216d"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:12:51Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa760af4c-a4e7-4f0c-8610-d0ee972a0cb6"},{"ref":"EID66f89acb-be5e-49ba-b808-f5086a2127f8"},{"ref":"EIDdd1ec889-1d9c-43ba-ae1e-68e2b4866f09"}]},"parent":{"ref":"EID6a3098f5-0175-1000-ad8f-db0425f828c0"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:12:51Z","duration":67,"status":"PASSED"},{"id":"EID6a309b1e-0175-1000-75cc-d5ba33c76dc4","attachments":{"attachment":{"ref":"EID8a14df7a-063b-4486-86d5-fa6bfaf56f11"}},"parent":{"ref":"EID6a3098f5-0175-1000-ad8f-db0425f828c0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:12:51Z","duration":2,"status":"PASSED"},{"id":"EID6a309b4c-0175-1000-ff8b-61a131096f76","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a309c38-0175-1000-8bfb-c3699a43a617","parent":{"ref":"EID6a309b4c-0175-1000-ff8b-61a131096f76"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:12:52Z","duration":0,"status":"PASSED"},{"id":"EID6a309c38-0175-1000-2ea7-66dc5924cd15","parent":{"ref":"EID6a309b4c-0175-1000-ff8b-61a131096f76"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:12:52Z","duration":0,"status":"PASSED"},{"id":"EID6a309c38-0175-1000-87f2-8a7509db807e","parent":{"ref":"EID6a309b4c-0175-1000-ff8b-61a131096f76"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:12:52Z","duration":0,"status":"PASSED"},{"id":"EID6a309c38-0175-1000-3b18-5ad300454211","parent":{"ref":"EID6a309b4c-0175-1000-ff8b-61a131096f76"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:12:52Z","duration":0,"status":"PASSED"},{"id":"EID6a309c38-0175-1000-97d0-8a8ad5263352","parent":{"ref":"EID6a309b4c-0175-1000-ff8b-61a131096f76"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:12:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID990c66c2-d949-4914-8250-f1b436008915"},{"ref":"EID17c3ac35-9859-48de-b1df-3c04e83f1f45"},{"ref":"EID08444a64-5e2f-489b-8070-9b07e278a740"}]},"parent":{"ref":"EID6a3098f5-0175-1000-ad8f-db0425f828c0"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:12:51Z","duration":42,"status":"PASSED"}]},"parent":{"ref":"EID6a3093d0-0175-1000-c4c5-c8fa7c6ef2b1"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:12:51Z","duration":836,"status":"PASSED"},{"id":"EID6a309c39-0175-1000-bd34-e16baa6516fe","testStepResults":{"TestStepResult":[{"id":"EID6a309c39-0175-1000-646d-89714632b69e","attachments":{"attachment":[{"ref":"EID7831df8b-6dc5-4d82-b3ba-b16267d7435b"},{"ref":"EIDdecb875d-cda3-4a4c-899d-c930ea2b28fb"}]},"parent":{"ref":"EID6a309c39-0175-1000-bd34-e16baa6516fe"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:12:52Z","duration":121,"status":"PASSED"},{"id":"EID6a309cdf-0175-1000-a72a-3cf60105fd08","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a309e1f-0175-1000-68d0-38f26d480505","parent":{"ref":"EID6a309cdf-0175-1000-a72a-3cf60105fd08"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:12:52Z","duration":0,"status":"PASSED"},{"id":"EID6a309e1f-0175-1000-9154-c736c8149380","parent":{"ref":"EID6a309cdf-0175-1000-a72a-3cf60105fd08"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:12:52Z","duration":0,"status":"PASSED"},{"id":"EID6a309e1f-0175-1000-2eb2-a81256ee06e3","parent":{"ref":"EID6a309cdf-0175-1000-a72a-3cf60105fd08"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:12:52Z","duration":0,"status":"PASSED"},{"id":"EID6a309e1f-0175-1000-bc7e-67c0de404197","parent":{"ref":"EID6a309cdf-0175-1000-a72a-3cf60105fd08"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:12:52Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa1cb4f6a-9fc7-481e-a5d4-fc1876e94c31"},{"ref":"EID78096299-f65f-4a69-958e-aee28318bd5f"},{"ref":"EID4fa21dd1-1dc1-445f-ad77-7e655c7811aa"}]},"parent":{"ref":"EID6a309c39-0175-1000-bd34-e16baa6516fe"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:12:52Z","duration":61,"status":"PASSED"}]},"parent":{"ref":"EID6a3093d0-0175-1000-c4c5-c8fa7c6ef2b1"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:12:52Z","duration":486,"status":"PASSED"},{"id":"EID6a309e1f-0175-1000-1a40-138917f78bb3","testStepResults":{"TestStepResult":[{"id":"EID6a309e1f-0175-1000-c85d-9b8966506868","attachments":{"attachment":[{"ref":"EID5570ffc9-3d71-453e-81af-118fb63e227e"},{"ref":"EID68a929ec-3a1f-4121-875a-4df86caf1582"}]},"parent":{"ref":"EID6a309e1f-0175-1000-1a40-138917f78bb3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:12:52Z","duration":196,"status":"PASSED"},{"id":"EID6a309f0f-0175-1000-21fa-c96ea6e7f5b0","parent":{"ref":"EID6a309e1f-0175-1000-1a40-138917f78bb3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:12:52Z","duration":0,"status":"PASSED"},{"id":"EID6a309f0f-0175-1000-0f44-e1b8980c313b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30a03a-0175-1000-2370-1432c2957bbe","parent":{"ref":"EID6a309f0f-0175-1000-0f44-e1b8980c313b"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"},{"id":"EID6a30a03a-0175-1000-169b-a1c3b4da7c07","parent":{"ref":"EID6a309f0f-0175-1000-0f44-e1b8980c313b"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"},{"id":"EID6a30a03a-0175-1000-154b-60d0c8932589","parent":{"ref":"EID6a309f0f-0175-1000-0f44-e1b8980c313b"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"},{"id":"EID6a30a03a-0175-1000-bbb6-debafa93b238","parent":{"ref":"EID6a309f0f-0175-1000-0f44-e1b8980c313b"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID280c98eb-789d-4ead-ab3e-9617265df2dd"},{"ref":"EIDeac9be56-7b12-480f-b09b-e64e09ac344d"},{"ref":"EIDe7c78af1-7c6f-449e-9182-36d4fb286b05"}]},"parent":{"ref":"EID6a309e1f-0175-1000-1a40-138917f78bb3"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:12:52Z","duration":89,"status":"PASSED"},{"id":"EID6a30a04a-0175-1000-32b9-144358fbe5ee","attachments":{"attachment":{"ref":"EID82f7e3d2-a8f7-44bb-8aa5-f0d45446986a"}},"parent":{"ref":"EID6a309e1f-0175-1000-1a40-138917f78bb3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:12:53Z","duration":2,"status":"PASSED"},{"id":"EID6a30a05a-0175-1000-7739-4bdef65781b3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30a1d6-0175-1000-261c-c4379aea779a","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a30a05a-0175-1000-7739-4bdef65781b3"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:12:53Z","duration":16,"status":"FAILED"},{"id":"EID6a30a1e6-0175-1000-d387-967655d4c416","parent":{"ref":"EID6a30a05a-0175-1000-7739-4bdef65781b3"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"},{"id":"EID6a30a1e6-0175-1000-e925-c7036b7fdff0","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6a30a05a-0175-1000-7739-4bdef65781b3"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDc76707dd-3f61-4720-9837-fe4b74f6ccdc"},{"ref":"EIDae1229c0-0202-4737-88e6-465895260622"},{"ref":"EIDff965fa7-d822-412a-948f-7475cb61694d"}]},"parent":{"ref":"EID6a309e1f-0175-1000-1a40-138917f78bb3"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:12:53Z","duration":309,"status":"FAILED"}]},"parent":{"ref":"EID6a3093d0-0175-1000-c4c5-c8fa7c6ef2b1"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:12:52Z","duration":967,"status":"FAILED"},{"id":"EID6a30a1e6-0175-1000-ae56-f8e1d7921644","testStepResults":{"TestStepResult":[{"id":"EID6a30a1e6-0175-1000-7188-4ed66314bc30","attachments":{"attachment":[{"ref":"EIDbce5fcad-18aa-42e4-979f-ca2f18d5a2fb"},{"ref":"EIDf8b5af23-cb7d-4114-b7f2-2ee3dfbe1204"}]},"parent":{"ref":"EID6a30a1e6-0175-1000-ae56-f8e1d7921644"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:12:53Z","duration":120,"status":"PASSED"},{"id":"EID6a30a2a4-0175-1000-0f29-6aed96a9e420","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30a38e-0175-1000-b350-842f774fbcd4","parent":{"ref":"EID6a30a2a4-0175-1000-0f29-6aed96a9e420"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"},{"id":"EID6a30a38e-0175-1000-d5ec-036afc54ec97","parent":{"ref":"EID6a30a2a4-0175-1000-0f29-6aed96a9e420"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"},{"id":"EID6a30a38e-0175-1000-1728-5390c79df33d","parent":{"ref":"EID6a30a2a4-0175-1000-0f29-6aed96a9e420"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED"},{"id":"EID6a30a38e-0175-1000-ab21-5efabdca81e4","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a30a2a4-0175-1000-0f29-6aed96a9e420"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:12:53Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID7eebbf42-5ad8-456c-af19-1eb421e9b28f"},{"ref":"EID69f53c48-f8a6-4b3b-b253-d6366d1a06bc"},{"ref":"EIDf99a2c14-b5a2-4290-91bd-79d9ffacfa8b"}]},"parent":{"ref":"EID6a30a1e6-0175-1000-ae56-f8e1d7921644"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:12:53Z","duration":109,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a3093d0-0175-1000-c4c5-c8fa7c6ef2b1"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:12:53Z","duration":424,"status":"PASSED_MANUAL"},{"id":"EID6a30a38f-0175-1000-433f-e2776a2fd58f","testStepResults":{"TestStepResult":{"id":"EID6a30a38f-0175-1000-e74b-202b97ae0a0f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30a43d-0175-1000-3c13-df8494681cd8","parent":{"ref":"EID6a30a38f-0175-1000-e74b-202b97ae0a0f"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:12:54Z","duration":0,"status":"PASSED"},{"id":"EID6a30a43d-0175-1000-66e2-dcc7d5b583b5","parent":{"ref":"EID6a30a38f-0175-1000-e74b-202b97ae0a0f"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:12:54Z","duration":0,"status":"PASSED"},{"id":"EID6a30a43d-0175-1000-1e4c-220058d7e177","parent":{"ref":"EID6a30a38f-0175-1000-e74b-202b97ae0a0f"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:12:54Z","duration":0,"status":"PASSED"},{"id":"EID6a30a43d-0175-1000-d464-0c6a0dad130f","parent":{"ref":"EID6a30a38f-0175-1000-e74b-202b97ae0a0f"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:12:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5f791234-0583-4a51-8541-43e02a8a1661"},{"ref":"EID58676b33-f863-4eb2-bfc6-0a14bf61994d"},{"ref":"EID984bb55c-0474-419f-96ec-a4e22296da1e"}]},"parent":{"ref":"EID6a30a38f-0175-1000-433f-e2776a2fd58f"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:12:53Z","duration":32,"status":"PASSED"}},"parent":{"ref":"EID6a3093d0-0175-1000-c4c5-c8fa7c6ef2b1"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:12:53Z","duration":174,"status":"PASSED"},{"id":"EID6a30a43d-0175-1000-67a0-4c8030b599bb","testStepResults":{"TestStepResult":{"id":"EID6a30a43d-0175-1000-0fed-cc53f4b7db2c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30a534-0175-1000-4957-66e44572deca","parent":{"ref":"EID6a30a43d-0175-1000-0fed-cc53f4b7db2c"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:12:54Z","duration":0,"status":"PASSED"},{"id":"EID6a30a534-0175-1000-4d1c-8c7f8ceea781","parent":{"ref":"EID6a30a43d-0175-1000-0fed-cc53f4b7db2c"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:12:54Z","duration":0,"status":"PASSED"},{"id":"EID6a30a534-0175-1000-5ed2-a384baef1bc3","parent":{"ref":"EID6a30a43d-0175-1000-0fed-cc53f4b7db2c"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:12:54Z","duration":0,"status":"PASSED"},{"id":"EID6a30a534-0175-1000-e128-f9f38c8129a3","parent":{"ref":"EID6a30a43d-0175-1000-0fed-cc53f4b7db2c"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:12:54Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID64886d77-9577-4758-8e1f-5d8cfbf2a2ea"},{"ref":"EIDb9fa295c-2298-4ef5-963d-404da6310aec"},{"ref":"EID96b066f3-604f-42eb-9c1b-207ce142367d"}]},"parent":{"ref":"EID6a30a43d-0175-1000-67a0-4c8030b599bb"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:12:54Z","duration":65,"status":"PASSED"}},"parent":{"ref":"EID6a3093d0-0175-1000-c4c5-c8fa7c6ef2b1"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:12:54Z","duration":247,"status":"PASSED"},{"id":"EID6a30a534-0175-1000-5ce2-c3ad42038b27","testStepResults":{"TestStepResult":{"id":"EID6a30a534-0175-1000-be5a-ba5a4686cf52","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EID610514eb-e040-478c-ab09-02a5d94050c0"},{"ref":"EIDc0b8a047-4de3-4e0e-a1e1-6489d3c6a916"},{"ref":"EID4d7a09aa-7e80-42a6-9c1f-feb8d7060bab"},{"ref":"EIDb879ec2a-92da-4fda-916c-1b887ecaf12e"},{"ref":"EID4c78fded-c25b-4feb-b577-2f0a118ae7d0"},{"ref":"EIDf1eec0fb-0138-469f-b688-bcbf3115fadf"},{"ref":"EID0ae309b8-bfee-4851-9126-2a46bc137199"},{"ref":"EID6800bb39-d197-48d5-b4ec-05b49098dd7a"},{"ref":"EID1bce253c-1d3f-459a-8665-07cd996e0aa8"}]},"parent":{"ref":"EID6a30a534-0175-1000-5ce2-c3ad42038b27"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:12:54Z","duration":645,"status":"SKIPPED"}},"parent":{"ref":"EID6a3093d0-0175-1000-c4c5-c8fa7c6ef2b1"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:12:54Z","duration":759,"status":"SKIPPED"},{"id":"EID6a30a82b-0175-1000-96aa-cf49d0072674","testStepResults":{"TestStepResult":{"id":"EID6a30a82b-0175-1000-43b2-cccf44f874b9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30a8e4-0175-1000-31ca-13de30af6c12","parent":{"ref":"EID6a30a82b-0175-1000-43b2-cccf44f874b9"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30a8e4-0175-1000-719a-a3fa6b1c76f3","parent":{"ref":"EID6a30a82b-0175-1000-43b2-cccf44f874b9"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30a8e4-0175-1000-70b2-9eb91e9d1f73","parent":{"ref":"EID6a30a82b-0175-1000-43b2-cccf44f874b9"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30a8e4-0175-1000-2ba2-4d60e442ead1","parent":{"ref":"EID6a30a82b-0175-1000-43b2-cccf44f874b9"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7502b1f9-053d-4fb5-9ca4-2c61fdb1f193"},{"ref":"EID40f2aceb-f100-44cf-b8d2-ae01148feaee"},{"ref":"EIDf3507f8b-054f-4cee-92c0-3c9b147598db"}]},"parent":{"ref":"EID6a30a82b-0175-1000-96aa-cf49d0072674"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:12:55Z","duration":82,"status":"PASSED"}},"parent":{"ref":"EID6a3093d0-0175-1000-c4c5-c8fa7c6ef2b1"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:12:55Z","duration":185,"status":"PASSED"},{"id":"EID6a30a8e4-0175-1000-e6b0-a669e2326775","testStepResults":{"TestStepResult":{"id":"EID6a30a8e4-0175-1000-f529-39f75c47fbda","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30a9d7-0175-1000-b87a-97720841ef0a","parent":{"ref":"EID6a30a8e4-0175-1000-f529-39f75c47fbda"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30a9d7-0175-1000-6072-7bf8522eb792","parent":{"ref":"EID6a30a8e4-0175-1000-f529-39f75c47fbda"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30a9d7-0175-1000-3568-b83b58fcec1a","parent":{"ref":"EID6a30a8e4-0175-1000-f529-39f75c47fbda"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30a9d7-0175-1000-1e5e-8df89186c8ff","parent":{"ref":"EID6a30a8e4-0175-1000-f529-39f75c47fbda"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30a9d7-0175-1000-43ee-9847bd8030a7","parent":{"ref":"EID6a30a8e4-0175-1000-f529-39f75c47fbda"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30a9d7-0175-1000-7e11-f7399973e868","parent":{"ref":"EID6a30a8e4-0175-1000-f529-39f75c47fbda"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa45f10bf-2050-4b65-abd2-a4261193d962"},{"ref":"EID6458e5a8-4bc9-449e-b06c-9fed38b06aa6"},{"ref":"EIDcf2c39be-0790-4816-97e7-6f55158f4d35"}]},"parent":{"ref":"EID6a30a8e4-0175-1000-e6b0-a669e2326775"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:12:55Z","duration":92,"status":"PASSED"}},"parent":{"ref":"EID6a3093d0-0175-1000-c4c5-c8fa7c6ef2b1"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:12:55Z","duration":243,"status":"PASSED"},{"id":"EID6a30a9d8-0175-1000-eedf-beab85beaa32","testStepResults":{"TestStepResult":{"id":"EID6a30a9d8-0175-1000-0871-613d8856035f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30ab29-0175-1000-2bac-4bc07389f35d","parent":{"ref":"EID6a30a9d8-0175-1000-0871-613d8856035f"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30ab29-0175-1000-60d0-f29ce57d6102","parent":{"ref":"EID6a30a9d8-0175-1000-0871-613d8856035f"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30ab29-0175-1000-fb59-820fe85fdbd1","parent":{"ref":"EID6a30a9d8-0175-1000-0871-613d8856035f"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30ab29-0175-1000-6bbe-0317b746467d","parent":{"ref":"EID6a30a9d8-0175-1000-0871-613d8856035f"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30ab29-0175-1000-cbc5-6a948cae0a61","parent":{"ref":"EID6a30a9d8-0175-1000-0871-613d8856035f"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"},{"id":"EID6a30ab29-0175-1000-fba7-7ceddfabdfd2","parent":{"ref":"EID6a30a9d8-0175-1000-0871-613d8856035f"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:12:55Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe5a1cfa1-61f5-4385-a552-61e4e6f2840a"},{"ref":"EIDd81c764b-107a-444b-a51f-03c6123447cc"},{"ref":"EID8ad54c61-fafe-4c92-933a-75f6dd388d98"}]},"parent":{"ref":"EID6a30a9d8-0175-1000-eedf-beab85beaa32"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:12:55Z","duration":98,"status":"PASSED"}},"parent":{"ref":"EID6a3093d0-0175-1000-c4c5-c8fa7c6ef2b1"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:12:55Z","duration":368,"status":"PASSED"},{"id":"EID6a30ab48-0175-1000-6c04-08291eab1d6f","testStepResults":{"TestStepResult":{"id":"EID6a30ab48-0175-1000-8a9a-7f6ce41a70dc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30abff-0175-1000-a097-ce36cef6ed8e","parent":{"ref":"EID6a30ab48-0175-1000-8a9a-7f6ce41a70dc"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:12:56Z","duration":0,"status":"PASSED"},{"id":"EID6a30abff-0175-1000-4d8e-16cb7b451290","parent":{"ref":"EID6a30ab48-0175-1000-8a9a-7f6ce41a70dc"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:12:56Z","duration":0,"status":"PASSED"},{"id":"EID6a30abff-0175-1000-022e-4eb09029d668","parent":{"ref":"EID6a30ab48-0175-1000-8a9a-7f6ce41a70dc"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:12:56Z","duration":0,"status":"PASSED"},{"id":"EID6a30abff-0175-1000-ba12-1d366d438086","parent":{"ref":"EID6a30ab48-0175-1000-8a9a-7f6ce41a70dc"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:12:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd881e199-b33c-43a8-8689-eb98117269c8"},{"ref":"EID00b23075-2e79-47bf-ae7b-5ced195be4cf"},{"ref":"EID83944f16-0e5d-4d8c-94a4-26353e4d68fc"}]},"parent":{"ref":"EID6a30ab48-0175-1000-6c04-08291eab1d6f"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:12:55Z","duration":69,"status":"PASSED"}},"parent":{"ref":"EID6a3093d0-0175-1000-c4c5-c8fa7c6ef2b1"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:12:55Z","duration":183,"status":"PASSED"},{"id":"EID6a30abff-0175-1000-1ea5-53470e9529e2","testStepResults":{"TestStepResult":[{"id":"EID6a30abff-0175-1000-47e2-99293380bab7","attachments":{"attachment":[{"ref":"EID1a05377c-2330-4b20-88fe-e99cc6878c3e"},{"ref":"EID55b00b73-9d2b-4a9c-8c5c-162fcd75e7e0"},{"ref":"EIDbea03198-1a21-47db-b0c2-559a87310dc0"},{"ref":"EID955f144a-2334-42da-8910-73b417f9d1e3"}]},"parent":{"ref":"EID6a30abff-0175-1000-1ea5-53470e9529e2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:12:56Z","duration":242,"status":"PASSED"},{"id":"EID6a30ad2b-0175-1000-0fab-d5d514f5317d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30ae0d-0175-1000-3e22-2d000f4b7f88","parent":{"ref":"EID6a30ad2b-0175-1000-0fab-d5d514f5317d"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:12:56Z","duration":0,"status":"PASSED"},{"id":"EID6a30ae0d-0175-1000-d795-8c1c03f761ff","parent":{"ref":"EID6a30ad2b-0175-1000-0fab-d5d514f5317d"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:12:56Z","duration":0,"status":"PASSED"},{"id":"EID6a30ae0d-0175-1000-fd13-6bcdfb65e207","parent":{"ref":"EID6a30ad2b-0175-1000-0fab-d5d514f5317d"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:12:56Z","duration":0,"status":"PASSED"},{"id":"EID6a30ae0d-0175-1000-bb2e-fab3ab7da551","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6a30ad2b-0175-1000-0fab-d5d514f5317d"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:12:56Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDf2decb86-2879-40c0-badd-3516f5fdbd5b"},{"ref":"EID2c08ff05-327d-4dac-97e0-6144623d35a2"},{"ref":"EID0b453847-617c-4b6f-8ac1-803e468b6c7e"}]},"parent":{"ref":"EID6a30abff-0175-1000-1ea5-53470e9529e2"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:12:56Z","duration":88,"status":"FAILED"}]},"parent":{"ref":"EID6a3093d0-0175-1000-c4c5-c8fa7c6ef2b1"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:12:56Z","duration":535,"status":"FAILED"},{"id":"EID6a30ae17-0175-1000-ca52-276e6f018073","testStepResults":{"TestStepResult":{"id":"EID6a30ae17-0175-1000-99cb-43415fb1deab","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30af4d-0175-1000-5c0b-0bd6a36a1f01","parent":{"ref":"EID6a30ae17-0175-1000-99cb-43415fb1deab"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:12:56Z","duration":0,"status":"PASSED"},{"id":"EID6a30af4d-0175-1000-82a4-21e40f8b0ced","parent":{"ref":"EID6a30ae17-0175-1000-99cb-43415fb1deab"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:12:56Z","duration":0,"status":"PASSED"},{"id":"EID6a30af4e-0175-1000-78c1-1bb43978aadd","parent":{"ref":"EID6a30ae17-0175-1000-99cb-43415fb1deab"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:12:56Z","duration":0,"status":"PASSED"},{"id":"EID6a30af4e-0175-1000-bb37-cdf39097af50","parent":{"ref":"EID6a30ae17-0175-1000-99cb-43415fb1deab"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:12:56Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3f8674c7-8a3e-428f-bc8b-0b89775f9a0f"},{"ref":"EID71ef4e43-624d-4cea-949a-9e8fe6ec917f"},{"ref":"EID346282d5-f0ab-4ea9-9509-cee0d78b344f"}]},"parent":{"ref":"EID6a30ae17-0175-1000-ca52-276e6f018073"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:12:56Z","duration":67,"status":"PASSED"}},"parent":{"ref":"EID6a3093d0-0175-1000-c4c5-c8fa7c6ef2b1"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:12:56Z","duration":311,"status":"PASSED"},{"id":"EID6a30af4e-0175-1000-1215-e2344504e96e","testStepResults":{"TestStepResult":[{"id":"EID6a30af4e-0175-1000-4cd7-b1ee4af7503d","parent":{"ref":"EID6a30af4e-0175-1000-1215-e2344504e96e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:12:56Z","duration":0,"status":"PASSED"},{"id":"EID6a30af4e-0175-1000-7302-6e1dfb2c57de","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30afd6-0175-1000-6b56-2ea91aa75a7c","parent":{"ref":"EID6a30af4e-0175-1000-7302-6e1dfb2c57de"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:12:57Z","duration":0,"status":"PASSED"},{"id":"EID6a30afd6-0175-1000-ea3c-6a2758a8fed9","parent":{"ref":"EID6a30af4e-0175-1000-7302-6e1dfb2c57de"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:12:57Z","duration":0,"status":"PASSED"},{"id":"EID6a30afd6-0175-1000-7af0-ddcd26e59c91","parent":{"ref":"EID6a30af4e-0175-1000-7302-6e1dfb2c57de"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:12:57Z","duration":0,"status":"PASSED"},{"id":"EID6a30afd6-0175-1000-d963-e686e7db3e94","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6a30af4e-0175-1000-7302-6e1dfb2c57de"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:12:57Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID7884110a-290c-4ed1-9697-08f212ad99bf"},{"ref":"EID4ea143b0-6f3a-4f8b-905b-5312d89d9f34"},{"ref":"EIDb5296f7f-d159-43c2-9e77-773d6bb40440"}]},"parent":{"ref":"EID6a30af4e-0175-1000-1215-e2344504e96e"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:12:56Z","duration":35,"status":"FAILED"}]},"parent":{"ref":"EID6a3093d0-0175-1000-c4c5-c8fa7c6ef2b1"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:12:56Z","duration":136,"status":"FAILED"}]},"parent":{"ref":"EID35e75a2d-39a5-4eee-bb73-ed0b2312165c"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:12:49Z","duration":7174,"status":"FAILED"},{"id":"EID6a30afd6-0175-1000-bb78-0785cfad1e62","testCaseResults":{"TestCaseResult":[{"id":"EID6a30afd6-0175-1000-264b-a7c976d5d710","testStepResults":{"TestStepResult":[{"id":"EID6a30afd6-0175-1000-318b-3f72ba782d1d","parent":{"ref":"EID6a30afd6-0175-1000-264b-a7c976d5d710"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:12:57Z","duration":0,"status":"PASSED"},{"id":"EID6a30afd7-0175-1000-ae77-0ee1acebb09f","parent":{"ref":"EID6a30afd6-0175-1000-264b-a7c976d5d710"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:12:57Z","duration":67,"status":"PASSED"},{"id":"EID6a30afd7-0175-1000-07ce-5ce3b4bcc158","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30b0e3-0175-1000-db05-ee85693328a7","parent":{"ref":"EID6a30afd7-0175-1000-07ce-5ce3b4bcc158"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:12:57Z","duration":0,"status":"PASSED"},{"id":"EID6a30b0e3-0175-1000-8079-42453246a379","parent":{"ref":"EID6a30afd7-0175-1000-07ce-5ce3b4bcc158"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:12:57Z","duration":0,"status":"PASSED"},{"id":"EID6a30b0e3-0175-1000-adf7-e1b5106ae6a5","parent":{"ref":"EID6a30afd7-0175-1000-07ce-5ce3b4bcc158"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:12:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe8ec0f1c-f3e3-4ed9-995d-e3c412411539"},{"ref":"EID2ea5e972-abb1-4a63-ada1-7a43a535f28c"},{"ref":"EID2e194b98-25f2-45ab-8bfc-151036cfa1b2"}]},"parent":{"ref":"EID6a30afd6-0175-1000-264b-a7c976d5d710"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:12:57Z","duration":128,"status":"PASSED"},{"id":"EID6a30b0e3-0175-1000-8ed8-27d3e1e4f257","attachments":{"attachment":{"ref":"EIDa783d8ab-78f6-44c4-baad-6c0d50831373"}},"parent":{"ref":"EID6a30afd6-0175-1000-264b-a7c976d5d710"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:12:57Z","duration":0,"status":"PASSED"},{"id":"EID6a30b0f5-0175-1000-4e35-f79b1ce87d74","parent":{"ref":"EID6a30afd6-0175-1000-264b-a7c976d5d710"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:12:57Z","duration":34,"status":"PASSED"}]},"parent":{"ref":"EID6a30afd6-0175-1000-bb78-0785cfad1e62"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:12:57Z","duration":322,"status":"PASSED"},{"id":"EID6a30b118-0175-1000-2779-5d9a5216f021","testStepResults":{"TestStepResult":[{"id":"EID6a30b118-0175-1000-ff6a-c8988ef95ccf","parent":{"ref":"EID6a30b118-0175-1000-2779-5d9a5216f021"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:12:57Z","duration":91,"status":"PASSED"},{"id":"EID6a30b118-0175-1000-5020-b89733be397e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30b17f-0175-1000-b29e-489e3ba2d714","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a30b118-0175-1000-5020-b89733be397e"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:12:57Z","duration":48,"status":"FAILED"},{"id":"EID6a30b1af-0175-1000-7568-1f3f209acaf6","parent":{"ref":"EID6a30b118-0175-1000-5020-b89733be397e"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:12:57Z","duration":0,"status":"PASSED"},{"id":"EID6a30b1af-0175-1000-a60b-eabc63363f4a","parent":{"ref":"EID6a30b118-0175-1000-5020-b89733be397e"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:12:57Z","duration":0,"status":"PASSED"},{"id":"EID6a30b1af-0175-1000-be77-e92538b7788f","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6a30b118-0175-1000-5020-b89733be397e"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:12:57Z","duration":0,"status":"FAILED"},{"id":"EID6a30b1af-0175-1000-62fe-e9f6acfa6365","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6a30b118-0175-1000-5020-b89733be397e"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:12:57Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDac46b709-ce82-4720-8463-271fa521cc2f"},{"ref":"EIDa502db65-171e-4a37-b8f8-64b84093bb21"},{"ref":"EID171a0a9a-d110-42ad-93d8-ed307e844809"}]},"parent":{"ref":"EID6a30b118-0175-1000-2779-5d9a5216f021"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:12:57Z","duration":29,"status":"FAILED"}]},"parent":{"ref":"EID6a30afd6-0175-1000-bb78-0785cfad1e62"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:12:57Z","duration":151,"status":"FAILED"},{"id":"EID6a30b1b0-0175-1000-26b9-05f5a333bbbb","testStepResults":{"TestStepResult":{"id":"EID6a30b1b0-0175-1000-68e9-cb5e617be6c8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30b238-0175-1000-6d0e-1fa85e41fb71","parent":{"ref":"EID6a30b1b0-0175-1000-68e9-cb5e617be6c8"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:12:57Z","duration":0,"status":"PASSED"},{"id":"EID6a30b238-0175-1000-eaab-6d60062a410a","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a30b1b0-0175-1000-68e9-cb5e617be6c8"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:12:57Z","duration":11,"status":"FAILED"},{"id":"EID6a30b243-0175-1000-3740-2bf18dffb299","parent":{"ref":"EID6a30b1b0-0175-1000-68e9-cb5e617be6c8"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:12:57Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe5166831-bfd0-4634-93bb-e9b84f52c120"},{"ref":"EID5a47d782-9f94-46ce-9bb6-b17fee011e66"},{"ref":"EIDc33c0ff0-a24a-4d02-9f9c-34d64a2afdd1"}]},"parent":{"ref":"EID6a30b1b0-0175-1000-26b9-05f5a333bbbb"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:12:57Z","duration":32,"status":"FAILED"}},"parent":{"ref":"EID6a30afd6-0175-1000-bb78-0785cfad1e62"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:12:57Z","duration":148,"status":"FAILED"},{"id":"EID6a30b244-0175-1000-af45-3856daff64fc","testStepResults":{"TestStepResult":{"id":"EID6a30b244-0175-1000-a21e-20fe043f18ac","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30b2d5-0175-1000-bf6b-4468fa4c53eb","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a30b244-0175-1000-a21e-20fe043f18ac"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:12:57Z","duration":0,"status":"FAILED"},{"id":"EID6a30b2d5-0175-1000-5296-c15c52b0309b","parent":{"ref":"EID6a30b244-0175-1000-a21e-20fe043f18ac"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:12:57Z","duration":0,"status":"PASSED"},{"id":"EID6a30b2d5-0175-1000-7690-88904ba52121","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a30b244-0175-1000-a21e-20fe043f18ac"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:12:57Z","duration":10,"status":"FAILED"},{"id":"EID6a30b2df-0175-1000-a50e-b339c75161f0","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6a30b244-0175-1000-a21e-20fe043f18ac"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:12:57Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID4293b044-d9ba-4dad-a486-42c6746b22ea"},{"ref":"EIDebc0e64f-e02b-4ff3-acc7-d2e841003c30"},{"ref":"EID7812926e-162b-43fa-aaac-ff4603a9cdcc"}]},"parent":{"ref":"EID6a30b244-0175-1000-af45-3856daff64fc"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:12:57Z","duration":27,"status":"FAILED"}},"parent":{"ref":"EID6a30afd6-0175-1000-bb78-0785cfad1e62"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:12:57Z","duration":155,"status":"FAILED"},{"id":"EID6a30b2e0-0175-1000-8d9e-66f6318b29b2","testStepResults":{"TestStepResult":{"id":"EID6a30b2e0-0175-1000-eda4-56d206ee0033","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30b338-0175-1000-18a8-2a84ee1c8474","parent":{"ref":"EID6a30b2e0-0175-1000-eda4-56d206ee0033"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:12:57Z","duration":0,"status":"PASSED"},{"id":"EID6a30b338-0175-1000-b136-102204f3648e","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a30b2e0-0175-1000-eda4-56d206ee0033"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:12:57Z","duration":14,"status":"FAILED"},{"id":"EID6a30b346-0175-1000-5ce0-49bd89fbee4e","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6a30b2e0-0175-1000-eda4-56d206ee0033"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:12:57Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID92909291-8f00-4788-8246-4ed867d713fc"},{"ref":"EID49bec38c-e205-415f-a63d-dcac078eae7c"},{"ref":"EID6fe40b54-07de-4911-ab77-ed5205f99ddb"}]},"parent":{"ref":"EID6a30b2e0-0175-1000-8d9e-66f6318b29b2"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:12:57Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6a30afd6-0175-1000-bb78-0785cfad1e62"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:12:57Z","duration":102,"status":"FAILED"},{"id":"EID6a30b346-0175-1000-1b16-f7e2314b7db3","testStepResults":{"TestStepResult":{"id":"EID6a30b346-0175-1000-121e-82ca7214b6b5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30b395-0175-1000-b1a9-27b35675f9fd","parent":{"ref":"EID6a30b346-0175-1000-121e-82ca7214b6b5"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:12:58Z","duration":0,"status":"PASSED"},{"id":"EID6a30b395-0175-1000-a0a3-24cda9127074","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a30b346-0175-1000-121e-82ca7214b6b5"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:12:58Z","duration":11,"status":"FAILED"},{"id":"EID6a30b3a0-0175-1000-dbd4-1593aa076fd5","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a30b346-0175-1000-121e-82ca7214b6b5"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:12:58Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDe4a4ec2d-d203-49d1-a483-8b862b66b14f"},{"ref":"EIDaed162c3-0291-45fd-8b0f-e36c9d9c7c22"},{"ref":"EID490ecfc7-87be-48b6-b52d-0fdef63a13ea"}]},"parent":{"ref":"EID6a30b346-0175-1000-1b16-f7e2314b7db3"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:12:57Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6a30afd6-0175-1000-bb78-0785cfad1e62"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:12:57Z","duration":90,"status":"FAILED"},{"id":"EID6a30b3a0-0175-1000-59b5-1a82f89c6aab","testStepResults":{"TestStepResult":{"id":"EID6a30b3a0-0175-1000-4dc0-b29882482857","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30b414-0175-1000-7d7d-8a04f0e13619","parent":{"ref":"EID6a30b3a0-0175-1000-4dc0-b29882482857"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:12:58Z","duration":0,"status":"PASSED"},{"id":"EID6a30b414-0175-1000-03ac-40dd63227034","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a30b3a0-0175-1000-4dc0-b29882482857"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:12:58Z","duration":26,"status":"FAILED"},{"id":"EID6a30b42e-0175-1000-235d-1dea2afeba9d","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6a30b3a0-0175-1000-4dc0-b29882482857"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:12:58Z","duration":0,"status":"FAILED"},{"id":"EID6a30b42e-0175-1000-593e-14b82d2a92d9","parent":{"ref":"EID6a30b3a0-0175-1000-4dc0-b29882482857"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:12:58Z","duration":0,"status":"PASSED"},{"id":"EID6a30b42e-0175-1000-2924-4b956097a0f9","parent":{"ref":"EID6a30b3a0-0175-1000-4dc0-b29882482857"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:12:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID928c7c14-ea18-4cce-a5f4-8dd6aab27569"},{"ref":"EID88942f41-5113-4ac3-aa45-c23608e4190e"},{"ref":"EID33f597a1-ca0a-4e6c-8c16-0a3b940026fa"}]},"parent":{"ref":"EID6a30b3a0-0175-1000-59b5-1a82f89c6aab"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:12:58Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6a30afd6-0175-1000-bb78-0785cfad1e62"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:12:58Z","duration":142,"status":"FAILED"},{"id":"EID6a30b42e-0175-1000-c9db-b52d1988e3d0","testStepResults":{"TestStepResult":{"id":"EID6a30b42e-0175-1000-1a59-2acbb8af14d9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30b482-0175-1000-6e3a-0fa667307a66","parent":{"ref":"EID6a30b42e-0175-1000-1a59-2acbb8af14d9"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:12:58Z","duration":0,"status":"PASSED"},{"id":"EID6a30b482-0175-1000-504a-b287a3f02313","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a30b42e-0175-1000-1a59-2acbb8af14d9"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:12:58Z","duration":29,"status":"FAILED"},{"id":"EID6a30b49f-0175-1000-c421-b2e1a753838e","parent":{"ref":"EID6a30b42e-0175-1000-1a59-2acbb8af14d9"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:12:58Z","duration":1,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9c3f4100-f276-41cc-9529-a31b2da5f37b"},{"ref":"EID94c55e28-a1f3-4c99-b43c-2da51815e655"},{"ref":"EID56f045af-1d4a-45b3-81a3-5fd0015c37b8"}]},"parent":{"ref":"EID6a30b42e-0175-1000-c9db-b52d1988e3d0"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:12:58Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6a30afd6-0175-1000-bb78-0785cfad1e62"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:12:58Z","duration":114,"status":"FAILED"},{"id":"EID6a30b4a0-0175-1000-375a-6f0bc9163830","testStepResults":{"TestStepResult":{"id":"EID6a30b4a0-0175-1000-5247-452e0ab04e05","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30b537-0175-1000-dae3-05389980832b","parent":{"ref":"EID6a30b4a0-0175-1000-5247-452e0ab04e05"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:12:58Z","duration":0,"status":"PASSED"},{"id":"EID6a30b537-0175-1000-5a78-a9d1ed6074b6","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a30b4a0-0175-1000-5247-452e0ab04e05"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:12:58Z","duration":11,"status":"FAILED"},{"id":"EID6a30b542-0175-1000-58b3-171ef6524078","parent":{"ref":"EID6a30b4a0-0175-1000-5247-452e0ab04e05"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:12:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5e98c94c-91f1-4691-a9fe-31a66fc6dfde"},{"ref":"EID57bcfdfa-da1b-4303-957a-b2db63b6aa12"},{"ref":"EIDfb788861-76e7-419d-a4e8-b7164651e945"}]},"parent":{"ref":"EID6a30b4a0-0175-1000-375a-6f0bc9163830"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:12:58Z","duration":27,"status":"FAILED"}},"parent":{"ref":"EID6a30afd6-0175-1000-bb78-0785cfad1e62"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:12:58Z","duration":175,"status":"FAILED"},{"id":"EID6a30b54f-0175-1000-cb72-89cdc585cb5f","testStepResults":{"TestStepResult":{"id":"EID6a30b54f-0175-1000-3c79-5dd6e41e3147","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30b641-0175-1000-b8b9-33c610c6f173","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a30b54f-0175-1000-3c79-5dd6e41e3147"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:12:58Z","duration":11,"status":"FAILED"},{"id":"EID6a30b64c-0175-1000-abf8-0c8f363bc309","parent":{"ref":"EID6a30b54f-0175-1000-3c79-5dd6e41e3147"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:12:58Z","duration":0,"status":"PASSED"},{"id":"EID6a30b64c-0175-1000-b50b-07388f47af42","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a30b54f-0175-1000-3c79-5dd6e41e3147"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:12:58Z","duration":0,"status":"FAILED"},{"id":"EID6a30b64c-0175-1000-bba2-d0e4afc8ab33","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6a30b54f-0175-1000-3c79-5dd6e41e3147"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:12:58Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDa49391ed-d2ce-409f-a9b9-41f2d1dd97c0"},{"ref":"EID9366cd35-48eb-4575-ac2b-da2348bfa127"},{"ref":"EID9d6d0145-6015-4a05-a069-9ca75fb9e926"}]},"parent":{"ref":"EID6a30b54f-0175-1000-cb72-89cdc585cb5f"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:12:58Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6a30afd6-0175-1000-bb78-0785cfad1e62"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:12:58Z","duration":253,"status":"FAILED"},{"id":"EID6a30b64c-0175-1000-e2b1-def916e78157","testStepResults":{"TestStepResult":{"id":"EID6a30b64c-0175-1000-c9ac-0478af41fb41","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30b6cb-0175-1000-775c-2ed74152f620","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a30b64c-0175-1000-c9ac-0478af41fb41"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:12:58Z","duration":86,"status":"FAILED"},{"id":"EID6a30b721-0175-1000-c0ba-e3bcaecbf0fd","parent":{"ref":"EID6a30b64c-0175-1000-c9ac-0478af41fb41"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:12:58Z","duration":0,"status":"PASSED"},{"id":"EID6a30b721-0175-1000-d67d-c89cc11ac1d4","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a30b64c-0175-1000-c9ac-0478af41fb41"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:12:58Z","duration":0,"status":"FAILED"},{"id":"EID6a30b721-0175-1000-1ccd-de0dd6f00700","parent":{"ref":"EID6a30b64c-0175-1000-c9ac-0478af41fb41"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:12:58Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3a79c289-d311-40f6-9527-e479eca5b271"},{"ref":"EID5981e150-d63c-4205-82c1-744e70fc43f2"},{"ref":"EIDa994ecdb-e49a-490d-b4c1-2918a14a0092"}]},"parent":{"ref":"EID6a30b64c-0175-1000-e2b1-def916e78157"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:12:58Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6a30afd6-0175-1000-bb78-0785cfad1e62"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:12:58Z","duration":213,"status":"FAILED"},{"id":"EID6a30b721-0175-1000-80c3-7c3fffcdac90","testStepResults":{"TestStepResult":[{"id":"EID6a30b721-0175-1000-4969-5308780d0979","parent":{"ref":"EID6a30b721-0175-1000-80c3-7c3fffcdac90"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:12:58Z","duration":0,"status":"PASSED"},{"id":"EID6a30b722-0175-1000-9824-0755e740bec3","parent":{"ref":"EID6a30b721-0175-1000-80c3-7c3fffcdac90"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:12:58Z","duration":155,"status":"PASSED"},{"id":"EID6a30b722-0175-1000-d164-5115602d332c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30b7c5-0175-1000-01cc-07c525034fcc","parent":{"ref":"EID6a30b722-0175-1000-d164-5115602d332c"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:12:59Z","duration":0,"status":"PASSED"},{"id":"EID6a30b7c5-0175-1000-13aa-2946dbb296bd","parent":{"ref":"EID6a30b722-0175-1000-d164-5115602d332c"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:12:59Z","duration":0,"status":"PASSED"},{"id":"EID6a30b7c5-0175-1000-98c9-e5bd76b2dae1","parent":{"ref":"EID6a30b722-0175-1000-d164-5115602d332c"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:12:59Z","duration":0,"status":"PASSED"},{"id":"EID6a30b7c5-0175-1000-0e60-ec686f8a582f","parent":{"ref":"EID6a30b722-0175-1000-d164-5115602d332c"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:12:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID650f4d4d-53dc-43ee-afe0-1daa0483b2ba"},{"ref":"EIDb2e5e785-ff79-4010-b90e-4c83f9f869f2"},{"ref":"EID83a1b6b3-42c3-4f4e-acfa-138d73f4268f"}]},"parent":{"ref":"EID6a30b721-0175-1000-80c3-7c3fffcdac90"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:12:58Z","duration":40,"status":"PASSED"},{"id":"EID6a30b7c5-0175-1000-f939-e8e76abcbe32","attachments":{"attachment":{"ref":"EID22434854-6742-47b4-997c-95fdeac721b8"}},"parent":{"ref":"EID6a30b721-0175-1000-80c3-7c3fffcdac90"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:12:59Z","duration":3,"status":"PASSED"},{"id":"EID6a30b7d4-0175-1000-f052-254e779b7aa6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30b84f-0175-1000-2b01-ecdda95a484d","parent":{"ref":"EID6a30b7d4-0175-1000-f052-254e779b7aa6"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:12:59Z","duration":0,"status":"PASSED"},{"id":"EID6a30b84f-0175-1000-b074-6472442e4674","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a30b7d4-0175-1000-f052-254e779b7aa6"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:12:59Z","duration":15,"status":"FAILED"},{"id":"EID6a30b85e-0175-1000-902f-68dd1f75b7c4","parent":{"ref":"EID6a30b7d4-0175-1000-f052-254e779b7aa6"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:12:59Z","duration":0,"status":"PASSED"},{"id":"EID6a30b85e-0175-1000-f249-70c2d1558b52","parent":{"ref":"EID6a30b7d4-0175-1000-f052-254e779b7aa6"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:12:59Z","duration":0,"status":"PASSED"},{"id":"EID6a30b85e-0175-1000-9d01-beb9feed110c","parent":{"ref":"EID6a30b7d4-0175-1000-f052-254e779b7aa6"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:12:59Z","duration":0,"status":"PASSED"},{"id":"EID6a30b85e-0175-1000-14ae-31b8043342ed","parent":{"ref":"EID6a30b7d4-0175-1000-f052-254e779b7aa6"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:12:59Z","duration":0,"status":"PASSED"},{"id":"EID6a30b85e-0175-1000-e1d6-05134f91eea8","parent":{"ref":"EID6a30b7d4-0175-1000-f052-254e779b7aa6"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:12:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID947297be-d558-4706-90fc-8eadeabc21d3"},{"ref":"EIDf283ba58-5c6c-432f-ab4b-a7ae2de86d2a"},{"ref":"EID1f285b88-eb88-43aa-bafc-8f134dc7e055"}]},"parent":{"ref":"EID6a30b721-0175-1000-80c3-7c3fffcdac90"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:12:59Z","duration":32,"status":"FAILED"}]},"parent":{"ref":"EID6a30afd6-0175-1000-bb78-0785cfad1e62"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:12:58Z","duration":317,"status":"FAILED"},{"id":"EID6a30b85e-0175-1000-dcf6-a6a37f8657a4","testStepResults":{"TestStepResult":[{"id":"EID6a30b85e-0175-1000-20c8-c0c60093af85","parent":{"ref":"EID6a30b85e-0175-1000-dcf6-a6a37f8657a4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:12:59Z","duration":0,"status":"PASSED"},{"id":"EID6a30b85e-0175-1000-c301-7f4ca3879390","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30b97c-0175-1000-8d35-41a5ecf3a7a8","parent":{"ref":"EID6a30b85e-0175-1000-c301-7f4ca3879390"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:12:59Z","duration":0,"status":"PASSED"},{"id":"EID6a30b97c-0175-1000-4994-29be78f7fbc4","parent":{"ref":"EID6a30b85e-0175-1000-c301-7f4ca3879390"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:12:59Z","duration":0,"status":"PASSED"},{"id":"EID6a30b97c-0175-1000-e181-9669dd793706","parent":{"ref":"EID6a30b85e-0175-1000-c301-7f4ca3879390"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:12:59Z","duration":0,"status":"PASSED"},{"id":"EID6a30b97c-0175-1000-f209-695aeca31bd5","parent":{"ref":"EID6a30b85e-0175-1000-c301-7f4ca3879390"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:12:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID28d41084-af52-408e-9d2c-83cf444ec9fe"},{"ref":"EID1d716883-c254-4ed8-9376-98a26484da65"},{"ref":"EID09d5492e-7f00-4fc9-9f03-c2591c670c97"}]},"parent":{"ref":"EID6a30b85e-0175-1000-dcf6-a6a37f8657a4"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:12:59Z","duration":148,"status":"PASSED"},{"id":"EID6a30b97c-0175-1000-db21-4be82995eab2","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a30b98e-0175-1000-1a7b-828cc3778130","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30ba6f-0175-1000-070a-55ff6c2e2bb3","parent":{"ref":"EID6a30b98e-0175-1000-1a7b-828cc3778130"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:12:59Z","duration":0,"status":"PASSED"},{"id":"EID6a30ba6f-0175-1000-9298-d94d09904461","parent":{"ref":"EID6a30b98e-0175-1000-1a7b-828cc3778130"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:12:59Z","duration":0,"status":"PASSED"},{"id":"EID6a30ba6f-0175-1000-cd70-8500c928dc83","parent":{"ref":"EID6a30b98e-0175-1000-1a7b-828cc3778130"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:12:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID40b3cb93-c40d-429d-a75d-976e789627fa"},{"ref":"EIDc8295b32-fc13-4ae3-bb75-895d8f610f53"},{"ref":"EIDc1d8957f-9a93-4076-9757-70603934473b"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:12:59Z","duration":149,"status":"PASSED"},{"id":"EID6a30ba71-0175-1000-6f10-cafc8b6170aa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30bb3d-0175-1000-43a7-a8803146e56e","parent":{"ref":"EID6a30ba71-0175-1000-6f10-cafc8b6170aa"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:12:59Z","duration":0,"status":"PASSED"},{"id":"EID6a30bb3d-0175-1000-3aff-86ea6062a2ce","parent":{"ref":"EID6a30ba71-0175-1000-6f10-cafc8b6170aa"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:12:59Z","duration":0,"status":"PASSED"},{"id":"EID6a30bb3d-0175-1000-b8c4-8bfc6ab5ef45","parent":{"ref":"EID6a30ba71-0175-1000-6f10-cafc8b6170aa"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:12:59Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd624b377-53a9-4c67-b864-e8bdd2dc2e8c"},{"ref":"EID3d23f90c-4d2c-4375-928b-58e174854d1d"},{"ref":"EID669945e7-d1c3-4830-ac32-a7e540149943"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:12:59Z","duration":148,"status":"PASSED"},{"id":"EID6a30bb48-0175-1000-4e55-124ac16da642","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30bbc3-0175-1000-20b8-8eed24b5e37b","parent":{"ref":"EID6a30bb48-0175-1000-4e55-124ac16da642"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:13:00Z","duration":0,"status":"PASSED"},{"id":"EID6a30bbc3-0175-1000-d1c9-8733beb2b14e","parent":{"ref":"EID6a30bb48-0175-1000-4e55-124ac16da642"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:13:00Z","duration":0,"status":"PASSED"},{"id":"EID6a30bbc3-0175-1000-14e6-79a99d66e98e","parent":{"ref":"EID6a30bb48-0175-1000-4e55-124ac16da642"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:13:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf6304ca8-3541-4271-8b13-1f44cdbec4d2"},{"ref":"EID9f739227-f190-44c8-b626-6720647bae0f"},{"ref":"EIDcb6a40ae-1d8c-4d82-a60a-e28bc51e91ca"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:12:59Z","duration":39,"status":"PASSED"}]},"parent":{"ref":"EID6a30b85e-0175-1000-dcf6-a6a37f8657a4"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:12:59Z","duration":584,"status":"PASSED"},{"id":"EID6a30bbc4-0175-1000-7869-cb3673bc059c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30bc1a-0175-1000-84a8-6b847d080c3d","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a30bbc4-0175-1000-7869-cb3673bc059c"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:13:00Z","duration":12,"status":"FAILED"},{"id":"EID6a30bc26-0175-1000-eea6-8ba08aa4093a","parent":{"ref":"EID6a30bbc4-0175-1000-7869-cb3673bc059c"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:13:00Z","duration":0,"status":"PASSED"},{"id":"EID6a30bc26-0175-1000-d56b-6ce26c0c4359","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a30bbc4-0175-1000-7869-cb3673bc059c"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:13:00Z","duration":0,"status":"FAILED"},{"id":"EID6a30bc26-0175-1000-a824-c1045b16695c","parent":{"ref":"EID6a30bbc4-0175-1000-7869-cb3673bc059c"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:13:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID205cad99-4423-499b-b655-da1c208a9ac8"},{"ref":"EIDbd0e0919-ded2-4417-be79-d763a4dab0ba"},{"ref":"EIDaaebf2a6-4246-46f1-a4a7-1ce01811d53d"}]},"parent":{"ref":"EID6a30b85e-0175-1000-dcf6-a6a37f8657a4"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:13:00Z","duration":26,"status":"FAILED"}]},"parent":{"ref":"EID6a30afd6-0175-1000-bb78-0785cfad1e62"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:12:59Z","duration":977,"status":"FAILED"},{"id":"EID6a30bc2f-0175-1000-dcc0-0ee1b9d52dbf","testStepResults":{"TestStepResult":{"id":"EID6a30bc2f-0175-1000-6b4f-dfef94a48fbf","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a30bc9b-0175-1000-67be-4bcd7f0a1152","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a30bc2f-0175-1000-6b4f-dfef94a48fbf"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:13:00Z","duration":17,"status":"FAILED"},{"id":"EID6a30bcac-0175-1000-1ac7-ec73472285f6","parent":{"ref":"EID6a30bc2f-0175-1000-6b4f-dfef94a48fbf"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:13:00Z","duration":0,"status":"PASSED"},{"id":"EID6a30bcac-0175-1000-c29f-dccb167c0c84","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a30bc2f-0175-1000-6b4f-dfef94a48fbf"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:13:00Z","duration":0,"status":"FAILED"},{"id":"EID6a30bcac-0175-1000-9c30-ecac825bb66a","parent":{"ref":"EID6a30bc2f-0175-1000-6b4f-dfef94a48fbf"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:13:00Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6470462f-d4c3-47f3-ae9a-b22d1a1ef390"},{"ref":"EID0bf2a846-9b93-4d3c-a780-c2a5f23c55e5"},{"ref":"EIDac86fa61-32c9-4a4a-b8c4-f46522089f07"}]},"parent":{"ref":"EID6a30bc2f-0175-1000-dcc0-0ee1b9d52dbf"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:13:00Z","duration":32,"status":"FAILED"}},"parent":{"ref":"EID6a30afd6-0175-1000-bb78-0785cfad1e62"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:13:00Z","duration":135,"status":"FAILED"}]},"parent":{"ref":"EID35e75a2d-39a5-4eee-bb73-ed0b2312165c"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:12:57Z","duration":3296,"status":"FAILED"},{"id":"EID6a30bcb6-0175-1000-85d0-0097df5368f8","testCaseResults":{"TestCaseResult":[{"id":"EID6a30bcb6-0175-1000-a4ee-70a30d6439a2","testStepResults":{"TestStepResult":{"id":"EID6a30bcbf-0175-1000-e1a4-797763ecf469","parent":{"ref":"EID6a30bcb6-0175-1000-a4ee-70a30d6439a2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:13:00Z","duration":594,"status":"SKIPPED"}},"parent":{"ref":"EID6a30bcb6-0175-1000-85d0-0097df5368f8"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:13:00Z","duration":9,"status":"SKIPPED"},{"id":"EID6a30bcbf-0175-1000-ce6f-4352a25b33c5","testStepResults":{"TestStepResult":{"id":"EID6a30bcbf-0175-1000-5dd3-f66655b983c9","parent":{"ref":"EID6a30bcbf-0175-1000-ce6f-4352a25b33c5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:13:00Z","duration":595,"status":"SKIPPED"}},"parent":{"ref":"EID6a30bcb6-0175-1000-85d0-0097df5368f8"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:13:00Z","duration":1,"status":"SKIPPED"},{"id":"EID6a30bcc0-0175-1000-c15a-990775b7065c","testStepResults":{"TestStepResult":{"id":"EID6a30bcc0-0175-1000-c24d-5b927ef004ad","parent":{"ref":"EID6a30bcc0-0175-1000-c15a-990775b7065c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:13:00Z","duration":594,"status":"SKIPPED"}},"parent":{"ref":"EID6a30bcb6-0175-1000-85d0-0097df5368f8"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:13:00Z","duration":0,"status":"SKIPPED"},{"id":"EID6a30bcc0-0175-1000-da31-4eee227c5a5b","testStepResults":{"TestStepResult":{"id":"EID6a30bcca-0175-1000-d156-9e0d5d04c0e7","parent":{"ref":"EID6a30bcc0-0175-1000-da31-4eee227c5a5b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:13:00Z","duration":594,"status":"SKIPPED"}},"parent":{"ref":"EID6a30bcb6-0175-1000-85d0-0097df5368f8"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:13:00Z","duration":10,"status":"SKIPPED"},{"id":"EID6a30bccb-0175-1000-a80b-0fe85b4d4661","testStepResults":{"TestStepResult":{"id":"EID6a30bccb-0175-1000-8611-26bc80deb874","parent":{"ref":"EID6a30bccb-0175-1000-a80b-0fe85b4d4661"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:13:00Z","duration":594,"status":"SKIPPED"}},"parent":{"ref":"EID6a30bcb6-0175-1000-85d0-0097df5368f8"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:13:00Z","duration":0,"status":"SKIPPED"},{"id":"EID6a30bccb-0175-1000-6840-72a07b4e153e","testStepResults":{"TestStepResult":{"id":"EID6a30bccb-0175-1000-c9ec-f0972dee3598","parent":{"ref":"EID6a30bccb-0175-1000-6840-72a07b4e153e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:13:00Z","duration":594,"status":"SKIPPED"}},"parent":{"ref":"EID6a30bcb6-0175-1000-85d0-0097df5368f8"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:13:00Z","duration":0,"status":"SKIPPED"},{"id":"EID6a30bccb-0175-1000-d550-64de85b170b6","testStepResults":{"TestStepResult":{"id":"EID6a30bccb-0175-1000-9672-d60d7dd5ff47","parent":{"ref":"EID6a30bccb-0175-1000-d550-64de85b170b6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:13:00Z","duration":594,"status":"SKIPPED"}},"parent":{"ref":"EID6a30bcb6-0175-1000-85d0-0097df5368f8"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:13:00Z","duration":0,"status":"SKIPPED"}]},"parent":{"ref":"EID35e75a2d-39a5-4eee-bb73-ed0b2312165c"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:13:00Z","duration":21,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"ServiceEndpoint","id":"EID7884110a-290c-4ed1-9697-08f212ad99bf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID7812926e-162b-43fa-aaac-ff4603a9cdcc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDa502db65-171e-4a37-b8f8-64b84093bb21","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDa502db65-171e-4a37-b8f8-64b84093bb21"}},{"type":"ServiceEndpoint","id":"EIDe4a4ec2d-d203-49d1-a483-8b862b66b14f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID88942f41-5113-4ac3-aa45-c23608e4190e","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID88942f41-5113-4ac3-aa45-c23608e4190e"}},{"type":"GetParameter","id":"EID4fa21dd1-1dc1-445f-ad77-7e655c7811aa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDc434d3b2-05a7-4dd2-8f38-0a8981192fc1","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDc434d3b2-05a7-4dd2-8f38-0a8981192fc1"}},{"type":"GetParameter","id":"EIDac86fa61-32c9-4a4a-b8c4-f46522089f07","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID78096299-f65f-4a69-958e-aee28318bd5f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID78096299-f65f-4a69-958e-aee28318bd5f"}},{"type":"ServiceEndpoint","id":"EIDc76707dd-3f61-4720-9837-fe4b74f6ccdc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID2c08ff05-327d-4dac-97e0-6144623d35a2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID2c08ff05-327d-4dac-97e0-6144623d35a2"}},{"type":"GetParameter","id":"EIDfb788861-76e7-419d-a4e8-b7164651e945","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID442f016e-3ff7-44ad-9010-c68aa9451a98","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID4ea143b0-6f3a-4f8b-905b-5312d89d9f34","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID4ea143b0-6f3a-4f8b-905b-5312d89d9f34"}},{"type":"ServiceEndpoint","id":"EID64886d77-9577-4758-8e1f-5d8cfbf2a2ea","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDf2decb86-2879-40c0-badd-3516f5fdbd5b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID6fe40b54-07de-4911-ab77-ed5205f99ddb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EID0194f13b-c229-47f3-babb-503a144f2093","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID0194f13b-c229-47f3-babb-503a144f2093"}},{"type":"Message","id":"EID026add88-cdb2-4034-b32e-98437a20d3b5","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID026add88-cdb2-4034-b32e-98437a20d3b5"}},{"type":"GetParameter","id":"EIDf3507f8b-054f-4cee-92c0-3c9b147598db","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDcb6a40ae-1d8c-4d82-a60a-e28bc51e91ca","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EID1b3bfc81-6d0a-46df-bc16-2d4a22e10e4e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID1b3bfc81-6d0a-46df-bc16-2d4a22e10e4e"}},{"type":"Message","id":"EID8a14df7a-063b-4486-86d5-fa6bfaf56f11","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID8a14df7a-063b-4486-86d5-fa6bfaf56f11"}},{"type":"ServiceEndpoint","id":"EIDe5a1cfa1-61f5-4385-a552-61e4e6f2840a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID1a05377c-2330-4b20-88fe-e99cc6878c3e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID1a05377c-2330-4b20-88fe-e99cc6878c3e"}},{"type":"GetParameter","id":"EID33f597a1-ca0a-4e6c-8c16-0a3b940026fa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID9366cd35-48eb-4575-ac2b-da2348bfa127","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID9366cd35-48eb-4575-ac2b-da2348bfa127"}},{"type":"GetParameter","id":"EID9d6d0145-6015-4a05-a069-9ca75fb9e926","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID94512012-0076-4832-a529-5d96d56425ea","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID0b453847-617c-4b6f-8ac1-803e468b6c7e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDb5296f7f-d159-43c2-9e77-773d6bb40440","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID9c3f4100-f276-41cc-9529-a31b2da5f37b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID003f8487-5ae6-4afa-bbab-3bfe7ccc423e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDdecb875d-cda3-4a4c-899d-c930ea2b28fb","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDdecb875d-cda3-4a4c-899d-c930ea2b28fb"}},{"type":"ServiceResponse","id":"EID6458e5a8-4bc9-449e-b06c-9fed38b06aa6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID6458e5a8-4bc9-449e-b06c-9fed38b06aa6"}},{"type":"GetParameter","id":"EID171a0a9a-d110-42ad-93d8-ed307e844809","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID66f89acb-be5e-49ba-b808-f5086a2127f8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID66f89acb-be5e-49ba-b808-f5086a2127f8"}},{"type":"ServiceResponse","id":"EID94c55e28-a1f3-4c99-b43c-2da51815e655","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID94c55e28-a1f3-4c99-b43c-2da51815e655"}},{"type":"Message","id":"EIDad8be2c8-b874-4f5a-b4fa-f647042bfa0b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDad8be2c8-b874-4f5a-b4fa-f647042bfa0b"}},{"type":"ServiceResponse","id":"EIDb9fa295c-2298-4ef5-963d-404da6310aec","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDb9fa295c-2298-4ef5-963d-404da6310aec"}},{"type":"Message","id":"EID22434854-6742-47b4-997c-95fdeac721b8","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID22434854-6742-47b4-997c-95fdeac721b8"}},{"type":"ServiceResponse","id":"EIDb2e5e785-ff79-4010-b90e-4c83f9f869f2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDb2e5e785-ff79-4010-b90e-4c83f9f869f2"}},{"type":"ServiceResponse","id":"EIDeac9be56-7b12-480f-b09b-e64e09ac344d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDeac9be56-7b12-480f-b09b-e64e09ac344d"}},{"type":"Error","id":"EID6dcc3748-3f8b-45c9-beed-8ec7983de49f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID6dcc3748-3f8b-45c9-beed-8ec7983de49f"}},{"type":"Error","id":"EIDe1b9111e-b247-458b-89d4-6c4b2c8796c5","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDe1b9111e-b247-458b-89d4-6c4b2c8796c5"}},{"type":"ServiceResponse","id":"EID9f739227-f190-44c8-b626-6720647bae0f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID9f739227-f190-44c8-b626-6720647bae0f"}},{"type":"GetParameter","id":"EID346282d5-f0ab-4ea9-9509-cee0d78b344f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDf283ba58-5c6c-432f-ab4b-a7ae2de86d2a","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDf283ba58-5c6c-432f-ab4b-a7ae2de86d2a"}},{"type":"GetParameter","id":"EIDdd1ec889-1d9c-43ba-ae1e-68e2b4866f09","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID56f045af-1d4a-45b3-81a3-5fd0015c37b8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID5570ffc9-3d71-453e-81af-118fb63e227e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID5570ffc9-3d71-453e-81af-118fb63e227e"}},{"type":"ServiceEndpoint","id":"EID3a79c289-d311-40f6-9527-e479eca5b271","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDc1d8957f-9a93-4076-9757-70603934473b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EID990c66c2-d949-4914-8250-f1b436008915","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDae1229c0-0202-4737-88e6-465895260622","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDae1229c0-0202-4737-88e6-465895260622"}},{"type":"GetParameter","id":"EID2e194b98-25f2-45ab-8bfc-151036cfa1b2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDebc0e64f-e02b-4ff3-acc7-d2e841003c30","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDebc0e64f-e02b-4ff3-acc7-d2e841003c30"}},{"type":"GetParameter","id":"EID09d5492e-7f00-4fc9-9f03-c2591c670c97","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Error","id":"EID6bac40ee-917f-4808-98a9-57e9faaaedb7","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID6bac40ee-917f-4808-98a9-57e9faaaedb7"}},{"type":"ServiceResponse","id":"EID5981e150-d63c-4205-82c1-744e70fc43f2","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID5981e150-d63c-4205-82c1-744e70fc43f2"}},{"type":"ServiceEndpoint","id":"EIDe27615fc-1e59-46be-b107-2c39ea7728ff","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDa994ecdb-e49a-490d-b4c1-2918a14a0092","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID8ad54c61-fafe-4c92-933a-75f6dd388d98","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID2b40cbe2-1c05-4bf2-b8e9-ab14011c0dd5","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID2b40cbe2-1c05-4bf2-b8e9-ab14011c0dd5"}},{"type":"GetParameter","id":"EIDfcf6cdf2-fac1-4e1e-ac86-70dc5a50acc3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID57bcfdfa-da1b-4303-957a-b2db63b6aa12","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID57bcfdfa-da1b-4303-957a-b2db63b6aa12"}},{"type":"Error","id":"EIDb7a543aa-1da5-4a3e-939a-8591bcd6546d","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDb7a543aa-1da5-4a3e-939a-8591bcd6546d"}},{"type":"Message","id":"EID60d01db5-d11a-40e9-b774-2c7f577bd9fe","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID60d01db5-d11a-40e9-b774-2c7f577bd9fe"}},{"type":"GetParameter","id":"EIDaccd32bf-2db8-4a77-aa5a-fca433a1db72","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID280c98eb-789d-4ead-ab3e-9617265df2dd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID947297be-d558-4706-90fc-8eadeabc21d3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID0bf2a846-9b93-4d3c-a780-c2a5f23c55e5","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID0bf2a846-9b93-4d3c-a780-c2a5f23c55e5"}},{"type":"ServiceEndpoint","id":"EID5e98c94c-91f1-4691-a9fe-31a66fc6dfde","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDa3a3281b-e2d2-4cd5-ae34-82ca6fa2ff33","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDa3a3281b-e2d2-4cd5-ae34-82ca6fa2ff33"}},{"type":"Message","id":"EIDbea03198-1a21-47db-b0c2-559a87310dc0","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDbea03198-1a21-47db-b0c2-559a87310dc0"}},{"type":"ServiceResponse","id":"EID3d23f90c-4d2c-4375-928b-58e174854d1d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID3d23f90c-4d2c-4375-928b-58e174854d1d"}},{"type":"Message","id":"EIDa93bcadf-cdbd-4ed9-a004-e96115162a17","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDa93bcadf-cdbd-4ed9-a004-e96115162a17"}},{"type":"ServiceResponse","id":"EID69f53c48-f8a6-4b3b-b253-d6366d1a06bc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID69f53c48-f8a6-4b3b-b253-d6366d1a06bc"}},{"type":"Error","id":"EID2549dde5-8176-4479-a234-f6ae9a3793f7","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID2549dde5-8176-4479-a234-f6ae9a3793f7"}},{"type":"Message","id":"EIDb879ec2a-92da-4fda-916c-1b887ecaf12e","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDb879ec2a-92da-4fda-916c-1b887ecaf12e"}},{"type":"ServiceResponse","id":"EID17c3ac35-9859-48de-b1df-3c04e83f1f45","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID17c3ac35-9859-48de-b1df-3c04e83f1f45"}},{"type":"ServiceEndpoint","id":"EID205cad99-4423-499b-b655-da1c208a9ac8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID68a929ec-3a1f-4121-875a-4df86caf1582","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID68a929ec-3a1f-4121-875a-4df86caf1582"}},{"type":"ServiceEndpoint","id":"EID6470462f-d4c3-47f3-ae9a-b22d1a1ef390","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID40b3cb93-c40d-429d-a75d-976e789627fa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EIDc0b8a047-4de3-4e0e-a1e1-6489d3c6a916","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDc0b8a047-4de3-4e0e-a1e1-6489d3c6a916"}},{"type":"ServiceEndpoint","id":"EIDe8ec0f1c-f3e3-4ed9-995d-e3c412411539","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID2ea5e972-abb1-4a63-ada1-7a43a535f28c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID2ea5e972-abb1-4a63-ada1-7a43a535f28c"}},{"type":"ServiceEndpoint","id":"EID7502b1f9-053d-4fb5-9ca4-2c61fdb1f193","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDd0bf024f-0deb-4152-bed1-8dd093e5a126","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID3f8674c7-8a3e-428f-bc8b-0b89775f9a0f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID1d716883-c254-4ed8-9376-98a26484da65","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID1d716883-c254-4ed8-9376-98a26484da65"}},{"type":"GetParameter","id":"EID490ecfc7-87be-48b6-b52d-0fdef63a13ea","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDf4bfa456-725f-4066-85fb-564530a05ae9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDf4bfa456-725f-4066-85fb-564530a05ae9"}},{"type":"Message","id":"EIDa783d8ab-78f6-44c4-baad-6c0d50831373","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDa783d8ab-78f6-44c4-baad-6c0d50831373"}},{"type":"Message","id":"EID7831df8b-6dc5-4d82-b3ba-b16267d7435b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID7831df8b-6dc5-4d82-b3ba-b16267d7435b"}},{"type":"Error","id":"EID02c9a121-2b37-45b4-9bdb-88b81aa94f1c","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID02c9a121-2b37-45b4-9bdb-88b81aa94f1c"}},{"type":"ServiceResponse","id":"EID5a47d782-9f94-46ce-9bb6-b17fee011e66","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID5a47d782-9f94-46ce-9bb6-b17fee011e66"}},{"type":"GetParameter","id":"EID08444a64-5e2f-489b-8070-9b07e278a740","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID650f4d4d-53dc-43ee-afe0-1daa0483b2ba","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDf99a2c14-b5a2-4290-91bd-79d9ffacfa8b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID4d7a09aa-7e80-42a6-9c1f-feb8d7060bab","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID4d7a09aa-7e80-42a6-9c1f-feb8d7060bab"}},{"type":"ServiceEndpoint","id":"EID7eebbf42-5ad8-456c-af19-1eb421e9b28f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID92909291-8f00-4788-8246-4ed867d713fc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDa1cb4f6a-9fc7-481e-a5d4-fc1876e94c31","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDf1eec0fb-0138-469f-b688-bcbf3115fadf","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDf1eec0fb-0138-469f-b688-bcbf3115fadf"}},{"type":"ServiceEndpoint","id":"EIDe5166831-bfd0-4634-93bb-e9b84f52c120","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDd81c764b-107a-444b-a51f-03c6123447cc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDd81c764b-107a-444b-a51f-03c6123447cc"}},{"type":"ServiceResponse","id":"EIDaed162c3-0291-45fd-8b0f-e36c9d9c7c22","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDaed162c3-0291-45fd-8b0f-e36c9d9c7c22"}},{"type":"GetParameter","id":"EID984bb55c-0474-419f-96ec-a4e22296da1e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDcf2c39be-0790-4816-97e7-6f55158f4d35","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID4c78fded-c25b-4feb-b577-2f0a118ae7d0","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID4c78fded-c25b-4feb-b577-2f0a118ae7d0"}},{"type":"Error","id":"EID8c264779-d484-4d46-a90d-9964da2fd1e6","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID8c264779-d484-4d46-a90d-9964da2fd1e6"}},{"type":"ServiceEndpoint","id":"EID28d41084-af52-408e-9d2c-83cf444ec9fe","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EID82f7e3d2-a8f7-44bb-8aa5-f0d45446986a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID82f7e3d2-a8f7-44bb-8aa5-f0d45446986a"}},{"type":"Error","id":"EIDf5f52daa-cb5c-4a57-a683-976ef4c685a9","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDf5f52daa-cb5c-4a57-a683-976ef4c685a9"}},{"type":"GetParameter","id":"EID83a1b6b3-42c3-4f4e-acfa-138d73f4268f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDca7bd03b-2990-4d73-a11f-69ba33ea15fe","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDca7bd03b-2990-4d73-a11f-69ba33ea15fe"}},{"type":"Message","id":"EIDbce5fcad-18aa-42e4-979f-ca2f18d5a2fb","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDbce5fcad-18aa-42e4-979f-ca2f18d5a2fb"}},{"type":"GetParameter","id":"EID83944f16-0e5d-4d8c-94a4-26353e4d68fc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDc33c0ff0-a24a-4d02-9f9c-34d64a2afdd1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDe7c78af1-7c6f-449e-9182-36d4fb286b05","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID5f791234-0583-4a51-8541-43e02a8a1661","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID77ffc5fc-4fa4-46c0-a841-4951fa7ccfd7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID00b23075-2e79-47bf-ae7b-5ced195be4cf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID00b23075-2e79-47bf-ae7b-5ced195be4cf"}},{"type":"Message","id":"EIDf8b5af23-cb7d-4114-b7f2-2ee3dfbe1204","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDf8b5af23-cb7d-4114-b7f2-2ee3dfbe1204"}},{"type":"ServiceEndpoint","id":"EIDac46b709-ce82-4720-8463-271fa521cc2f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDbd0e0919-ded2-4417-be79-d763a4dab0ba","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDbd0e0919-ded2-4417-be79-d763a4dab0ba"}},{"type":"ServiceResponse","id":"EIDc8295b32-fc13-4ae3-bb75-895d8f610f53","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDc8295b32-fc13-4ae3-bb75-895d8f610f53"}},{"type":"ServiceEndpoint","id":"EIDf6304ca8-3541-4271-8b13-1f44cdbec4d2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"LogFile","id":"EID67f0fe40-776a-472e-95bf-0eb0304dcd62","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID67f0fe40-776a-472e-95bf-0eb0304dcd62"}},{"type":"GetParameter","id":"EID96b066f3-604f-42eb-9c1b-207ce142367d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID55b00b73-9d2b-4a9c-8c5c-162fcd75e7e0","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID55b00b73-9d2b-4a9c-8c5c-162fcd75e7e0"}},{"type":"ServiceResponse","id":"EID49bec38c-e205-415f-a63d-dcac078eae7c","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID49bec38c-e205-415f-a63d-dcac078eae7c"}},{"type":"Message","id":"EID6800bb39-d197-48d5-b4ec-05b49098dd7a","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID6800bb39-d197-48d5-b4ec-05b49098dd7a"}},{"type":"Error","id":"EIDa9b518a3-d9f9-40c5-8fd0-0c0d1cff59bf","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDa9b518a3-d9f9-40c5-8fd0-0c0d1cff59bf"}},{"type":"GetParameter","id":"EIDbdded3ca-e0d2-44ab-b929-fdd0a7169c62","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID1bce253c-1d3f-459a-8665-07cd996e0aa8","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID1bce253c-1d3f-459a-8665-07cd996e0aa8"}},{"type":"Message","id":"EID610514eb-e040-478c-ab09-02a5d94050c0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID610514eb-e040-478c-ab09-02a5d94050c0"}},{"type":"Message","id":"EID0ae309b8-bfee-4851-9126-2a46bc137199","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID0ae309b8-bfee-4851-9126-2a46bc137199"}},{"type":"Message","id":"EID955f144a-2334-42da-8910-73b417f9d1e3","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID955f144a-2334-42da-8910-73b417f9d1e3"}},{"type":"GetParameter","id":"EID669945e7-d1c3-4830-ac32-a7e540149943","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EID1f285b88-eb88-43aa-bafc-8f134dc7e055","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDa760af4c-a4e7-4f0c-8610-d0ee972a0cb6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDa45f10bf-2050-4b65-abd2-a4261193d962","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDd881e199-b33c-43a8-8689-eb98117269c8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID9c6c8e83-2982-4a3f-85e8-5d027f408ccc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDff965fa7-d822-412a-948f-7475cb61694d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Error","id":"EIDf30fee15-2c27-4468-92b0-34c55f43e625","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EIDf30fee15-2c27-4468-92b0-34c55f43e625"}},{"type":"ServiceResponse","id":"EID71ef4e43-624d-4cea-949a-9e8fe6ec917f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID71ef4e43-624d-4cea-949a-9e8fe6ec917f"}},{"type":"ServiceEndpoint","id":"EID928c7c14-ea18-4cce-a5f4-8dd6aab27569","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID8e8ac169-5aff-41f4-92cb-e844dd60192f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID8e8ac169-5aff-41f4-92cb-e844dd60192f"}},{"type":"ServiceEndpoint","id":"EID4293b044-d9ba-4dad-a486-42c6746b22ea","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EID8c6217b1-8630-4468-ac46-d5bc84aeb26a","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID8c6217b1-8630-4468-ac46-d5bc84aeb26a"}},{"type":"ServiceResponse","id":"EID40f2aceb-f100-44cf-b8d2-ae01148feaee","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID40f2aceb-f100-44cf-b8d2-ae01148feaee"}},{"type":"ServiceResponse","id":"EID20b14447-08ed-435c-8edf-ab183eaa6730","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID20b14447-08ed-435c-8edf-ab183eaa6730"}},{"type":"GetParameter","id":"EIDaaebf2a6-4246-46f1-a4a7-1ce01811d53d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID18936352-9b74-4a8b-a585-aaaaa2af2ca3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID18936352-9b74-4a8b-a585-aaaaa2af2ca3"}},{"type":"ServiceResponse","id":"EID58676b33-f863-4eb2-bfc6-0a14bf61994d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID35e75a2d-39a5-4eee-bb73-ed0b2312165c/Attachments/EID58676b33-f863-4eb2-bfc6-0a14bf61994d"}},{"type":"ServiceEndpoint","id":"EIDa49391ed-d2ce-409f-a9b9-41f2d1dd97c0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDd624b377-53a9-4c67-b864-e8bdd2dc2e8c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:12:49Z","duration":11111,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:13:43.291 [print] EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:13:43.291 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:13:43.291 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.008
13:13:43.300 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:13:43.300 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/f594fa8d-7f7d-46a7-b630-af830c0c81f8.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:13:43.300 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/f594fa8d-7f7d-46a7-b630-af830c0c81f8.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:13:43.300 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDf594fa8d-7f7d-46a7-b630-af830c0c81f8/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.005
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.004
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
13:13:43.314 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.005
13:13:43.320 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
13:13:43.321 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.001
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
3.502
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.001
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:19:05.622 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-w/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.500
13:19:05.624 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 279
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-w/wfs?request=GetCapabilities"}}}

13:19:09.122 response time in milliseconds: 3395.50
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:19:08 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804748938","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:19:09.123 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1:22.947
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.003
13:14:35.173 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 6.511
13:14:35.180 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

13:14:41.685 response time in milliseconds: 5762.96
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:14:40 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:14:38 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/3228e7ef-16d6-4666-821d-68ef5b8d1971.json","testRuns":{"TestRun":{"id":"EID3228e7ef-16d6-4666-821d-68ef5b8d1971","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:14:37.398Z","testTasks":{"TestTask":{"id":"EID511b20c7-d938-4be7-bd6f-6b0f281c0af9","parent":{"ref":"EID3228e7ef-16d6-4666-821d-68ef5b8d1971"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID23af16f4-8142-4524-b928-cdab16e23697"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID3228e7ef-16d6-4666-821d-68ef5b8d1971/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID23af16f4-8142-4524-b928-cdab16e23697","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:14:35.603Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:14:36.555Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.005
13:14:41.693 [print] EID3228e7ef-16d6-4666-821d-68ef5b8d1971
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:14:41.693 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:14:41.694 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:14:41.694 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/3228e7ef-16d6-4666-821d-68ef5b8d1971.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:14:41.694 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID3228e7ef-16d6-4666-821d-68ef5b8d1971/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:14:41.695 [print] statuspath TestRuns/EID3228e7ef-16d6-4666-821d-68ef5b8d1971
* print 'progresspath ', progresspath 0.001
13:14:41.697 [print] progresspath  TestRuns/EID3228e7ef-16d6-4666-821d-68ef5b8d1971/progress
Given path progresspath 0.000
When method GET 0.920
13:14:41.705 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3228e7ef-16d6-4666-821d-68ef5b8d1971/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:42.617 response time in milliseconds: 911.74
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:14:42 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:14:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:37 UTC 2020)","27.10.2020 13:14:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:37 - Preparing 1 Test Task:","27.10.2020 13:14:37 -  TestTask 1 (511b20c7-d938-4be7-bd6f-6b0f281c0af9)","27.10.2020 13:14:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:37 -  with parameters: ","27.10.2020 13:14:37 - etf.testcases = *","27.10.2020 13:14:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:37 - Setting state to CREATED","27.10.2020 13:14:37 - Changed state from CREATED to INITIALIZING"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:14:42.618 [print] {
  "val": "0",
  "max": "240",
  "log": [
    "27.10.2020 13:14:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:37 UTC 2020)",
    "27.10.2020 13:14:37 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:14:37 - Preparing 1 Test Task:",
    "27.10.2020 13:14:37 -  TestTask 1 (511b20c7-d938-4be7-bd6f-6b0f281c0af9)",
    "27.10.2020 13:14:37 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:14:37 -  with parameters: ",
    "27.10.2020 13:14:37 - etf.testcases = *",
    "27.10.2020 13:14:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:14:37 - Setting state to CREATED",
    "27.10.2020 13:14:37 - Changed state from CREATED to INITIALIZING"
  ]
}
Given path progresspath 0.000
When method GET 1:10.108
13:14:42.619 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3228e7ef-16d6-4666-821d-68ef5b8d1971/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:43.127 response time in milliseconds: 507.75
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:14:43 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:14:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:37 UTC 2020)","27.10.2020 13:14:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:37 - Preparing 1 Test Task:","27.10.2020 13:14:37 -  TestTask 1 (511b20c7-d938-4be7-bd6f-6b0f281c0af9)","27.10.2020 13:14:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:37 -  with parameters: ","27.10.2020 13:14:37 - etf.testcases = *","27.10.2020 13:14:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:37 - Setting state to CREATED","27.10.2020 13:14:37 - Changed state from CREATED to INITIALIZING"]}

13:14:43.127 retry condition not satisfied: response.val == response.max
13:14:43.127 sleeping before retry #1
13:14:48.128 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3228e7ef-16d6-4666-821d-68ef5b8d1971/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:48.640 response time in milliseconds: 511.39
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:14:48 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:14:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:37 UTC 2020)","27.10.2020 13:14:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:37 - Preparing 1 Test Task:","27.10.2020 13:14:37 -  TestTask 1 (511b20c7-d938-4be7-bd6f-6b0f281c0af9)","27.10.2020 13:14:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:37 -  with parameters: ","27.10.2020 13:14:37 - etf.testcases = *","27.10.2020 13:14:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:37 - Setting state to CREATED","27.10.2020 13:14:37 - Changed state from CREATED to INITIALIZING"]}

13:14:48.641 retry condition not satisfied: response.val == response.max
13:14:48.641 sleeping before retry #2
13:14:53.642 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3228e7ef-16d6-4666-821d-68ef5b8d1971/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:54.150 response time in milliseconds: 507.61
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:14:54 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:14:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:37 UTC 2020)","27.10.2020 13:14:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:37 - Preparing 1 Test Task:","27.10.2020 13:14:37 -  TestTask 1 (511b20c7-d938-4be7-bd6f-6b0f281c0af9)","27.10.2020 13:14:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:37 -  with parameters: ","27.10.2020 13:14:37 - etf.testcases = *","27.10.2020 13:14:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:37 - Setting state to CREATED","27.10.2020 13:14:37 - Changed state from CREATED to INITIALIZING"]}

13:14:54.151 retry condition not satisfied: response.val == response.max
13:14:54.151 sleeping before retry #3
13:14:59.152 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3228e7ef-16d6-4666-821d-68ef5b8d1971/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:59.684 response time in milliseconds: 531.23
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:14:59 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:14:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:37 UTC 2020)","27.10.2020 13:14:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:37 - Preparing 1 Test Task:","27.10.2020 13:14:37 -  TestTask 1 (511b20c7-d938-4be7-bd6f-6b0f281c0af9)","27.10.2020 13:14:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:37 -  with parameters: ","27.10.2020 13:14:37 - etf.testcases = *","27.10.2020 13:14:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:37 - Setting state to CREATED","27.10.2020 13:14:37 - Changed state from CREATED to INITIALIZING"]}

13:14:59.687 retry condition not satisfied: response.val == response.max
13:14:59.687 sleeping before retry #4
13:15:04.688 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3228e7ef-16d6-4666-821d-68ef5b8d1971/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:05.200 response time in milliseconds: 510.79
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:15:05 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:14:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:37 UTC 2020)","27.10.2020 13:14:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:37 - Preparing 1 Test Task:","27.10.2020 13:14:37 -  TestTask 1 (511b20c7-d938-4be7-bd6f-6b0f281c0af9)","27.10.2020 13:14:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:37 -  with parameters: ","27.10.2020 13:14:37 - etf.testcases = *","27.10.2020 13:14:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:37 - Setting state to CREATED","27.10.2020 13:14:37 - Changed state from CREATED to INITIALIZING"]}

13:15:05.200 retry condition not satisfied: response.val == response.max
13:15:05.200 sleeping before retry #5
13:15:10.201 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3228e7ef-16d6-4666-821d-68ef5b8d1971/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:10.738 response time in milliseconds: 534.82
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:15:10 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:14:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:37 UTC 2020)","27.10.2020 13:14:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:37 - Preparing 1 Test Task:","27.10.2020 13:14:37 -  TestTask 1 (511b20c7-d938-4be7-bd6f-6b0f281c0af9)","27.10.2020 13:14:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:37 -  with parameters: ","27.10.2020 13:14:37 - etf.testcases = *","27.10.2020 13:14:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:37 - Setting state to CREATED","27.10.2020 13:14:37 - Changed state from CREATED to INITIALIZING"]}

13:15:10.738 retry condition not satisfied: response.val == response.max
13:15:10.738 sleeping before retry #6
13:15:15.739 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3228e7ef-16d6-4666-821d-68ef5b8d1971/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:16.253 response time in milliseconds: 511.47
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:15:16 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:14:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:37 UTC 2020)","27.10.2020 13:14:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:37 - Preparing 1 Test Task:","27.10.2020 13:14:37 -  TestTask 1 (511b20c7-d938-4be7-bd6f-6b0f281c0af9)","27.10.2020 13:14:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:37 -  with parameters: ","27.10.2020 13:14:37 - etf.testcases = *","27.10.2020 13:14:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:37 - Setting state to CREATED","27.10.2020 13:14:37 - Changed state from CREATED to INITIALIZING"]}

13:15:16.253 retry condition not satisfied: response.val == response.max
13:15:16.253 sleeping before retry #7
13:15:21.254 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3228e7ef-16d6-4666-821d-68ef5b8d1971/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:23.529 response time in milliseconds: 2274.03
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Tue, 27 Oct 2020 13:15:23 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:14:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:37 UTC 2020)","27.10.2020 13:14:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:37 - Preparing 1 Test Task:","27.10.2020 13:14:37 -  TestTask 1 (511b20c7-d938-4be7-bd6f-6b0f281c0af9)","27.10.2020 13:14:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:37 -  with parameters: ","27.10.2020 13:14:37 - etf.testcases = *","27.10.2020 13:14:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:37 - Setting state to CREATED","27.10.2020 13:14:37 - Changed state from CREATED to INITIALIZING"]}

13:15:23.529 retry condition not satisfied: response.val == response.max
13:15:23.529 sleeping before retry #8
13:15:28.530 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3228e7ef-16d6-4666-821d-68ef5b8d1971/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:29.047 response time in milliseconds: 516.20
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Tue, 27 Oct 2020 13:15:28 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:14:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:37 UTC 2020)","27.10.2020 13:14:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:37 - Preparing 1 Test Task:","27.10.2020 13:14:37 -  TestTask 1 (511b20c7-d938-4be7-bd6f-6b0f281c0af9)","27.10.2020 13:14:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:37 -  with parameters: ","27.10.2020 13:14:37 - etf.testcases = *","27.10.2020 13:14:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:37 - Setting state to CREATED","27.10.2020 13:14:37 - Changed state from CREATED to INITIALIZING"]}

13:15:29.047 retry condition not satisfied: response.val == response.max
13:15:29.047 sleeping before retry #9
13:15:34.048 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3228e7ef-16d6-4666-821d-68ef5b8d1971/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:34.575 response time in milliseconds: 525.80
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Tue, 27 Oct 2020 13:15:34 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"30","max":"31","log":["27.10.2020 13:14:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:37 UTC 2020)","27.10.2020 13:14:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:37 - Preparing 1 Test Task:","27.10.2020 13:14:37 -  TestTask 1 (511b20c7-d938-4be7-bd6f-6b0f281c0af9)","27.10.2020 13:14:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:37 -  with parameters: ","27.10.2020 13:14:37 - etf.testcases = *","27.10.2020 13:14:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:37 - Setting state to CREATED","27.10.2020 13:14:37 - Changed state from CREATED to INITIALIZING","27.10.2020 13:15:30 - Starting TestRun.3228e7ef-16d6-4666-821d-68ef5b8d1971 at 2020-10-27T13:15:31Z","27.10.2020 13:15:31 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:15:31 - Project Properties: ","27.10.2020 13:15:31 - etf.testcases - * ","27.10.2020 13:15:31 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:15:31 - username -  ","27.10.2020 13:15:31 - authUser -  ","27.10.2020 13:15:31 - authMethod - basic ","27.10.2020 13:15:31 - TestRunTask initialized"]}

13:15:34.575 retry condition not satisfied: response.val == response.max
13:15:34.592 sleeping before retry #10
13:15:39.593 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3228e7ef-16d6-4666-821d-68ef5b8d1971/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:40.123 response time in milliseconds: 529.14
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Tue, 27 Oct 2020 13:15:40 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"73","max":"74","log":["27.10.2020 13:14:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:37 UTC 2020)","27.10.2020 13:14:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:37 - Preparing 1 Test Task:","27.10.2020 13:14:37 -  TestTask 1 (511b20c7-d938-4be7-bd6f-6b0f281c0af9)","27.10.2020 13:14:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:37 -  with parameters: ","27.10.2020 13:14:37 - etf.testcases = *","27.10.2020 13:14:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:37 - Setting state to CREATED","27.10.2020 13:14:37 - Changed state from CREATED to INITIALIZING","27.10.2020 13:15:30 - Starting TestRun.3228e7ef-16d6-4666-821d-68ef5b8d1971 at 2020-10-27T13:15:31Z","27.10.2020 13:15:31 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:15:31 - Project Properties: ","27.10.2020 13:15:31 - etf.testcases - * ","27.10.2020 13:15:31 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:15:31 - username -  ","27.10.2020 13:15:31 - authUser -  ","27.10.2020 13:15:31 - authMethod - basic ","27.10.2020 13:15:31 - TestRunTask initialized","27.10.2020 13:15:35 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:15:35 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:15:37 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:15:40 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027"]}

13:15:40.123 retry condition not satisfied: response.val == response.max
13:15:40.123 sleeping before retry #11
13:15:45.124 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3228e7ef-16d6-4666-821d-68ef5b8d1971/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:45.638 response time in milliseconds: 510.62
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Tue, 27 Oct 2020 13:15:45 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"140","max":"141","log":["27.10.2020 13:14:37 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:14:37 UTC 2020)","27.10.2020 13:14:37 - Resolving Executable Test Suite dependencies","27.10.2020 13:14:37 - Preparing 1 Test Task:","27.10.2020 13:14:37 -  TestTask 1 (511b20c7-d938-4be7-bd6f-6b0f281c0af9)","27.10.2020 13:14:37 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:14:37 -  with parameters: ","27.10.2020 13:14:37 - etf.testcases = *","27.10.2020 13:14:37 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:14:37 - Setting state to CREATED","27.10.2020 13:14:37 - Changed state from CREATED to INITIALIZING","27.10.2020 13:15:30 - Starting TestRun.3228e7ef-16d6-4666-821d-68ef5b8d1971 at 2020-10-27T13:15:31Z","27.10.2020 13:15:31 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:15:31 - Project Properties: ","27.10.2020 13:15:31 - etf.testcases - * ","27.10.2020 13:15:31 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:15:31 - username -  ","27.10.2020 13:15:31 - authUser -  ","27.10.2020 13:15:31 - authMethod - basic ","27.10.2020 13:15:31 - TestRunTask initialized","27.10.2020 13:15:35 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:15:35 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:15:37 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:15:40 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:15:40 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:15:42 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:15:42 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:15:42 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:15:42 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:15:42 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:15:42 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:15:43 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:15:43 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:15:43 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:15:43 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:15:43 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:15:43 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:15:43 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:15:43 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:15:43 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:15:43 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:15:43 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:15:43 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:15:44 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:15:44 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:15:44 ERROR Response status code:404 is not in acceptable list of status codes"]}

13:15:45.638 retry condition not satisfied: response.val == response.max
13:15:45.638 sleeping before retry #12
13:15:50.639 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3228e7ef-16d6-4666-821d-68ef5b8d1971/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:52.726 response time in milliseconds: 2086.75
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Tue, 27 Oct 2020 13:15:52 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:15:52.726 retry condition satisfied
* print response 0.000
13:15:52.727 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 5.352
13:15:52.727 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3228e7ef-16d6-4666-821d-68ef5b8d1971
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:58.076 response time in milliseconds: 4365.30
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Cache-Control: public, max-age=120
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Tue, 27 Oct 2020 13:15:57 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Last-Modified: Tue, 27 Oct 2020 13:15:52 GMT
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/3228e7ef-16d6-4666-821d-68ef5b8d1971.json","testRuns":{"TestRun":{"id":"EID3228e7ef-16d6-4666-821d-68ef5b8d1971","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:14:37.398Z","testTasks":{"TestTask":{"id":"EID511b20c7-d938-4be7-bd6f-6b0f281c0af9","parent":{"ref":"EID3228e7ef-16d6-4666-821d-68ef5b8d1971"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID23af16f4-8142-4524-b928-cdab16e23697"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID02b896d8-4169-432c-b96e-19f2c77f01d6"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID3228e7ef-16d6-4666-821d-68ef5b8d1971/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID23af16f4-8142-4524-b928-cdab16e23697","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:14:35.603Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:14:36.555Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID02b896d8-4169-432c-b96e-19f2c77f01d6","testObject":{"ref":"EID23af16f4-8142-4524-b928-cdab16e23697"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a330bff-0175-1000-f1a1-a3eb0cf7af0f","testCaseResults":{"TestCaseResult":[{"id":"EID6a330bff-0175-1000-7912-9cfbf6e60e4f","testStepResults":{"TestStepResult":[{"id":"EID6a330bff-0175-1000-9b35-15a2919e91bc","parent":{"ref":"EID6a330bff-0175-1000-7912-9cfbf6e60e4f"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:15:31Z","duration":18,"status":"PASSED"},{"id":"EID6a330c12-0175-1000-36da-643381d9515c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a330d16-0175-1000-0125-aef000332513","parent":{"ref":"EID6a330c12-0175-1000-36da-643381d9515c"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:15:31Z","duration":0,"status":"PASSED"},{"id":"EID6a330d16-0175-1000-694d-105459d1a466","parent":{"ref":"EID6a330c12-0175-1000-36da-643381d9515c"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:15:31Z","duration":0,"status":"PASSED"},{"id":"EID6a330d16-0175-1000-ae78-cc14bd30e0d4","parent":{"ref":"EID6a330c12-0175-1000-36da-643381d9515c"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:15:31Z","duration":0,"status":"PASSED"},{"id":"EID6a330d16-0175-1000-20fd-a01afe3825fd","parent":{"ref":"EID6a330c12-0175-1000-36da-643381d9515c"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:15:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa788cf13-7f85-44b6-8a9e-bb5c2cdaf411"},{"ref":"EID11f45bf2-423f-4be3-ae8c-afd465633ad1"},{"ref":"EID38424181-2a0c-4522-bc5b-cdcc93d453b8"}]},"parent":{"ref":"EID6a330bff-0175-1000-7912-9cfbf6e60e4f"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:15:31Z","duration":82,"status":"PASSED"}]},"parent":{"ref":"EID6a330bff-0175-1000-f1a1-a3eb0cf7af0f"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:15:31Z","duration":279,"status":"PASSED"},{"id":"EID6a330d16-0175-1000-926d-ef30808a702c","testStepResults":{"TestStepResult":{"id":"EID6a330d16-0175-1000-76ab-1f4eec545100","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a330deb-0175-1000-8d70-1ba128b97349","parent":{"ref":"EID6a330d16-0175-1000-76ab-1f4eec545100"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6a330deb-0175-1000-5d51-0abc75d22a53","parent":{"ref":"EID6a330d16-0175-1000-76ab-1f4eec545100"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6a330deb-0175-1000-8f37-03a1a9104631","parent":{"ref":"EID6a330d16-0175-1000-76ab-1f4eec545100"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:15:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1c54a9c0-924f-4689-b541-79a2e4a4c98d"},{"ref":"EID90cdb6a9-b220-42a1-9c70-8ef604e564ab"},{"ref":"EID1b4651d9-612c-4130-a368-adc1b00e081b"}]},"parent":{"ref":"EID6a330d16-0175-1000-926d-ef30808a702c"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:15:31Z","duration":99,"status":"PASSED"}},"parent":{"ref":"EID6a330bff-0175-1000-f1a1-a3eb0cf7af0f"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:15:31Z","duration":230,"status":"PASSED"}]},"parent":{"ref":"EID02b896d8-4169-432c-b96e-19f2c77f01d6"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:15:31Z","duration":509,"status":"PASSED"},{"id":"EID6a330dfc-0175-1000-b70b-707d519115cf","testCaseResults":{"TestCaseResult":[{"id":"EID6a330dfc-0175-1000-fb1a-ec3aee60e0cf","testStepResults":{"TestStepResult":[{"id":"EID6a330dfc-0175-1000-87e6-50790056867a","parent":{"ref":"EID6a330dfc-0175-1000-fb1a-ec3aee60e0cf"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:15:32Z","duration":99,"status":"PASSED"},{"id":"EID6a330dfc-0175-1000-9a68-6b58caa9244f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a330f27-0175-1000-3d24-013040fefdf7","parent":{"ref":"EID6a330dfc-0175-1000-9a68-6b58caa9244f"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6a330f27-0175-1000-31af-643ae2a629aa","parent":{"ref":"EID6a330dfc-0175-1000-9a68-6b58caa9244f"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6a330f27-0175-1000-f5fe-9cb6ca7b0f40","parent":{"ref":"EID6a330dfc-0175-1000-9a68-6b58caa9244f"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6a330f27-0175-1000-97da-e6106c356584","parent":{"ref":"EID6a330dfc-0175-1000-9a68-6b58caa9244f"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6a330f27-0175-1000-b8a4-ba00ac8d5891","parent":{"ref":"EID6a330dfc-0175-1000-9a68-6b58caa9244f"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:15:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0a838b6f-e3ed-4345-8b4f-ce7b09a66558"},{"ref":"EID15a341b9-f877-4d2c-8d90-8346d9c88812"},{"ref":"EIDe760ae19-2a62-4078-af33-b1f5314dbbcb"}]},"parent":{"ref":"EID6a330dfc-0175-1000-fb1a-ec3aee60e0cf"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:15:32Z","duration":122,"status":"PASSED"}]},"parent":{"ref":"EID6a330dfc-0175-1000-b70b-707d519115cf"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:15:32Z","duration":309,"status":"PASSED"},{"id":"EID6a330f32-0175-1000-9a95-d0dc9383b535","testStepResults":{"TestStepResult":[{"id":"EID6a330f32-0175-1000-3371-f65e9e19a8a7","attachments":{"attachment":[{"ref":"EID623fc950-8e90-4361-ae2a-ce04bc5bc89d"},{"ref":"EID23c2e716-1426-4521-b3b3-1062a8329a0a"}]},"parent":{"ref":"EID6a330f32-0175-1000-9a95-d0dc9383b535"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:15:32Z","duration":124,"status":"PASSED"},{"id":"EID6a330fdd-0175-1000-d55a-64a43477a924","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3310fb-0175-1000-8b68-13492024c32a","parent":{"ref":"EID6a330fdd-0175-1000-d55a-64a43477a924"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6a3310fb-0175-1000-15c9-1ec26ec5a05c","parent":{"ref":"EID6a330fdd-0175-1000-d55a-64a43477a924"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6a3310fb-0175-1000-3df5-ac5e6aa77866","parent":{"ref":"EID6a330fdd-0175-1000-d55a-64a43477a924"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:15:32Z","duration":0,"status":"PASSED"},{"id":"EID6a3310fb-0175-1000-cac5-89987af18958","parent":{"ref":"EID6a330fdd-0175-1000-d55a-64a43477a924"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:15:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc8f2f8fa-45cb-4c0e-b584-cf8db87950ec"},{"ref":"EIDcfaafb81-2ebb-4292-b354-9136b22d6574"},{"ref":"EID343b9b69-4306-49e6-b54a-753edca65acb"}]},"parent":{"ref":"EID6a330f32-0175-1000-9a95-d0dc9383b535"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:15:32Z","duration":41,"status":"PASSED"}]},"parent":{"ref":"EID6a330dfc-0175-1000-b70b-707d519115cf"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:15:32Z","duration":458,"status":"PASSED"},{"id":"EID6a3310fc-0175-1000-0163-c9a93b4f0441","testStepResults":{"TestStepResult":[{"id":"EID6a3310fc-0175-1000-029d-e26e266b5c21","attachments":{"attachment":[{"ref":"EID248dc9c2-95b9-43be-b49a-a8fc05eaef6c"},{"ref":"EIDd868f5ff-dada-44ae-9242-dc86d525669f"}]},"parent":{"ref":"EID6a3310fc-0175-1000-0163-c9a93b4f0441"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:15:32Z","duration":100,"status":"PASSED"},{"id":"EID6a33118b-0175-1000-1513-d224b16fe869","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a331284-0175-1000-816c-b992ea30a19a","parent":{"ref":"EID6a33118b-0175-1000-1513-d224b16fe869"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:15:33Z","duration":0,"status":"PASSED"},{"id":"EID6a331284-0175-1000-9d4b-a281b50fb5cc","parent":{"ref":"EID6a33118b-0175-1000-1513-d224b16fe869"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:15:33Z","duration":0,"status":"PASSED"},{"id":"EID6a331284-0175-1000-ba31-f0c7ab2e9c1a","parent":{"ref":"EID6a33118b-0175-1000-1513-d224b16fe869"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:15:33Z","duration":0,"status":"PASSED"},{"id":"EID6a331284-0175-1000-7de5-cc28fc3d794d","parent":{"ref":"EID6a33118b-0175-1000-1513-d224b16fe869"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:15:33Z","duration":0,"status":"PASSED"},{"id":"EID6a331284-0175-1000-d512-bbdcb345e53b","parent":{"ref":"EID6a33118b-0175-1000-1513-d224b16fe869"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:15:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbcded6da-91de-4c0c-b3c8-b44e82d300e9"},{"ref":"EID86aa408b-3d00-4091-a7f1-c48f40ad5eae"},{"ref":"EID11597b0b-6582-41a6-ba2d-847d209e4d27"}]},"parent":{"ref":"EID6a3310fc-0175-1000-0163-c9a93b4f0441"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:15:33Z","duration":109,"status":"PASSED"}]},"parent":{"ref":"EID6a330dfc-0175-1000-b70b-707d519115cf"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:15:32Z","duration":392,"status":"PASSED"},{"id":"EID6a331284-0175-1000-f818-407d9137bfb4","testStepResults":{"TestStepResult":[{"id":"EID6a331284-0175-1000-3206-879c3e8994f1","attachments":{"attachment":[{"ref":"EIDa7564e72-73f4-4a50-8361-9b97dadbb66b"},{"ref":"EID4eb65134-f12b-45e7-86b2-6bbd9ae40385"}]},"parent":{"ref":"EID6a331284-0175-1000-f818-407d9137bfb4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:15:33Z","duration":183,"status":"PASSED"},{"id":"EID6a331380-0175-1000-e9e3-ec63f05a64e5","parent":{"ref":"EID6a331284-0175-1000-f818-407d9137bfb4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:15:33Z","duration":0,"status":"PASSED"},{"id":"EID6a331380-0175-1000-eb30-eae64f6145de","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33143b-0175-1000-85e4-08050dbda254","parent":{"ref":"EID6a331380-0175-1000-eb30-eae64f6145de"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:15:33Z","duration":0,"status":"PASSED"},{"id":"EID6a33143b-0175-1000-0b87-061c2ed68ae3","parent":{"ref":"EID6a331380-0175-1000-eb30-eae64f6145de"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:15:33Z","duration":0,"status":"PASSED"},{"id":"EID6a33143b-0175-1000-485c-1ed2231310b8","parent":{"ref":"EID6a331380-0175-1000-eb30-eae64f6145de"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:15:33Z","duration":0,"status":"PASSED"},{"id":"EID6a33143b-0175-1000-6f60-f4bfb1cba9fa","parent":{"ref":"EID6a331380-0175-1000-eb30-eae64f6145de"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:15:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6d384df3-bcb5-4381-81c6-a5b6b6be1685"},{"ref":"EID79238f66-dbd5-4bf3-a725-81398e2654ab"},{"ref":"EID3443ad4d-c750-4d84-97d7-53660ec290d5"}]},"parent":{"ref":"EID6a331284-0175-1000-f818-407d9137bfb4"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:15:33Z","duration":85,"status":"PASSED"},{"id":"EID6a33143b-0175-1000-aed0-13c955e490fe","attachments":{"attachment":{"ref":"EIDf3bffc7a-5a14-4f67-a69d-b3fa04ad0be3"}},"parent":{"ref":"EID6a331284-0175-1000-f818-407d9137bfb4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:15:33Z","duration":1,"status":"PASSED"},{"id":"EID6a33144f-0175-1000-6b7e-355ac962b042","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a331527-0175-1000-2a61-a5f490245080","parent":{"ref":"EID6a33144f-0175-1000-6b7e-355ac962b042"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:15:34Z","duration":0,"status":"PASSED"},{"id":"EID6a331527-0175-1000-5e0e-2ba019b9335b","parent":{"ref":"EID6a33144f-0175-1000-6b7e-355ac962b042"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:15:34Z","duration":0,"status":"PASSED"},{"id":"EID6a331527-0175-1000-0ee3-393b383c5c76","parent":{"ref":"EID6a33144f-0175-1000-6b7e-355ac962b042"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:15:34Z","duration":0,"status":"PASSED"},{"id":"EID6a331527-0175-1000-92bc-20d0ef8e53f3","parent":{"ref":"EID6a33144f-0175-1000-6b7e-355ac962b042"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:15:34Z","duration":0,"status":"PASSED"},{"id":"EID6a331527-0175-1000-0947-e75275bf78ac","parent":{"ref":"EID6a33144f-0175-1000-6b7e-355ac962b042"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:15:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf83cf75b-1e72-4095-8e95-a6034d37adeb"},{"ref":"EID79d030b8-5c46-4bb1-8b74-e09d31e83392"},{"ref":"EID66a5233f-f35a-4c36-b958-4817fed0db73"}]},"parent":{"ref":"EID6a331284-0175-1000-f818-407d9137bfb4"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:15:33Z","duration":94,"status":"PASSED"}]},"parent":{"ref":"EID6a330dfc-0175-1000-b70b-707d519115cf"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:15:33Z","duration":684,"status":"PASSED"},{"id":"EID6a331531-0175-1000-68d0-666168add5a1","testStepResults":{"TestStepResult":[{"id":"EID6a331531-0175-1000-5c15-1d12f3c42d75","attachments":{"attachment":[{"ref":"EID95a440d0-8b46-4e02-86e0-f6011a355aef"},{"ref":"EID45d1947c-5b00-4910-9789-0e195d8d5d60"}]},"parent":{"ref":"EID6a331531-0175-1000-68d0-666168add5a1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:15:34Z","duration":171,"status":"PASSED"},{"id":"EID6a331619-0175-1000-576e-7ed985545ff1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a331706-0175-1000-affa-47f2650e40df","parent":{"ref":"EID6a331619-0175-1000-576e-7ed985545ff1"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:15:34Z","duration":0,"status":"PASSED"},{"id":"EID6a331706-0175-1000-4a12-70ffff6e3cbf","parent":{"ref":"EID6a331619-0175-1000-576e-7ed985545ff1"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:15:34Z","duration":0,"status":"PASSED"},{"id":"EID6a331706-0175-1000-65f7-57cbafba0f27","parent":{"ref":"EID6a331619-0175-1000-576e-7ed985545ff1"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:15:34Z","duration":0,"status":"PASSED"},{"id":"EID6a331706-0175-1000-4ced-a935a0d327c8","parent":{"ref":"EID6a331619-0175-1000-576e-7ed985545ff1"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:15:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcdeb4010-d083-417b-a6ec-4d1321978d87"},{"ref":"EIDf8d4d52b-831b-40c6-9e1b-4555c5a0274f"},{"ref":"EID6f04df4e-f075-474b-8877-e74c0d852459"}]},"parent":{"ref":"EID6a331531-0175-1000-68d0-666168add5a1"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:15:34Z","duration":82,"status":"PASSED"}]},"parent":{"ref":"EID6a330dfc-0175-1000-b70b-707d519115cf"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:15:34Z","duration":481,"status":"PASSED"},{"id":"EID6a331712-0175-1000-bfc3-18e18960766f","testStepResults":{"TestStepResult":[{"id":"EID6a331712-0175-1000-afe6-0d20a8b7037d","attachments":{"attachment":[{"ref":"EIDb93de31a-0413-4334-93df-54c878e55337"},{"ref":"EID0cca74d4-5adc-4710-966e-398f07102d25"}]},"parent":{"ref":"EID6a331712-0175-1000-bfc3-18e18960766f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:15:34Z","duration":170,"status":"PASSED"},{"id":"EID6a3317e5-0175-1000-deae-aa2558e149ad","parent":{"ref":"EID6a331712-0175-1000-bfc3-18e18960766f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:15:34Z","duration":0,"status":"PASSED"},{"id":"EID6a3317e5-0175-1000-9e00-258afbb0871a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3318db-0175-1000-0953-93b2836d7ee6","parent":{"ref":"EID6a3317e5-0175-1000-9e00-258afbb0871a"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:15:35Z","duration":0,"status":"PASSED"},{"id":"EID6a3318db-0175-1000-c027-8289063439f7","parent":{"ref":"EID6a3317e5-0175-1000-9e00-258afbb0871a"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:15:35Z","duration":0,"status":"PASSED"},{"id":"EID6a3318db-0175-1000-212e-41a16e498c9c","parent":{"ref":"EID6a3317e5-0175-1000-9e00-258afbb0871a"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:15:35Z","duration":0,"status":"PASSED"},{"id":"EID6a3318db-0175-1000-5bd6-bddda873501e","parent":{"ref":"EID6a3317e5-0175-1000-9e00-258afbb0871a"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:15:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID131116aa-fde2-4959-8061-1c3502dfdfbc"},{"ref":"EID81f18178-56e5-4aed-902f-811ea2e02939"},{"ref":"EID2871b2f4-ab5e-4f6b-9bd9-7acc39af86a8"}]},"parent":{"ref":"EID6a331712-0175-1000-bfc3-18e18960766f"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:15:34Z","duration":76,"status":"PASSED"},{"id":"EID6a3318db-0175-1000-fb1e-e6f9b953aa85","attachments":{"attachment":{"ref":"EIDbd0fd7bc-38b2-4a8d-a48d-26ecf2d4822e"}},"parent":{"ref":"EID6a331712-0175-1000-bfc3-18e18960766f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:15:35Z","duration":1,"status":"PASSED"},{"id":"EID6a331942-0175-1000-9a52-bfa249733c1d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a331aab-0175-1000-f4e7-0d07bee0e97d","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a331942-0175-1000-9a52-bfa249733c1d"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:15:35Z","duration":15,"status":"FAILED"},{"id":"EID6a331aba-0175-1000-4a43-291e772c0a1c","parent":{"ref":"EID6a331942-0175-1000-9a52-bfa249733c1d"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:15:35Z","duration":0,"status":"PASSED"},{"id":"EID6a331aba-0175-1000-b65a-52d0a73f56bc","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6a331942-0175-1000-9a52-bfa249733c1d"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:15:35Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDe42c50ca-ed99-4ba3-9258-7b7cbbf183e4"},{"ref":"EID4f5f123f-a136-4e82-b63a-f9a7e09fa06a"},{"ref":"EIDf7ae9c9b-83b6-43af-9b91-a6704dd405e1"}]},"parent":{"ref":"EID6a331712-0175-1000-bfc3-18e18960766f"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:15:35Z","duration":242,"status":"FAILED"}]},"parent":{"ref":"EID6a330dfc-0175-1000-b70b-707d519115cf"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:15:34Z","duration":936,"status":"FAILED"},{"id":"EID6a331abb-0175-1000-a5ac-09f9bfc8d831","testStepResults":{"TestStepResult":[{"id":"EID6a331abb-0175-1000-635d-20e4385a9e4b","attachments":{"attachment":[{"ref":"EID6f63d8c9-554f-40e7-b9ab-f2a1f08ce145"},{"ref":"EID711bccd5-f6aa-46cb-925f-b65fb2b55781"}]},"parent":{"ref":"EID6a331abb-0175-1000-a5ac-09f9bfc8d831"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:15:35Z","duration":266,"status":"PASSED"},{"id":"EID6a331be8-0175-1000-ffeb-4398c606fff2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a331d5a-0175-1000-7434-55548fe3e0b3","parent":{"ref":"EID6a331be8-0175-1000-ffeb-4398c606fff2"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:15:36Z","duration":0,"status":"PASSED"},{"id":"EID6a331d5a-0175-1000-ec9e-3ec3dd65c54b","parent":{"ref":"EID6a331be8-0175-1000-ffeb-4398c606fff2"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:15:36Z","duration":0,"status":"PASSED"},{"id":"EID6a331d5a-0175-1000-1055-2c04af34aff8","parent":{"ref":"EID6a331be8-0175-1000-ffeb-4398c606fff2"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:15:36Z","duration":0,"status":"PASSED"},{"id":"EID6a331d5a-0175-1000-877a-d784b3a19e92","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a331be8-0175-1000-ffeb-4398c606fff2"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:15:36Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID5b8d0ea1-2599-4756-ab2c-94a41ed427d1"},{"ref":"EID477690e5-a2fc-45ec-8b77-6c09cdfc52f3"},{"ref":"EIDe2362fe8-931a-413e-995f-874f94857228"}]},"parent":{"ref":"EID6a331abb-0175-1000-a5ac-09f9bfc8d831"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:15:35Z","duration":125,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a330dfc-0175-1000-b70b-707d519115cf"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:15:35Z","duration":671,"status":"PASSED_MANUAL"},{"id":"EID6a331d5a-0175-1000-c514-e725e73067c5","testStepResults":{"TestStepResult":{"id":"EID6a331d5a-0175-1000-4070-a355011369d8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a331ed6-0175-1000-298b-fbfcf6e654e8","parent":{"ref":"EID6a331d5a-0175-1000-4070-a355011369d8"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:15:36Z","duration":0,"status":"PASSED"},{"id":"EID6a331ed6-0175-1000-8d15-f578ca3d2382","parent":{"ref":"EID6a331d5a-0175-1000-4070-a355011369d8"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:15:36Z","duration":0,"status":"PASSED"},{"id":"EID6a331ed6-0175-1000-dbf8-c7e9f4ea5fff","parent":{"ref":"EID6a331d5a-0175-1000-4070-a355011369d8"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:15:36Z","duration":0,"status":"PASSED"},{"id":"EID6a331ed6-0175-1000-62b6-45a81f52f217","parent":{"ref":"EID6a331d5a-0175-1000-4070-a355011369d8"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:15:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDddaefdf5-4de5-4632-ad1e-18419a2e2124"},{"ref":"EID31c828ea-8224-4c99-bc96-288d04d34c37"},{"ref":"EID7514fa64-ca3b-48d5-8fe0-7b3d1c873d53"}]},"parent":{"ref":"EID6a331d5a-0175-1000-c514-e725e73067c5"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:15:36Z","duration":99,"status":"PASSED"}},"parent":{"ref":"EID6a330dfc-0175-1000-b70b-707d519115cf"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:15:36Z","duration":380,"status":"PASSED"},{"id":"EID6a331ed7-0175-1000-ef2a-11a4b8812f73","testStepResults":{"TestStepResult":{"id":"EID6a331ed7-0175-1000-898d-dcf144289b5a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a331fb8-0175-1000-8839-dac97817f4a5","parent":{"ref":"EID6a331ed7-0175-1000-898d-dcf144289b5a"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:15:36Z","duration":0,"status":"PASSED"},{"id":"EID6a331fb8-0175-1000-fc18-ecdae0d8b69b","parent":{"ref":"EID6a331ed7-0175-1000-898d-dcf144289b5a"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:15:36Z","duration":0,"status":"PASSED"},{"id":"EID6a331fb8-0175-1000-0a65-4596354f5867","parent":{"ref":"EID6a331ed7-0175-1000-898d-dcf144289b5a"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:15:36Z","duration":0,"status":"PASSED"},{"id":"EID6a331fb8-0175-1000-4b1a-74ccfafc3049","parent":{"ref":"EID6a331ed7-0175-1000-898d-dcf144289b5a"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:15:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4e620389-3170-41e7-96d2-17b8e0486859"},{"ref":"EID75875110-4d52-4f69-bba6-3271024b78b0"},{"ref":"EIDce66560e-5004-4bb1-a9e3-199019280619"}]},"parent":{"ref":"EID6a331ed7-0175-1000-ef2a-11a4b8812f73"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:15:36Z","duration":103,"status":"PASSED"}},"parent":{"ref":"EID6a330dfc-0175-1000-b70b-707d519115cf"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:15:36Z","duration":225,"status":"PASSED"},{"id":"EID6a331fb9-0175-1000-b856-92f187643aae","testStepResults":{"TestStepResult":{"id":"EID6a331fb9-0175-1000-ba61-99af859df2cc","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EID57212b5f-8bda-49a2-b296-ac111dd4741f"},{"ref":"EID932d38f8-cf26-4097-93f4-1db695b81438"},{"ref":"EID85e167ca-f00a-4184-8266-44e85947aca5"},{"ref":"EIDcf55df31-7195-40f6-8574-1ef8270a898f"},{"ref":"EID1227cb37-4972-4104-9744-d6ae99fcdada"},{"ref":"EID92618daa-15aa-4527-8904-f831a20df644"},{"ref":"EID833a3ca8-6a9c-4a4f-8582-0365a5177523"},{"ref":"EID1dc51362-a899-4909-ba18-fb844e1a82cb"},{"ref":"EID00300355-bf78-4f77-b6d6-88e2b95c3e10"}]},"parent":{"ref":"EID6a331fb9-0175-1000-b856-92f187643aae"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:15:36Z","duration":683,"status":"SKIPPED"}},"parent":{"ref":"EID6a330dfc-0175-1000-b70b-707d519115cf"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:15:36Z","duration":859,"status":"SKIPPED"},{"id":"EID6a332314-0175-1000-6402-7cb08a383985","testStepResults":{"TestStepResult":{"id":"EID6a332314-0175-1000-b19a-53d1ec7fc891","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a332411-0175-1000-608a-701485e73343","parent":{"ref":"EID6a332314-0175-1000-b19a-53d1ec7fc891"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:15:37Z","duration":0,"status":"PASSED"},{"id":"EID6a332411-0175-1000-89e0-970d0b02cb65","parent":{"ref":"EID6a332314-0175-1000-b19a-53d1ec7fc891"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:15:37Z","duration":0,"status":"PASSED"},{"id":"EID6a332411-0175-1000-f0a9-6c9817f63800","parent":{"ref":"EID6a332314-0175-1000-b19a-53d1ec7fc891"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:15:37Z","duration":0,"status":"PASSED"},{"id":"EID6a332411-0175-1000-729b-59270156f507","parent":{"ref":"EID6a332314-0175-1000-b19a-53d1ec7fc891"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:15:37Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2b3d3e86-5ad2-4941-af17-c41267af0a5a"},{"ref":"EID583b9547-0304-4870-b3d9-d6c2de84493c"},{"ref":"EIDbaa3dc3e-435b-451b-b596-4ece1faaa5d9"}]},"parent":{"ref":"EID6a332314-0175-1000-6402-7cb08a383985"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:15:37Z","duration":109,"status":"PASSED"}},"parent":{"ref":"EID6a330dfc-0175-1000-b70b-707d519115cf"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:15:37Z","duration":253,"status":"PASSED"},{"id":"EID6a332411-0175-1000-6849-8ae7c6fb9e44","testStepResults":{"TestStepResult":{"id":"EID6a33241a-0175-1000-8097-1a7ba8baa4f7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33256f-0175-1000-f53c-70326b672f01","parent":{"ref":"EID6a33241a-0175-1000-8097-1a7ba8baa4f7"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:15:38Z","duration":0,"status":"PASSED"},{"id":"EID6a33256f-0175-1000-3fad-d4da6acc2f94","parent":{"ref":"EID6a33241a-0175-1000-8097-1a7ba8baa4f7"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:15:38Z","duration":0,"status":"PASSED"},{"id":"EID6a33256f-0175-1000-d1f1-31a3670c9cc3","parent":{"ref":"EID6a33241a-0175-1000-8097-1a7ba8baa4f7"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:15:38Z","duration":0,"status":"PASSED"},{"id":"EID6a33256f-0175-1000-bbc4-74aab57cca65","parent":{"ref":"EID6a33241a-0175-1000-8097-1a7ba8baa4f7"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:15:38Z","duration":0,"status":"PASSED"},{"id":"EID6a33256f-0175-1000-99a6-6c2b6081ba25","parent":{"ref":"EID6a33241a-0175-1000-8097-1a7ba8baa4f7"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:15:38Z","duration":0,"status":"PASSED"},{"id":"EID6a33256f-0175-1000-b7c4-40597e5569b6","parent":{"ref":"EID6a33241a-0175-1000-8097-1a7ba8baa4f7"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:15:38Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6994fbcf-fb18-4c34-b8a2-9f7dd89a6255"},{"ref":"EIDbb4c70e9-187d-48bc-b711-c80bc2d3d773"},{"ref":"EIDb237d0e9-8b15-4ea1-9a03-490d3cfb8560"}]},"parent":{"ref":"EID6a332411-0175-1000-6849-8ae7c6fb9e44"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:15:37Z","duration":98,"status":"PASSED"}},"parent":{"ref":"EID6a330dfc-0175-1000-b70b-707d519115cf"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:15:37Z","duration":351,"status":"PASSED"},{"id":"EID6a332570-0175-1000-a83f-9482f2852386","testStepResults":{"TestStepResult":{"id":"EID6a332570-0175-1000-22b8-d1ed69b36367","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3326d7-0175-1000-3cd0-c37141b94ffd","parent":{"ref":"EID6a332570-0175-1000-22b8-d1ed69b36367"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:15:38Z","duration":0,"status":"PASSED"},{"id":"EID6a3326d7-0175-1000-22a1-86f96eabeaff","parent":{"ref":"EID6a332570-0175-1000-22b8-d1ed69b36367"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:15:38Z","duration":0,"status":"PASSED"},{"id":"EID6a3326d7-0175-1000-5d64-8249af4b3d89","parent":{"ref":"EID6a332570-0175-1000-22b8-d1ed69b36367"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:15:38Z","duration":0,"status":"PASSED"},{"id":"EID6a3326d7-0175-1000-bc0f-8ab7c3a2bb07","parent":{"ref":"EID6a332570-0175-1000-22b8-d1ed69b36367"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:15:38Z","duration":0,"status":"PASSED"},{"id":"EID6a3326d7-0175-1000-e0b3-5bb854db2c8c","parent":{"ref":"EID6a332570-0175-1000-22b8-d1ed69b36367"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:15:38Z","duration":0,"status":"PASSED"},{"id":"EID6a3326d7-0175-1000-1397-de72a3917f95","parent":{"ref":"EID6a332570-0175-1000-22b8-d1ed69b36367"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:15:38Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDea2e2145-1e19-4435-b1d1-2b63ebcc2f6a"},{"ref":"EID0c3ab843-af13-4206-8ee7-755461cbf7b8"},{"ref":"EID37860d03-a348-4cdf-b450-b183f1b44c3f"}]},"parent":{"ref":"EID6a332570-0175-1000-a83f-9482f2852386"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:15:38Z","duration":89,"status":"PASSED"}},"parent":{"ref":"EID6a330dfc-0175-1000-b70b-707d519115cf"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:15:38Z","duration":368,"status":"PASSED"},{"id":"EID6a3326e1-0175-1000-2fbd-34bcc0711e7a","testStepResults":{"TestStepResult":{"id":"EID6a3326e1-0175-1000-04b3-042505c2d626","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3328cd-0175-1000-31b0-b1f69dae0bcd","parent":{"ref":"EID6a3326e1-0175-1000-04b3-042505c2d626"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:15:39Z","duration":0,"status":"PASSED"},{"id":"EID6a3328cd-0175-1000-b71a-2f61ba9cf6b1","parent":{"ref":"EID6a3326e1-0175-1000-04b3-042505c2d626"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:15:39Z","duration":0,"status":"PASSED"},{"id":"EID6a3328cd-0175-1000-d88d-2d24e706053c","parent":{"ref":"EID6a3326e1-0175-1000-04b3-042505c2d626"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:15:39Z","duration":0,"status":"PASSED"},{"id":"EID6a3328cd-0175-1000-824c-2073e54559f8","parent":{"ref":"EID6a3326e1-0175-1000-04b3-042505c2d626"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:15:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5d189d42-1a8c-4240-8694-092610f1d891"},{"ref":"EIDc2297bf8-e509-45d5-830f-1204b94bb182"},{"ref":"EID5d0569cb-588b-456b-9a0e-ce8480b895d7"}]},"parent":{"ref":"EID6a3326e1-0175-1000-2fbd-34bcc0711e7a"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:15:38Z","duration":235,"status":"PASSED"}},"parent":{"ref":"EID6a330dfc-0175-1000-b70b-707d519115cf"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:15:38Z","duration":492,"status":"PASSED"},{"id":"EID6a3328cd-0175-1000-20af-fee89ddeb42b","testStepResults":{"TestStepResult":[{"id":"EID6a3328cd-0175-1000-bce2-0dc66ca7f120","attachments":{"attachment":[{"ref":"EIDde984a86-6c8f-4e98-8f69-8d3a2345405f"},{"ref":"EID88a3caab-f3e6-4f59-b293-fa5b0fc858fc"},{"ref":"EID527ae350-ba1a-4f52-8cdc-9b90fe498845"},{"ref":"EID5b6aa9c1-97a2-4e34-83bb-0ed2026ee790"}]},"parent":{"ref":"EID6a3328cd-0175-1000-20af-fee89ddeb42b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:15:39Z","duration":492,"status":"PASSED"},{"id":"EID6a332b4e-0175-1000-4146-20cf5630ee64","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a332c8d-0175-1000-9cff-3f848401c284","parent":{"ref":"EID6a332b4e-0175-1000-4146-20cf5630ee64"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:15:40Z","duration":0,"status":"PASSED"},{"id":"EID6a332c8d-0175-1000-c3a7-6b8c81035107","parent":{"ref":"EID6a332b4e-0175-1000-4146-20cf5630ee64"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:15:40Z","duration":0,"status":"PASSED"},{"id":"EID6a332c8d-0175-1000-86ac-4182acb7ffc5","parent":{"ref":"EID6a332b4e-0175-1000-4146-20cf5630ee64"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:15:40Z","duration":0,"status":"PASSED"},{"id":"EID6a332c8d-0175-1000-3c30-f58bebff16bf","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6a332b4e-0175-1000-4146-20cf5630ee64"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:15:40Z","duration":1,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID20b42128-3e2a-4161-9057-5456f61ecf65"},{"ref":"EID4c859b4c-7fc1-4f75-a0cc-6c3e64e1c9e7"},{"ref":"EID07077495-6f8b-46e3-8f1e-67fef7c925e1"}]},"parent":{"ref":"EID6a3328cd-0175-1000-20af-fee89ddeb42b"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:15:39Z","duration":89,"status":"FAILED"}]},"parent":{"ref":"EID6a330dfc-0175-1000-b70b-707d519115cf"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:15:39Z","duration":961,"status":"FAILED"},{"id":"EID6a332c8e-0175-1000-a698-cf5ebe41e925","testStepResults":{"TestStepResult":{"id":"EID6a332c8e-0175-1000-3488-55a772bf9d36","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a332d7e-0175-1000-81cd-dee3567d1215","parent":{"ref":"EID6a332c8e-0175-1000-3488-55a772bf9d36"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:15:40Z","duration":0,"status":"PASSED"},{"id":"EID6a332d7e-0175-1000-4589-ce3223904dca","parent":{"ref":"EID6a332c8e-0175-1000-3488-55a772bf9d36"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:15:40Z","duration":0,"status":"PASSED"},{"id":"EID6a332d7e-0175-1000-d78b-6cac2a28db0b","parent":{"ref":"EID6a332c8e-0175-1000-3488-55a772bf9d36"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:15:40Z","duration":0,"status":"PASSED"},{"id":"EID6a332d7e-0175-1000-72bf-a43cd453dd80","parent":{"ref":"EID6a332c8e-0175-1000-3488-55a772bf9d36"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:15:40Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7b2d8ad5-32a9-4798-9355-1023c4fd7127"},{"ref":"EIDfbc23262-ee1d-4a2b-9a30-1bc0eda7d758"},{"ref":"EID4d33e1e5-91d9-49e2-81e2-bdab9ef026a3"}]},"parent":{"ref":"EID6a332c8e-0175-1000-a698-cf5ebe41e925"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:15:40Z","duration":94,"status":"PASSED"}},"parent":{"ref":"EID6a330dfc-0175-1000-b70b-707d519115cf"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:15:40Z","duration":240,"status":"PASSED"},{"id":"EID6a332d7e-0175-1000-5823-ef0fabbf3499","testStepResults":{"TestStepResult":[{"id":"EID6a332d7e-0175-1000-2261-2718408b1838","parent":{"ref":"EID6a332d7e-0175-1000-5823-ef0fabbf3499"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:15:40Z","duration":0,"status":"PASSED"},{"id":"EID6a332d7e-0175-1000-f461-933b63adffbb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a332e5e-0175-1000-dfbc-2c19a620ab22","parent":{"ref":"EID6a332d7e-0175-1000-f461-933b63adffbb"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:15:40Z","duration":0,"status":"PASSED"},{"id":"EID6a332e5e-0175-1000-f31f-a89ab1559f70","parent":{"ref":"EID6a332d7e-0175-1000-f461-933b63adffbb"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:15:40Z","duration":0,"status":"PASSED"},{"id":"EID6a332e5e-0175-1000-cad4-029d8702a270","parent":{"ref":"EID6a332d7e-0175-1000-f461-933b63adffbb"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:15:40Z","duration":0,"status":"PASSED"},{"id":"EID6a332e5e-0175-1000-4084-de7de5668f8b","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6a332d7e-0175-1000-f461-933b63adffbb"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:15:40Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDd66a9711-d0e0-439d-bef6-3cae08faf79b"},{"ref":"EID0ded687b-192b-4a34-b603-68833b889c43"},{"ref":"EID0ff7934e-1910-4e4e-aa06-9522872e143b"}]},"parent":{"ref":"EID6a332d7e-0175-1000-5823-ef0fabbf3499"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:15:40Z","duration":122,"status":"FAILED"}]},"parent":{"ref":"EID6a330dfc-0175-1000-b70b-707d519115cf"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:15:40Z","duration":224,"status":"FAILED"}]},"parent":{"ref":"EID02b896d8-4169-432c-b96e-19f2c77f01d6"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:15:32Z","duration":8290,"status":"FAILED"},{"id":"EID6a332e5e-0175-1000-cb2d-244dc0e98e4d","testCaseResults":{"TestCaseResult":[{"id":"EID6a332e5e-0175-1000-21f1-37f8358114ca","testStepResults":{"TestStepResult":[{"id":"EID6a332e5e-0175-1000-6d6d-25a2ce38830d","parent":{"ref":"EID6a332e5e-0175-1000-21f1-37f8358114ca"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:15:40Z","duration":0,"status":"PASSED"},{"id":"EID6a332e5e-0175-1000-5d7c-da09bb975a27","parent":{"ref":"EID6a332e5e-0175-1000-21f1-37f8358114ca"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:15:40Z","duration":94,"status":"PASSED"},{"id":"EID6a332e5e-0175-1000-a7ea-aaab69e068a5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a332f5e-0175-1000-1213-17feeac38f6e","parent":{"ref":"EID6a332e5e-0175-1000-a7ea-aaab69e068a5"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:15:40Z","duration":0,"status":"PASSED"},{"id":"EID6a332f5e-0175-1000-81c1-640d5fe44d5c","parent":{"ref":"EID6a332e5e-0175-1000-a7ea-aaab69e068a5"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:15:40Z","duration":0,"status":"PASSED"},{"id":"EID6a332f5e-0175-1000-b807-6218d448dd0f","parent":{"ref":"EID6a332e5e-0175-1000-a7ea-aaab69e068a5"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:15:40Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0f5bfe90-fd93-4bb5-a037-47fe6d022f9c"},{"ref":"EID034fa219-a7f5-40fa-b2c7-77c433d58f7e"},{"ref":"EIDb1de41d4-602b-45ae-b13b-16699c770428"}]},"parent":{"ref":"EID6a332e5e-0175-1000-21f1-37f8358114ca"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:15:40Z","duration":86,"status":"PASSED"},{"id":"EID6a333013-0175-1000-eeba-584a63c3afc2","attachments":{"attachment":{"ref":"EID5c261831-9c64-415a-ad63-495098081cfc"}},"parent":{"ref":"EID6a332e5e-0175-1000-21f1-37f8358114ca"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:15:40Z","duration":0,"status":"PASSED"},{"id":"EID6a3331a3-0175-1000-afb7-fa6c8b8f4135","parent":{"ref":"EID6a332e5e-0175-1000-21f1-37f8358114ca"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:15:41Z","duration":1088,"status":"PASSED"}]},"parent":{"ref":"EID6a332e5e-0175-1000-cb2d-244dc0e98e4d"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:15:40Z","duration":1925,"status":"PASSED"},{"id":"EID6a3335e4-0175-1000-d098-fd44e0eaf3e1","testStepResults":{"TestStepResult":[{"id":"EID6a3335e4-0175-1000-2eac-940a8c57aa16","parent":{"ref":"EID6a3335e4-0175-1000-d098-fd44e0eaf3e1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:15:42Z","duration":99,"status":"PASSED"},{"id":"EID6a3335e4-0175-1000-6861-e604de9977b2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a333699-0175-1000-71dd-40616c66e18c","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a3335e4-0175-1000-6861-e604de9977b2"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:15:42Z","duration":10,"status":"FAILED"},{"id":"EID6a3336a3-0175-1000-1038-08b7f3affad2","parent":{"ref":"EID6a3335e4-0175-1000-6861-e604de9977b2"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:15:42Z","duration":0,"status":"PASSED"},{"id":"EID6a3336a3-0175-1000-afb0-4ee05ebb1de4","parent":{"ref":"EID6a3335e4-0175-1000-6861-e604de9977b2"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:15:42Z","duration":0,"status":"PASSED"},{"id":"EID6a3336a3-0175-1000-94b9-e0f98ed14d75","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6a3335e4-0175-1000-6861-e604de9977b2"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:15:42Z","duration":0,"status":"FAILED"},{"id":"EID6a3336a3-0175-1000-0c04-02df3b494bf6","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6a3335e4-0175-1000-6861-e604de9977b2"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:15:42Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID977d0888-bdda-4ca1-91e8-5e0fa58bdc1f"},{"ref":"EID2c336cf6-bea3-44be-9537-c20136e53cba"},{"ref":"EIDcc5dbf68-fff8-48ae-b8ca-2ef49a739f76"}]},"parent":{"ref":"EID6a3335e4-0175-1000-d098-fd44e0eaf3e1"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:15:42Z","duration":52,"status":"FAILED"}]},"parent":{"ref":"EID6a332e5e-0175-1000-cb2d-244dc0e98e4d"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:15:42Z","duration":192,"status":"FAILED"},{"id":"EID6a3336a5-0175-1000-3397-f2575f6a7a9a","testStepResults":{"TestStepResult":{"id":"EID6a3336a5-0175-1000-a683-43c0487c6675","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a333749-0175-1000-28b2-6f0dc3d6e180","parent":{"ref":"EID6a3336a5-0175-1000-a683-43c0487c6675"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:15:42Z","duration":0,"status":"PASSED"},{"id":"EID6a333749-0175-1000-fdd2-ab4fec826e88","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a3336a5-0175-1000-a683-43c0487c6675"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:15:42Z","duration":13,"status":"FAILED"},{"id":"EID6a333756-0175-1000-d3a4-0716cb27f258","parent":{"ref":"EID6a3336a5-0175-1000-a683-43c0487c6675"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:15:42Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc21dc691-6ca5-4e0e-89ff-89d1cdb2917d"},{"ref":"EID800432b3-8dc0-460a-abca-3799d28514e2"},{"ref":"EIDd87ea4a1-02ea-4e74-8062-e98e536cb978"}]},"parent":{"ref":"EID6a3336a5-0175-1000-3397-f2575f6a7a9a"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:15:42Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6a332e5e-0175-1000-cb2d-244dc0e98e4d"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:15:42Z","duration":177,"status":"FAILED"},{"id":"EID6a333757-0175-1000-3315-96728917d999","testStepResults":{"TestStepResult":{"id":"EID6a333757-0175-1000-297c-23668d5f823b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a333813-0175-1000-ff21-1bfffe3b886c","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a333757-0175-1000-297c-23668d5f823b"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:15:42Z","duration":0,"status":"FAILED"},{"id":"EID6a333813-0175-1000-29cb-11718666ea5e","parent":{"ref":"EID6a333757-0175-1000-297c-23668d5f823b"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:15:42Z","duration":0,"status":"PASSED"},{"id":"EID6a333813-0175-1000-4fad-0de8e4429b72","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a333757-0175-1000-297c-23668d5f823b"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:15:42Z","duration":11,"status":"FAILED"},{"id":"EID6a33381e-0175-1000-ff46-e2f0ddfc6683","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6a333757-0175-1000-297c-23668d5f823b"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:15:43Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDc343c606-9f0a-44eb-be93-230c0ada20db"},{"ref":"EID8a3ba00c-fc0e-4593-bfc7-7e326b50e152"},{"ref":"EID5cd83b90-be3d-47d4-80ea-f0ccc884be9c"}]},"parent":{"ref":"EID6a333757-0175-1000-3315-96728917d999"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:15:42Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6a332e5e-0175-1000-cb2d-244dc0e98e4d"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:15:42Z","duration":200,"status":"FAILED"},{"id":"EID6a33381f-0175-1000-d531-689f4d64b85e","testStepResults":{"TestStepResult":{"id":"EID6a33381f-0175-1000-eb78-05e56c7366b2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33387f-0175-1000-3c20-d4b46f4e94f8","parent":{"ref":"EID6a33381f-0175-1000-eb78-05e56c7366b2"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:15:43Z","duration":0,"status":"PASSED"},{"id":"EID6a33387f-0175-1000-f648-d8db20bbc828","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a33381f-0175-1000-eb78-05e56c7366b2"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:15:43Z","duration":14,"status":"FAILED"},{"id":"EID6a33388d-0175-1000-3417-1ec0afd1db32","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6a33381f-0175-1000-eb78-05e56c7366b2"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:15:43Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID147853e4-3e2f-41c5-b233-73a5605435d7"},{"ref":"EIDa84034fe-275e-4384-8653-9d07945917fc"},{"ref":"EID903e2593-708e-4a09-bf58-69705904f8dd"}]},"parent":{"ref":"EID6a33381f-0175-1000-d531-689f4d64b85e"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:15:43Z","duration":27,"status":"FAILED"}},"parent":{"ref":"EID6a332e5e-0175-1000-cb2d-244dc0e98e4d"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:15:43Z","duration":110,"status":"FAILED"},{"id":"EID6a33388d-0175-1000-f643-bf6faaef2990","testStepResults":{"TestStepResult":{"id":"EID6a33388d-0175-1000-bf9c-c98941a6ba78","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a333908-0175-1000-08ff-7b16e6e2ce70","parent":{"ref":"EID6a33388d-0175-1000-bf9c-c98941a6ba78"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:15:43Z","duration":0,"status":"PASSED"},{"id":"EID6a333908-0175-1000-ed8f-1e5e68a4ba4c","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a33388d-0175-1000-bf9c-c98941a6ba78"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:15:43Z","duration":11,"status":"FAILED"},{"id":"EID6a333913-0175-1000-24f1-cc19172fc5e5","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a33388d-0175-1000-bf9c-c98941a6ba78"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:15:43Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID001b2e34-e705-4d1b-9b8d-f74cb7217b52"},{"ref":"EID359dcd5e-f177-48f2-be46-45df067bb306"},{"ref":"EIDff60e4d5-87f3-4f3e-89ce-606f3b7ccc2e"}]},"parent":{"ref":"EID6a33388d-0175-1000-f643-bf6faaef2990"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:15:43Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6a332e5e-0175-1000-cb2d-244dc0e98e4d"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:15:43Z","duration":204,"status":"FAILED"},{"id":"EID6a333959-0175-1000-144e-5fc3151da211","testStepResults":{"TestStepResult":{"id":"EID6a333963-0175-1000-7adc-9edd2a0a4893","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3339e3-0175-1000-d4ca-0252555e8a26","parent":{"ref":"EID6a333963-0175-1000-7adc-9edd2a0a4893"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:15:43Z","duration":0,"status":"PASSED"},{"id":"EID6a3339e3-0175-1000-d58a-4968c95c81d6","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a333963-0175-1000-7adc-9edd2a0a4893"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:15:43Z","duration":13,"status":"FAILED"},{"id":"EID6a3339f0-0175-1000-9a9d-0fe000086a36","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6a333963-0175-1000-7adc-9edd2a0a4893"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:15:43Z","duration":0,"status":"FAILED"},{"id":"EID6a3339f0-0175-1000-bed1-9d281e28383c","parent":{"ref":"EID6a333963-0175-1000-7adc-9edd2a0a4893"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:15:43Z","duration":0,"status":"PASSED"},{"id":"EID6a3339f0-0175-1000-6ceb-18de6332b8cd","parent":{"ref":"EID6a333963-0175-1000-7adc-9edd2a0a4893"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:15:43Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID31a4af27-8c54-4f6a-a249-779671078eb8"},{"ref":"EIDdac21d1a-b0b1-4833-abf4-26f67c2216af"},{"ref":"EIDf8896df6-b92b-42ae-b07e-dc712b99cb0f"}]},"parent":{"ref":"EID6a333959-0175-1000-144e-5fc3151da211"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:15:43Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6a332e5e-0175-1000-cb2d-244dc0e98e4d"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:15:43Z","duration":151,"status":"FAILED"},{"id":"EID6a3339f1-0175-1000-a122-d0ece7760937","testStepResults":{"TestStepResult":{"id":"EID6a3339f1-0175-1000-c3d0-5801f85ff02f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a333a6c-0175-1000-616a-8736b6502c0e","parent":{"ref":"EID6a3339f1-0175-1000-c3d0-5801f85ff02f"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:15:43Z","duration":0,"status":"PASSED"},{"id":"EID6a333a6c-0175-1000-ae3d-ec2575750c65","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a3339f1-0175-1000-c3d0-5801f85ff02f"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:15:43Z","duration":12,"status":"FAILED"},{"id":"EID6a333a79-0175-1000-8628-74b5e5b1f015","parent":{"ref":"EID6a3339f1-0175-1000-c3d0-5801f85ff02f"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:15:43Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID92fcf33d-e4fe-4a7c-8541-6c4d968cef06"},{"ref":"EID15125a4b-6f93-42d6-9909-299153605099"},{"ref":"EID0bbef2f6-b8fb-431e-8cd2-ef13082f83e7"}]},"parent":{"ref":"EID6a3339f1-0175-1000-a122-d0ece7760937"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:15:43Z","duration":27,"status":"FAILED"}},"parent":{"ref":"EID6a332e5e-0175-1000-cb2d-244dc0e98e4d"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:15:43Z","duration":136,"status":"FAILED"},{"id":"EID6a333a79-0175-1000-fe45-4c6dbc625697","testStepResults":{"TestStepResult":{"id":"EID6a333a79-0175-1000-326b-6b0dce346a1d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a333ad5-0175-1000-ec64-5ab0673d11a1","parent":{"ref":"EID6a333a79-0175-1000-326b-6b0dce346a1d"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:15:43Z","duration":0,"status":"PASSED"},{"id":"EID6a333ad5-0175-1000-4e3c-cbda04d4052d","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a333a79-0175-1000-326b-6b0dce346a1d"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:15:43Z","duration":10,"status":"FAILED"},{"id":"EID6a333adf-0175-1000-cf95-b810126edbdf","parent":{"ref":"EID6a333a79-0175-1000-326b-6b0dce346a1d"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:15:43Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa673f309-e5c9-4314-8f03-f695e76e85ba"},{"ref":"EIDdb0050d9-6617-4aad-9df6-e89b3a3c0f82"},{"ref":"EID573f9415-83f0-4eda-9d0c-2482540989ea"}]},"parent":{"ref":"EID6a333a79-0175-1000-fe45-4c6dbc625697"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:15:43Z","duration":31,"status":"FAILED"}},"parent":{"ref":"EID6a332e5e-0175-1000-cb2d-244dc0e98e4d"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:15:43Z","duration":103,"status":"FAILED"},{"id":"EID6a333ae0-0175-1000-b621-a7f361b1ea71","testStepResults":{"TestStepResult":{"id":"EID6a333ae0-0175-1000-2dff-3feb3b98da4b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a333b43-0175-1000-48f8-0ef0826f7472","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a333ae0-0175-1000-2dff-3feb3b98da4b"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:15:43Z","duration":10,"status":"FAILED"},{"id":"EID6a333b4d-0175-1000-b352-ccf60f1600ca","parent":{"ref":"EID6a333ae0-0175-1000-2dff-3feb3b98da4b"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:15:43Z","duration":0,"status":"PASSED"},{"id":"EID6a333b4d-0175-1000-fadb-52f15af12187","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a333ae0-0175-1000-2dff-3feb3b98da4b"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:15:43Z","duration":0,"status":"FAILED"},{"id":"EID6a333b4d-0175-1000-1493-aca5e0e90bc2","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6a333ae0-0175-1000-2dff-3feb3b98da4b"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:15:43Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID2f38226d-6d3e-40b5-b98d-52a1461f1cd8"},{"ref":"EID4e52a7e8-b430-4896-ba93-8f8f478acfbd"},{"ref":"EIDa0e8aa73-bd63-4dff-8b28-06a353d0c7e8"}]},"parent":{"ref":"EID6a333ae0-0175-1000-b621-a7f361b1ea71"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:15:43Z","duration":25,"status":"FAILED"}},"parent":{"ref":"EID6a332e5e-0175-1000-cb2d-244dc0e98e4d"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:15:43Z","duration":109,"status":"FAILED"},{"id":"EID6a333b4e-0175-1000-8d22-4497c239b98b","testStepResults":{"TestStepResult":{"id":"EID6a333b4e-0175-1000-c735-64d13597feef","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a333c60-0175-1000-4b36-ab5846e59acf","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a333b4e-0175-1000-c735-64d13597feef"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:15:44Z","duration":27,"status":"FAILED"},{"id":"EID6a333c7b-0175-1000-c9ae-af9425403d77","parent":{"ref":"EID6a333b4e-0175-1000-c735-64d13597feef"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:15:44Z","duration":0,"status":"PASSED"},{"id":"EID6a333c7c-0175-1000-d235-7df0b2d96252","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a333b4e-0175-1000-c735-64d13597feef"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:15:44Z","duration":0,"status":"FAILED"},{"id":"EID6a333c7c-0175-1000-c7e5-d176d44b8f3b","parent":{"ref":"EID6a333b4e-0175-1000-c735-64d13597feef"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:15:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID08e1abab-1fdc-4698-a0c5-0dcd5edd0e72"},{"ref":"EIDb24e8717-4287-4787-8507-bd68bfd3a9ab"},{"ref":"EIDb8acdd8c-c8c7-4014-8f9d-5c20b8e71161"}]},"parent":{"ref":"EID6a333b4e-0175-1000-8d22-4497c239b98b"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:15:43Z","duration":196,"status":"FAILED"}},"parent":{"ref":"EID6a332e5e-0175-1000-cb2d-244dc0e98e4d"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:15:43Z","duration":315,"status":"FAILED"},{"id":"EID6a333c8a-0175-1000-da3b-9f3aaf36632f","testStepResults":{"TestStepResult":[{"id":"EID6a333c8a-0175-1000-4489-adce9adfa76f","parent":{"ref":"EID6a333c8a-0175-1000-da3b-9f3aaf36632f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:15:44Z","duration":0,"status":"PASSED"},{"id":"EID6a333c8a-0175-1000-9c3b-2320d3daa156","parent":{"ref":"EID6a333c8a-0175-1000-da3b-9f3aaf36632f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:15:44Z","duration":221,"status":"PASSED"},{"id":"EID6a333c8a-0175-1000-63bd-3d62f3a7006c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a333d92-0175-1000-7271-5fefefd9437e","parent":{"ref":"EID6a333c8a-0175-1000-63bd-3d62f3a7006c"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:15:44Z","duration":0,"status":"PASSED"},{"id":"EID6a333d92-0175-1000-a1b1-4b52352b20c4","parent":{"ref":"EID6a333c8a-0175-1000-63bd-3d62f3a7006c"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:15:44Z","duration":0,"status":"PASSED"},{"id":"EID6a333d92-0175-1000-e456-4fd08db3b05a","parent":{"ref":"EID6a333c8a-0175-1000-63bd-3d62f3a7006c"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:15:44Z","duration":0,"status":"PASSED"},{"id":"EID6a333d92-0175-1000-7322-9c328be59d97","parent":{"ref":"EID6a333c8a-0175-1000-63bd-3d62f3a7006c"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:15:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5c7695ed-d97e-4b4f-a273-49c43e95cca2"},{"ref":"EIDdc0fd79b-a36a-43ab-8046-cf28a35d9595"},{"ref":"EIDbacde67e-1892-464c-b37e-0e8ab2f33ab0"}]},"parent":{"ref":"EID6a333c8a-0175-1000-da3b-9f3aaf36632f"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:15:44Z","duration":83,"status":"PASSED"},{"id":"EID6a333d92-0175-1000-6562-06941deacb0a","attachments":{"attachment":{"ref":"EID684ff8db-026e-41f2-89b6-378e061f81f3"}},"parent":{"ref":"EID6a333c8a-0175-1000-da3b-9f3aaf36632f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:15:44Z","duration":5,"status":"PASSED"},{"id":"EID6a333da2-0175-1000-3470-e37e57ae6e24","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a333e49-0175-1000-a08d-3fae000302d4","parent":{"ref":"EID6a333da2-0175-1000-3470-e37e57ae6e24"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:15:44Z","duration":0,"status":"PASSED"},{"id":"EID6a333e49-0175-1000-3865-2b297a8364a2","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a333da2-0175-1000-3470-e37e57ae6e24"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:15:44Z","duration":16,"status":"FAILED"},{"id":"EID6a333e59-0175-1000-753e-4883fc8d2a13","parent":{"ref":"EID6a333da2-0175-1000-3470-e37e57ae6e24"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:15:44Z","duration":0,"status":"PASSED"},{"id":"EID6a333e59-0175-1000-7004-9195ea0de050","parent":{"ref":"EID6a333da2-0175-1000-3470-e37e57ae6e24"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:15:44Z","duration":0,"status":"PASSED"},{"id":"EID6a333e59-0175-1000-8da3-caea0571486f","parent":{"ref":"EID6a333da2-0175-1000-3470-e37e57ae6e24"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:15:44Z","duration":0,"status":"PASSED"},{"id":"EID6a333e59-0175-1000-6336-81aade090cca","parent":{"ref":"EID6a333da2-0175-1000-3470-e37e57ae6e24"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:15:44Z","duration":0,"status":"PASSED"},{"id":"EID6a333e59-0175-1000-3693-3be50bd7dc4d","parent":{"ref":"EID6a333da2-0175-1000-3470-e37e57ae6e24"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:15:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3b5214c4-a8f9-4fe6-bf22-1d289e31a153"},{"ref":"EID9786a5a7-1bd4-433a-9be3-1b5d5c60c57c"},{"ref":"EID44195de4-4888-4063-a4a0-597d94665fb2"}]},"parent":{"ref":"EID6a333c8a-0175-1000-da3b-9f3aaf36632f"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:15:44Z","duration":26,"status":"FAILED"}]},"parent":{"ref":"EID6a332e5e-0175-1000-cb2d-244dc0e98e4d"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:15:44Z","duration":463,"status":"FAILED"},{"id":"EID6a333e5a-0175-1000-c4d3-c941c4fc429e","testStepResults":{"TestStepResult":[{"id":"EID6a333e5a-0175-1000-6618-f2b7efe13f89","parent":{"ref":"EID6a333e5a-0175-1000-c4d3-c941c4fc429e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:15:44Z","duration":0,"status":"PASSED"},{"id":"EID6a333e5a-0175-1000-3626-31c413e25d1f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a333f97-0175-1000-7444-2c1e75222362","parent":{"ref":"EID6a333e5a-0175-1000-3626-31c413e25d1f"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:15:44Z","duration":0,"status":"PASSED"},{"id":"EID6a333f97-0175-1000-1436-7f1075901978","parent":{"ref":"EID6a333e5a-0175-1000-3626-31c413e25d1f"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:15:44Z","duration":0,"status":"PASSED"},{"id":"EID6a333f97-0175-1000-4199-7dd36ad757b5","parent":{"ref":"EID6a333e5a-0175-1000-3626-31c413e25d1f"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:15:44Z","duration":0,"status":"PASSED"},{"id":"EID6a333f97-0175-1000-d6c0-f89f9138d303","parent":{"ref":"EID6a333e5a-0175-1000-3626-31c413e25d1f"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:15:44Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2be5521d-c968-4f4e-96c0-7a32f0e65924"},{"ref":"EIDb663b470-9a9e-40c5-9eae-219e9a4ddd24"},{"ref":"EIDcc13a44b-73a5-4704-8096-62d1bdcde540"}]},"parent":{"ref":"EID6a333e5a-0175-1000-c4d3-c941c4fc429e"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:15:44Z","duration":194,"status":"PASSED"},{"id":"EID6a333f97-0175-1000-743a-7e58f732516e","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a333fc3-0175-1000-1d2e-bbd57e91bf56","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3340c1-0175-1000-c3a7-80f113743d88","parent":{"ref":"EID6a333fc3-0175-1000-1d2e-bbd57e91bf56"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:15:45Z","duration":0,"status":"PASSED"},{"id":"EID6a3340c1-0175-1000-5465-0d15c4cc17dc","parent":{"ref":"EID6a333fc3-0175-1000-1d2e-bbd57e91bf56"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:15:45Z","duration":0,"status":"PASSED"},{"id":"EID6a3340c1-0175-1000-bfb1-b8dfb6ab3899","parent":{"ref":"EID6a333fc3-0175-1000-1d2e-bbd57e91bf56"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:15:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4b600466-9881-4d65-b51c-2aa133c016ac"},{"ref":"EID39b9b782-b530-48c3-aaa1-cadce5ffd3e2"},{"ref":"EID9cb21ef5-d971-4eac-b3d5-bd1c9d4a7808"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:15:44Z","duration":145,"status":"PASSED"},{"id":"EID6a3340c3-0175-1000-5f34-addd71c9d35c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a334188-0175-1000-4c1e-73d72295b29f","parent":{"ref":"EID6a3340c3-0175-1000-5f34-addd71c9d35c"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:15:45Z","duration":0,"status":"PASSED"},{"id":"EID6a334188-0175-1000-060a-566f6ab59cb8","parent":{"ref":"EID6a3340c3-0175-1000-5f34-addd71c9d35c"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:15:45Z","duration":0,"status":"PASSED"},{"id":"EID6a334188-0175-1000-1de4-3b648591b970","parent":{"ref":"EID6a3340c3-0175-1000-5f34-addd71c9d35c"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:15:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID733fc373-bfc0-4ab0-bf8b-1000c9079ca9"},{"ref":"EIDc705b09a-5042-4bad-9173-2b236a3a58e8"},{"ref":"EIDd5d6cd4f-a264-4abc-ad4e-5dde047b94d2"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:15:45Z","duration":147,"status":"PASSED"},{"id":"EID6a334189-0175-1000-f40e-d37e8fe3b473","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a334261-0175-1000-74f9-092dc2c52843","parent":{"ref":"EID6a334189-0175-1000-f40e-d37e8fe3b473"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:15:45Z","duration":0,"status":"PASSED"},{"id":"EID6a334261-0175-1000-8e89-cfef7e9e3d52","parent":{"ref":"EID6a334189-0175-1000-f40e-d37e8fe3b473"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:15:45Z","duration":0,"status":"PASSED"},{"id":"EID6a334261-0175-1000-1f30-c764edcd79e6","parent":{"ref":"EID6a334189-0175-1000-f40e-d37e8fe3b473"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:15:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfb2c3e7a-6747-4ce2-9c49-a2b688a3719f"},{"ref":"EID00140071-6f8a-472e-9113-929378a3d524"},{"ref":"EID2c0988aa-1099-4cce-921c-efdd89fcd526"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:15:45Z","duration":155,"status":"PASSED"}]},"parent":{"ref":"EID6a333e5a-0175-1000-c4d3-c941c4fc429e"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:15:44Z","duration":715,"status":"PASSED"},{"id":"EID6a334262-0175-1000-6b86-e0ede59230db","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33433e-0175-1000-3079-a4f80543243b","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a334262-0175-1000-6b86-e0ede59230db"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:15:45Z","duration":24,"status":"FAILED"},{"id":"EID6a334356-0175-1000-8335-7f14350c98af","parent":{"ref":"EID6a334262-0175-1000-6b86-e0ede59230db"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:15:45Z","duration":0,"status":"PASSED"},{"id":"EID6a334356-0175-1000-977d-a604fc1be381","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a334262-0175-1000-6b86-e0ede59230db"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:15:45Z","duration":0,"status":"FAILED"},{"id":"EID6a334356-0175-1000-4d81-9eb1f09f7ad9","parent":{"ref":"EID6a334262-0175-1000-6b86-e0ede59230db"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:15:45Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8f005c4b-834b-4595-bd92-cbf81946dfc8"},{"ref":"EIDa97ebdbb-23f7-4b47-9b0e-7eb2d7c818fc"},{"ref":"EID912c2689-d77a-493a-b9e8-2b225ce1f7b7"}]},"parent":{"ref":"EID6a333e5a-0175-1000-c4d3-c941c4fc429e"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:15:45Z","duration":55,"status":"FAILED"}]},"parent":{"ref":"EID6a332e5e-0175-1000-cb2d-244dc0e98e4d"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:15:44Z","duration":1301,"status":"FAILED"},{"id":"EID6a33436f-0175-1000-4707-cf671f149e93","testStepResults":{"TestStepResult":{"id":"EID6a33436f-0175-1000-22a0-aa137f05cbae","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3343d3-0175-1000-b4a5-2955b1d66c21","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a33436f-0175-1000-22a0-aa137f05cbae"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:15:46Z","duration":15,"status":"FAILED"},{"id":"EID6a3343e2-0175-1000-ef36-c2924f383e17","parent":{"ref":"EID6a33436f-0175-1000-22a0-aa137f05cbae"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:15:46Z","duration":0,"status":"PASSED"},{"id":"EID6a3343e2-0175-1000-34ca-5f665a4738ee","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a33436f-0175-1000-22a0-aa137f05cbae"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:15:46Z","duration":0,"status":"FAILED"},{"id":"EID6a3343e2-0175-1000-6763-7b3a4bb81360","parent":{"ref":"EID6a33436f-0175-1000-22a0-aa137f05cbae"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:15:46Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9b7e2848-2aa5-4c17-bc26-71526b661347"},{"ref":"EIDd6cf0fc8-40d7-42e6-ae31-7c940e8553dc"},{"ref":"EID98c273ac-4ad6-46f0-9f1c-70e417ad0111"}]},"parent":{"ref":"EID6a33436f-0175-1000-4707-cf671f149e93"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:15:45Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6a332e5e-0175-1000-cb2d-244dc0e98e4d"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:15:45Z","duration":115,"status":"FAILED"}]},"parent":{"ref":"EID02b896d8-4169-432c-b96e-19f2c77f01d6"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:15:40Z","duration":5508,"status":"FAILED"},{"id":"EID6a3343e2-0175-1000-b7d6-b5c455d74dc5","testCaseResults":{"TestCaseResult":[{"id":"EID6a3343e2-0175-1000-740d-19ab8a169450","testStepResults":{"TestStepResult":{"id":"EID6a3343e2-0175-1000-33fa-8ebe3a4cc0ad","parent":{"ref":"EID6a3343e2-0175-1000-740d-19ab8a169450"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:15:46Z","duration":479,"status":"SKIPPED"}},"parent":{"ref":"EID6a3343e2-0175-1000-b7d6-b5c455d74dc5"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:15:46Z","duration":0,"status":"SKIPPED"},{"id":"EID6a3343e2-0175-1000-8524-814554528779","testStepResults":{"TestStepResult":{"id":"EID6a3343e3-0175-1000-87c2-4487e338455b","parent":{"ref":"EID6a3343e2-0175-1000-8524-814554528779"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:15:46Z","duration":488,"status":"SKIPPED"}},"parent":{"ref":"EID6a3343e2-0175-1000-b7d6-b5c455d74dc5"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:15:46Z","duration":10,"status":"SKIPPED"},{"id":"EID6a3343ec-0175-1000-629a-2c7ed96638d0","testStepResults":{"TestStepResult":{"id":"EID6a3343ec-0175-1000-95ce-5b3c500210e7","parent":{"ref":"EID6a3343ec-0175-1000-629a-2c7ed96638d0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:15:46Z","duration":479,"status":"SKIPPED"}},"parent":{"ref":"EID6a3343e2-0175-1000-b7d6-b5c455d74dc5"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:15:46Z","duration":0,"status":"SKIPPED"},{"id":"EID6a3343ec-0175-1000-4e5e-d896b4f5e67f","testStepResults":{"TestStepResult":{"id":"EID6a3343ec-0175-1000-eb4e-4f21fa34c4c2","parent":{"ref":"EID6a3343ec-0175-1000-4e5e-d896b4f5e67f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:15:46Z","duration":479,"status":"SKIPPED"}},"parent":{"ref":"EID6a3343e2-0175-1000-b7d6-b5c455d74dc5"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:15:46Z","duration":0,"status":"SKIPPED"},{"id":"EID6a3343ed-0175-1000-4250-c76fecb7a6f9","testStepResults":{"TestStepResult":{"id":"EID6a3343ed-0175-1000-7063-83312b9794e8","parent":{"ref":"EID6a3343ed-0175-1000-4250-c76fecb7a6f9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:15:46Z","duration":479,"status":"SKIPPED"}},"parent":{"ref":"EID6a3343e2-0175-1000-b7d6-b5c455d74dc5"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:15:46Z","duration":0,"status":"SKIPPED"},{"id":"EID6a3343ed-0175-1000-67a0-bbb72a2b1c4f","testStepResults":{"TestStepResult":{"id":"EID6a3343ed-0175-1000-2fe6-13d627081d51","parent":{"ref":"EID6a3343ed-0175-1000-67a0-bbb72a2b1c4f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:15:46Z","duration":479,"status":"SKIPPED"}},"parent":{"ref":"EID6a3343e2-0175-1000-b7d6-b5c455d74dc5"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:15:46Z","duration":0,"status":"SKIPPED"},{"id":"EID6a3343ed-0175-1000-9048-134699c888c2","testStepResults":{"TestStepResult":{"id":"EID6a3343ed-0175-1000-fb5d-91f351179aac","parent":{"ref":"EID6a3343ed-0175-1000-9048-134699c888c2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:15:46Z","duration":479,"status":"SKIPPED"}},"parent":{"ref":"EID6a3343e2-0175-1000-b7d6-b5c455d74dc5"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:15:46Z","duration":0,"status":"SKIPPED"}]},"parent":{"ref":"EID02b896d8-4169-432c-b96e-19f2c77f01d6"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:15:46Z","duration":21,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"Message","id":"EID932d38f8-cf26-4097-93f4-1db695b81438","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID932d38f8-cf26-4097-93f4-1db695b81438"}},{"type":"GetParameter","id":"EIDff60e4d5-87f3-4f3e-89ce-606f3b7ccc2e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID1c54a9c0-924f-4689-b541-79a2e4a4c98d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID4c859b4c-7fc1-4f75-a0cc-6c3e64e1c9e7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID4c859b4c-7fc1-4f75-a0cc-6c3e64e1c9e7"}},{"type":"Message","id":"EID684ff8db-026e-41f2-89b6-378e061f81f3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID684ff8db-026e-41f2-89b6-378e061f81f3"}},{"type":"Error","id":"EID0d6dcb3e-05bf-466e-af5f-2e79bc779594","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID0d6dcb3e-05bf-466e-af5f-2e79bc779594"}},{"type":"ServiceResponse","id":"EIDa97ebdbb-23f7-4b47-9b0e-7eb2d7c818fc","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDa97ebdbb-23f7-4b47-9b0e-7eb2d7c818fc"}},{"type":"ServiceResponse","id":"EID15a341b9-f877-4d2c-8d90-8346d9c88812","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID15a341b9-f877-4d2c-8d90-8346d9c88812"}},{"type":"ServiceResponse","id":"EIDbb4c70e9-187d-48bc-b711-c80bc2d3d773","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDbb4c70e9-187d-48bc-b711-c80bc2d3d773"}},{"type":"GetParameter","id":"EID44195de4-4888-4063-a4a0-597d94665fb2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID4eb65134-f12b-45e7-86b2-6bbd9ae40385","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID4eb65134-f12b-45e7-86b2-6bbd9ae40385"}},{"type":"ServiceResponse","id":"EID583b9547-0304-4870-b3d9-d6c2de84493c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID583b9547-0304-4870-b3d9-d6c2de84493c"}},{"type":"Error","id":"EID9331db48-1364-4ca2-b7f9-d6943689e5cf","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID9331db48-1364-4ca2-b7f9-d6943689e5cf"}},{"type":"GetParameter","id":"EIDcc13a44b-73a5-4704-8096-62d1bdcde540","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EID343b9b69-4306-49e6-b54a-753edca65acb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID573e0d71-83dc-4b97-a561-e17866699d94","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID573e0d71-83dc-4b97-a561-e17866699d94"}},{"type":"Message","id":"EID88a3caab-f3e6-4f59-b293-fa5b0fc858fc","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID88a3caab-f3e6-4f59-b293-fa5b0fc858fc"}},{"type":"ServiceResponse","id":"EID39b9b782-b530-48c3-aaa1-cadce5ffd3e2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID39b9b782-b530-48c3-aaa1-cadce5ffd3e2"}},{"type":"ServiceEndpoint","id":"EID9b7e2848-2aa5-4c17-bc26-71526b661347","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID4f5f123f-a136-4e82-b63a-f9a7e09fa06a","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID4f5f123f-a136-4e82-b63a-f9a7e09fa06a"}},{"type":"GetParameter","id":"EID38424181-2a0c-4522-bc5b-cdcc93d453b8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID5b6aa9c1-97a2-4e34-83bb-0ed2026ee790","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID5b6aa9c1-97a2-4e34-83bb-0ed2026ee790"}},{"type":"ServiceResponse","id":"EIDdc0fd79b-a36a-43ab-8046-cf28a35d9595","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDdc0fd79b-a36a-43ab-8046-cf28a35d9595"}},{"type":"Message","id":"EIDde984a86-6c8f-4e98-8f69-8d3a2345405f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDde984a86-6c8f-4e98-8f69-8d3a2345405f"}},{"type":"ServiceEndpoint","id":"EIDfb2c3e7a-6747-4ce2-9c49-a2b688a3719f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EID977d0888-bdda-4ca1-91e8-5e0fa58bdc1f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID5c7695ed-d97e-4b4f-a273-49c43e95cca2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID20b42128-3e2a-4161-9057-5456f61ecf65","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDc343c606-9f0a-44eb-be93-230c0ada20db","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDd5d6cd4f-a264-4abc-ad4e-5dde047b94d2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EID4e52a7e8-b430-4896-ba93-8f8f478acfbd","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID4e52a7e8-b430-4896-ba93-8f8f478acfbd"}},{"type":"ServiceResponse","id":"EID86aa408b-3d00-4091-a7f1-c48f40ad5eae","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID86aa408b-3d00-4091-a7f1-c48f40ad5eae"}},{"type":"GetParameter","id":"EID66a5233f-f35a-4c36-b958-4817fed0db73","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDc8f2f8fa-45cb-4c0e-b584-cf8db87950ec","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID31c828ea-8224-4c99-bc96-288d04d34c37","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID31c828ea-8224-4c99-bc96-288d04d34c37"}},{"type":"GetParameter","id":"EID37860d03-a348-4cdf-b450-b183f1b44c3f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID57212b5f-8bda-49a2-b296-ac111dd4741f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID57212b5f-8bda-49a2-b296-ac111dd4741f"}},{"type":"Message","id":"EID85e167ca-f00a-4184-8266-44e85947aca5","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID85e167ca-f00a-4184-8266-44e85947aca5"}},{"type":"GetParameter","id":"EID5cd83b90-be3d-47d4-80ea-f0ccc884be9c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID11597b0b-6582-41a6-ba2d-847d209e4d27","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDe760ae19-2a62-4078-af33-b1f5314dbbcb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID2871b2f4-ab5e-4f6b-9bd9-7acc39af86a8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID6f04df4e-f075-474b-8877-e74c0d852459","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID0bbef2f6-b8fb-431e-8cd2-ef13082f83e7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EID67a50d0a-d49b-4096-98eb-6c412d374013","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID67a50d0a-d49b-4096-98eb-6c412d374013"}},{"type":"ServiceEndpoint","id":"EID4b600466-9881-4d65-b51c-2aa133c016ac","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EID733fc373-bfc0-4ab0-bf8b-1000c9079ca9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EID3443ad4d-c750-4d84-97d7-53660ec290d5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID4d33e1e5-91d9-49e2-81e2-bdab9ef026a3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID0cca74d4-5adc-4710-966e-398f07102d25","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID0cca74d4-5adc-4710-966e-398f07102d25"}},{"type":"Message","id":"EIDa7564e72-73f4-4a50-8361-9b97dadbb66b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDa7564e72-73f4-4a50-8361-9b97dadbb66b"}},{"type":"GetParameter","id":"EID573f9415-83f0-4eda-9d0c-2482540989ea","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDf8d4d52b-831b-40c6-9e1b-4555c5a0274f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDf8d4d52b-831b-40c6-9e1b-4555c5a0274f"}},{"type":"ServiceEndpoint","id":"EIDe42c50ca-ed99-4ba3-9258-7b7cbbf183e4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDce66560e-5004-4bb1-a9e3-199019280619","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDc6876e35-423e-452d-bc5c-99a10cc1850d","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDc6876e35-423e-452d-bc5c-99a10cc1850d"}},{"type":"ServiceResponse","id":"EID2c336cf6-bea3-44be-9537-c20136e53cba","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID2c336cf6-bea3-44be-9537-c20136e53cba"}},{"type":"GetParameter","id":"EID2c0988aa-1099-4cce-921c-efdd89fcd526","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"Message","id":"EID45d1947c-5b00-4910-9789-0e195d8d5d60","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID45d1947c-5b00-4910-9789-0e195d8d5d60"}},{"type":"ServiceEndpoint","id":"EID4e620389-3170-41e7-96d2-17b8e0486859","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID893f1aaa-fe7d-46c0-a928-fd79d407963e","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID893f1aaa-fe7d-46c0-a928-fd79d407963e"}},{"type":"GetParameter","id":"EIDd87ea4a1-02ea-4e74-8062-e98e536cb978","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID5b8d0ea1-2599-4756-ab2c-94a41ed427d1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDa0e8aa73-bd63-4dff-8b28-06a353d0c7e8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID1b4651d9-612c-4130-a368-adc1b00e081b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID81f18178-56e5-4aed-902f-811ea2e02939","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID81f18178-56e5-4aed-902f-811ea2e02939"}},{"type":"ServiceEndpoint","id":"EIDcdeb4010-d083-417b-a6ec-4d1321978d87","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID79d030b8-5c46-4bb1-8b74-e09d31e83392","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID79d030b8-5c46-4bb1-8b74-e09d31e83392"}},{"type":"GetParameter","id":"EIDcc5dbf68-fff8-48ae-b8ca-2ef49a739f76","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID6d384df3-bcb5-4381-81c6-a5b6b6be1685","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID31a4af27-8c54-4f6a-a249-779671078eb8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDb663b470-9a9e-40c5-9eae-219e9a4ddd24","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDb663b470-9a9e-40c5-9eae-219e9a4ddd24"}},{"type":"ServiceResponse","id":"EID0ded687b-192b-4a34-b603-68833b889c43","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID0ded687b-192b-4a34-b603-68833b889c43"}},{"type":"Message","id":"EID00300355-bf78-4f77-b6d6-88e2b95c3e10","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID00300355-bf78-4f77-b6d6-88e2b95c3e10"}},{"type":"ServiceEndpoint","id":"EID7b2d8ad5-32a9-4798-9355-1023c4fd7127","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"LogFile","id":"EID5d135973-4bac-4269-bf1d-e8ad5839293d","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID5d135973-4bac-4269-bf1d-e8ad5839293d"}},{"type":"ServiceResponse","id":"EID11f45bf2-423f-4be3-ae8c-afd465633ad1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID11f45bf2-423f-4be3-ae8c-afd465633ad1"}},{"type":"ServiceResponse","id":"EID90cdb6a9-b220-42a1-9c70-8ef604e564ab","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID90cdb6a9-b220-42a1-9c70-8ef604e564ab"}},{"type":"ServiceEndpoint","id":"EID2be5521d-c968-4f4e-96c0-7a32f0e65924","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EIDcfaafb81-2ebb-4292-b354-9136b22d6574","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDcfaafb81-2ebb-4292-b354-9136b22d6574"}},{"type":"ServiceEndpoint","id":"EID2b3d3e86-5ad2-4941-af17-c41267af0a5a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID0f5bfe90-fd93-4bb5-a037-47fe6d022f9c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID15125a4b-6f93-42d6-9909-299153605099","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID15125a4b-6f93-42d6-9909-299153605099"}},{"type":"ServiceResponse","id":"EID75875110-4d52-4f69-bba6-3271024b78b0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID75875110-4d52-4f69-bba6-3271024b78b0"}},{"type":"GetParameter","id":"EID9cb21ef5-d971-4eac-b3d5-bd1c9d4a7808","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EID08e1abab-1fdc-4698-a0c5-0dcd5edd0e72","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDf83cf75b-1e72-4095-8e95-a6034d37adeb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID034fa219-a7f5-40fa-b2c7-77c433d58f7e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID034fa219-a7f5-40fa-b2c7-77c433d58f7e"}},{"type":"ServiceEndpoint","id":"EIDbcded6da-91de-4c0c-b3c8-b44e82d300e9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDdb0050d9-6617-4aad-9df6-e89b3a3c0f82","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDdb0050d9-6617-4aad-9df6-e89b3a3c0f82"}},{"type":"ServiceResponse","id":"EID477690e5-a2fc-45ec-8b77-6c09cdfc52f3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID477690e5-a2fc-45ec-8b77-6c09cdfc52f3"}},{"type":"GetParameter","id":"EIDb1de41d4-602b-45ae-b13b-16699c770428","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID147853e4-3e2f-41c5-b233-73a5605435d7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID912c2689-d77a-493a-b9e8-2b225ce1f7b7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDfbc23262-ee1d-4a2b-9a30-1bc0eda7d758","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDfbc23262-ee1d-4a2b-9a30-1bc0eda7d758"}},{"type":"GetParameter","id":"EID0ff7934e-1910-4e4e-aa06-9522872e143b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID23c2e716-1426-4521-b3b3-1062a8329a0a","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID23c2e716-1426-4521-b3b3-1062a8329a0a"}},{"type":"Message","id":"EIDbd0fd7bc-38b2-4a8d-a48d-26ecf2d4822e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDbd0fd7bc-38b2-4a8d-a48d-26ecf2d4822e"}},{"type":"Error","id":"EID92a08b3c-073e-4db4-8a05-7f8894238d56","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID92a08b3c-073e-4db4-8a05-7f8894238d56"}},{"type":"ServiceEndpoint","id":"EID6994fbcf-fb18-4c34-b8a2-9f7dd89a6255","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID6f63d8c9-554f-40e7-b9ab-f2a1f08ce145","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID6f63d8c9-554f-40e7-b9ab-f2a1f08ce145"}},{"type":"ServiceResponse","id":"EID0c3ab843-af13-4206-8ee7-755461cbf7b8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID0c3ab843-af13-4206-8ee7-755461cbf7b8"}},{"type":"ServiceEndpoint","id":"EID3b5214c4-a8f9-4fe6-bf22-1d289e31a153","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID248dc9c2-95b9-43be-b49a-a8fc05eaef6c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID248dc9c2-95b9-43be-b49a-a8fc05eaef6c"}},{"type":"ServiceEndpoint","id":"EIDd66a9711-d0e0-439d-bef6-3cae08faf79b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID98c273ac-4ad6-46f0-9f1c-70e417ad0111","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDb24e8717-4287-4787-8507-bd68bfd3a9ab","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDb24e8717-4287-4787-8507-bd68bfd3a9ab"}},{"type":"Message","id":"EID5c261831-9c64-415a-ad63-495098081cfc","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID5c261831-9c64-415a-ad63-495098081cfc"}},{"type":"ServiceResponse","id":"EID00140071-6f8a-472e-9113-929378a3d524","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID00140071-6f8a-472e-9113-929378a3d524"}},{"type":"ServiceEndpoint","id":"EIDddaefdf5-4de5-4632-ad1e-18419a2e2124","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDe2362fe8-931a-413e-995f-874f94857228","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID79238f66-dbd5-4bf3-a725-81398e2654ab","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID79238f66-dbd5-4bf3-a725-81398e2654ab"}},{"type":"ServiceResponse","id":"EID8a3ba00c-fc0e-4593-bfc7-7e326b50e152","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID8a3ba00c-fc0e-4593-bfc7-7e326b50e152"}},{"type":"Message","id":"EID527ae350-ba1a-4f52-8cdc-9b90fe498845","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID527ae350-ba1a-4f52-8cdc-9b90fe498845"}},{"type":"Error","id":"EID46ca4587-1599-4d87-891c-8f619bc31e58","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID46ca4587-1599-4d87-891c-8f619bc31e58"}},{"type":"GetParameter","id":"EID903e2593-708e-4a09-bf58-69705904f8dd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EIDd31b9f7f-e40a-417d-ae7e-053c8da84742","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDd31b9f7f-e40a-417d-ae7e-053c8da84742"}},{"type":"Error","id":"EID10cce6f2-6a31-4eeb-a7ab-8016e10b6127","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID10cce6f2-6a31-4eeb-a7ab-8016e10b6127"}},{"type":"ServiceResponse","id":"EID800432b3-8dc0-460a-abca-3799d28514e2","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID800432b3-8dc0-460a-abca-3799d28514e2"}},{"type":"GetParameter","id":"EID07077495-6f8b-46e3-8f1e-67fef7c925e1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDc21dc691-6ca5-4e0e-89ff-89d1cdb2917d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDa673f309-e5c9-4314-8f03-f695e76e85ba","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID1227cb37-4972-4104-9744-d6ae99fcdada","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID1227cb37-4972-4104-9744-d6ae99fcdada"}},{"type":"ServiceEndpoint","id":"EIDea2e2145-1e19-4435-b1d1-2b63ebcc2f6a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID9786a5a7-1bd4-433a-9be3-1b5d5c60c57c","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID9786a5a7-1bd4-433a-9be3-1b5d5c60c57c"}},{"type":"GetParameter","id":"EID7514fa64-ca3b-48d5-8fe0-7b3d1c873d53","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDcf55df31-7195-40f6-8574-1ef8270a898f","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDcf55df31-7195-40f6-8574-1ef8270a898f"}},{"type":"Message","id":"EID623fc950-8e90-4361-ae2a-ce04bc5bc89d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID623fc950-8e90-4361-ae2a-ce04bc5bc89d"}},{"type":"Message","id":"EID92618daa-15aa-4527-8904-f831a20df644","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID92618daa-15aa-4527-8904-f831a20df644"}},{"type":"GetParameter","id":"EIDb237d0e9-8b15-4ea1-9a03-490d3cfb8560","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID711bccd5-f6aa-46cb-925f-b65fb2b55781","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID711bccd5-f6aa-46cb-925f-b65fb2b55781"}},{"type":"Message","id":"EIDf3bffc7a-5a14-4f67-a69d-b3fa04ad0be3","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDf3bffc7a-5a14-4f67-a69d-b3fa04ad0be3"}},{"type":"ServiceEndpoint","id":"EID001b2e34-e705-4d1b-9b8d-f74cb7217b52","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EIDb93de31a-0413-4334-93df-54c878e55337","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDb93de31a-0413-4334-93df-54c878e55337"}},{"type":"GetParameter","id":"EIDbacde67e-1892-464c-b37e-0e8ab2f33ab0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDa84034fe-275e-4384-8653-9d07945917fc","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDa84034fe-275e-4384-8653-9d07945917fc"}},{"type":"Error","id":"EID818570c0-c803-4788-b10b-ed3b90b23279","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID818570c0-c803-4788-b10b-ed3b90b23279"}},{"type":"ServiceEndpoint","id":"EID0a838b6f-e3ed-4345-8b4f-ce7b09a66558","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDf7ae9c9b-83b6-43af-9b91-a6704dd405e1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID95a440d0-8b46-4e02-86e0-f6011a355aef","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID95a440d0-8b46-4e02-86e0-f6011a355aef"}},{"type":"Message","id":"EIDd868f5ff-dada-44ae-9242-dc86d525669f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDd868f5ff-dada-44ae-9242-dc86d525669f"}},{"type":"GetParameter","id":"EIDf8896df6-b92b-42ae-b07e-dc712b99cb0f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDc2297bf8-e509-45d5-830f-1204b94bb182","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDc2297bf8-e509-45d5-830f-1204b94bb182"}},{"type":"Error","id":"EIDedaae576-7652-4a13-8e21-4142441f45d4","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDedaae576-7652-4a13-8e21-4142441f45d4"}},{"type":"Message","id":"EID833a3ca8-6a9c-4a4f-8582-0365a5177523","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID833a3ca8-6a9c-4a4f-8582-0365a5177523"}},{"type":"ServiceEndpoint","id":"EID92fcf33d-e4fe-4a7c-8541-6c4d968cef06","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EID5aeed72f-867b-45a2-8a02-459021278783","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID5aeed72f-867b-45a2-8a02-459021278783"}},{"type":"ServiceEndpoint","id":"EID131116aa-fde2-4959-8061-1c3502dfdfbc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDc705b09a-5042-4bad-9173-2b236a3a58e8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDc705b09a-5042-4bad-9173-2b236a3a58e8"}},{"type":"ServiceEndpoint","id":"EID2f38226d-6d3e-40b5-b98d-52a1461f1cd8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDbaa3dc3e-435b-451b-b596-4ece1faaa5d9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID1dc51362-a899-4909-ba18-fb844e1a82cb","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID1dc51362-a899-4909-ba18-fb844e1a82cb"}},{"type":"GetParameter","id":"EID5d0569cb-588b-456b-9a0e-ce8480b895d7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDdac21d1a-b0b1-4833-abf4-26f67c2216af","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDdac21d1a-b0b1-4833-abf4-26f67c2216af"}},{"type":"ServiceResponse","id":"EIDd6cf0fc8-40d7-42e6-ae31-7c940e8553dc","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDd6cf0fc8-40d7-42e6-ae31-7c940e8553dc"}},{"type":"ServiceEndpoint","id":"EID8f005c4b-834b-4595-bd92-cbf81946dfc8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDa788cf13-7f85-44b6-8a9e-bb5c2cdaf411","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID5d189d42-1a8c-4240-8694-092610f1d891","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID359dcd5e-f177-48f2-be46-45df067bb306","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EID359dcd5e-f177-48f2-be46-45df067bb306"}},{"type":"Error","id":"EIDd21b33a2-496c-436b-b3bb-51d4f14cedff","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID02b896d8-4169-432c-b96e-19f2c77f01d6/Attachments/EIDd21b33a2-496c-436b-b3bb-51d4f14cedff"}},{"type":"GetParameter","id":"EIDb8acdd8c-c8c7-4014-8f9d-5c20b8e71161","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:15:31Z","duration":14373,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.005
13:15:58.085 [print] EID3228e7ef-16d6-4666-821d-68ef5b8d1971
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:15:58.085 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:15:58.086 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:15:58.086 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:15:58.086 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/3228e7ef-16d6-4666-821d-68ef5b8d1971.json
* def ref = response.EtfItemCollection.ref 0.001
* print ref 0.000
13:15:58.088 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/3228e7ef-16d6-4666-821d-68ef5b8d1971.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:15:58.088 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID3228e7ef-16d6-4666-821d-68ef5b8d1971/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.015
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.009
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
13:15:58.115 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.002
* print refs 0.000
13:15:58.118 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
13:15:58.119 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
13.147
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:11:35.813 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/noordzeevaarwegmarkeringenrd/wfs?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 13.146
13:11:35.816 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 307
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/noordzeevaarwegmarkeringenrd/wfs?request=GetCapabilities&service=WFS"}}}

13:11:48.960 response time in milliseconds: 13038.66
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:11:48 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804308777","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:11:48.960 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
41.699
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:19:11.153 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 8.071
13:19:11.153 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 297
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml"}}}

13:19:19.222 response time in milliseconds: 7298.01
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:19:18 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:19:16 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/4f012e38-dc60-460b-a097-34feedf71d05.json","testRuns":{"TestRun":{"id":"EID4f012e38-dc60-460b-a097-34feedf71d05","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:19:13.561Z","testTasks":{"TestTask":{"id":"EID6429d65c-1fd3-4059-9d80-737cf51e3472","parent":{"ref":"EID4f012e38-dc60-460b-a097-34feedf71d05"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID5603ed68-acbc-4038-8b1d-489df727fade"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID4f012e38-dc60-460b-a097-34feedf71d05/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID5603ed68-acbc-4038-8b1d-489df727fade","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:19:11.59Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:19:12.536Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:19:19.225 [print] EID4f012e38-dc60-460b-a097-34feedf71d05
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:19:19.225 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:19:19.225 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:19:19.225 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/4f012e38-dc60-460b-a097-34feedf71d05.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:19:19.226 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID4f012e38-dc60-460b-a097-34feedf71d05/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:19:19.226 [print] statuspath TestRuns/EID4f012e38-dc60-460b-a097-34feedf71d05
* print 'progresspath ', progresspath 0.000
13:19:19.226 [print] progresspath  TestRuns/EID4f012e38-dc60-460b-a097-34feedf71d05/progress
Given path progresspath 0.000
When method GET 0.526
13:19:19.227 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4f012e38-dc60-460b-a097-34feedf71d05/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:19.752 response time in milliseconds: 525.50
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:19:19 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["27.10.2020 13:19:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:13 UTC 2020)","27.10.2020 13:19:13 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:13 - Preparing 1 Test Task:","27.10.2020 13:19:13 -  TestTask 1 (6429d65c-1fd3-4059-9d80-737cf51e3472)","27.10.2020 13:19:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:13 -  with parameters: ","27.10.2020 13:19:13 - etf.testcases = *","27.10.2020 13:19:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:13 - Setting state to CREATED","27.10.2020 13:19:13 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:16 - Starting TestRun.4f012e38-dc60-460b-a097-34feedf71d05 at 2020-10-27T13:19:17Z","27.10.2020 13:19:17 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:17 - Project Properties: ","27.10.2020 13:19:17 - etf.testcases - * ","27.10.2020 13:19:17 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","27.10.2020 13:19:17 - username -  ","27.10.2020 13:19:17 - authUser -  ","27.10.2020 13:19:17 - authMethod - basic ","27.10.2020 13:19:17 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:19:19.753 [print] {
  "val": "16",
  "max": "17",
  "log": [
    "27.10.2020 13:19:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:13 UTC 2020)",
    "27.10.2020 13:19:13 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:19:13 - Preparing 1 Test Task:",
    "27.10.2020 13:19:13 -  TestTask 1 (6429d65c-1fd3-4059-9d80-737cf51e3472)",
    "27.10.2020 13:19:13 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:19:13 -  with parameters: ",
    "27.10.2020 13:19:13 - etf.testcases = *",
    "27.10.2020 13:19:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:19:13 - Setting state to CREATED",
    "27.10.2020 13:19:13 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:19:16 - Starting TestRun.4f012e38-dc60-460b-a097-34feedf71d05 at 2020-10-27T13:19:17Z",
    "27.10.2020 13:19:17 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:19:17 - Project Properties: ",
    "27.10.2020 13:19:17 - etf.testcases - * ",
    "27.10.2020 13:19:17 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ",
    "27.10.2020 13:19:17 - username -  ",
    "27.10.2020 13:19:17 - authUser -  ",
    "27.10.2020 13:19:17 - authMethod - basic ",
    "27.10.2020 13:19:17 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 29.641
13:19:19.753 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4f012e38-dc60-460b-a097-34feedf71d05/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:20.263 response time in milliseconds: 509.15
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:19:20 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["27.10.2020 13:19:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:13 UTC 2020)","27.10.2020 13:19:13 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:13 - Preparing 1 Test Task:","27.10.2020 13:19:13 -  TestTask 1 (6429d65c-1fd3-4059-9d80-737cf51e3472)","27.10.2020 13:19:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:13 -  with parameters: ","27.10.2020 13:19:13 - etf.testcases = *","27.10.2020 13:19:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:13 - Setting state to CREATED","27.10.2020 13:19:13 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:16 - Starting TestRun.4f012e38-dc60-460b-a097-34feedf71d05 at 2020-10-27T13:19:17Z","27.10.2020 13:19:17 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:17 - Project Properties: ","27.10.2020 13:19:17 - etf.testcases - * ","27.10.2020 13:19:17 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","27.10.2020 13:19:17 - username -  ","27.10.2020 13:19:17 - authUser -  ","27.10.2020 13:19:17 - authMethod - basic ","27.10.2020 13:19:17 - TestRunTask initialized"]}

13:19:20.263 retry condition not satisfied: response.val == response.max
13:19:20.263 sleeping before retry #1
13:19:25.264 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4f012e38-dc60-460b-a097-34feedf71d05/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:25.780 response time in milliseconds: 515.42
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:19:25 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"53","max":"54","log":["27.10.2020 13:19:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:13 UTC 2020)","27.10.2020 13:19:13 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:13 - Preparing 1 Test Task:","27.10.2020 13:19:13 -  TestTask 1 (6429d65c-1fd3-4059-9d80-737cf51e3472)","27.10.2020 13:19:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:13 -  with parameters: ","27.10.2020 13:19:13 - etf.testcases = *","27.10.2020 13:19:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:13 - Setting state to CREATED","27.10.2020 13:19:13 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:16 - Starting TestRun.4f012e38-dc60-460b-a097-34feedf71d05 at 2020-10-27T13:19:17Z","27.10.2020 13:19:17 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:17 - Project Properties: ","27.10.2020 13:19:17 - etf.testcases - * ","27.10.2020 13:19:17 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","27.10.2020 13:19:17 - username -  ","27.10.2020 13:19:17 - authUser -  ","27.10.2020 13:19:17 - authMethod - basic ","27.10.2020 13:19:17 - TestRunTask initialized"]}

13:19:25.780 retry condition not satisfied: response.val == response.max
13:19:25.780 sleeping before retry #2
13:19:30.781 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4f012e38-dc60-460b-a097-34feedf71d05/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:31.298 response time in milliseconds: 515.73
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:19:31 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"122","max":"123","log":["27.10.2020 13:19:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:13 UTC 2020)","27.10.2020 13:19:13 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:13 - Preparing 1 Test Task:","27.10.2020 13:19:13 -  TestTask 1 (6429d65c-1fd3-4059-9d80-737cf51e3472)","27.10.2020 13:19:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:13 -  with parameters: ","27.10.2020 13:19:13 - etf.testcases = *","27.10.2020 13:19:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:13 - Setting state to CREATED","27.10.2020 13:19:13 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:16 - Starting TestRun.4f012e38-dc60-460b-a097-34feedf71d05 at 2020-10-27T13:19:17Z","27.10.2020 13:19:17 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:17 - Project Properties: ","27.10.2020 13:19:17 - etf.testcases - * ","27.10.2020 13:19:17 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","27.10.2020 13:19:17 - username -  ","27.10.2020 13:19:17 - authUser -  ","27.10.2020 13:19:17 - authMethod - basic ","27.10.2020 13:19:17 - TestRunTask initialized","27.10.2020 13:19:29 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:19:31.298 retry condition not satisfied: response.val == response.max
13:19:31.298 sleeping before retry #3
13:19:36.299 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4f012e38-dc60-460b-a097-34feedf71d05/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:36.818 response time in milliseconds: 518.66
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:19:36 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"160","max":"161","log":["27.10.2020 13:19:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:13 UTC 2020)","27.10.2020 13:19:13 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:13 - Preparing 1 Test Task:","27.10.2020 13:19:13 -  TestTask 1 (6429d65c-1fd3-4059-9d80-737cf51e3472)","27.10.2020 13:19:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:13 -  with parameters: ","27.10.2020 13:19:13 - etf.testcases = *","27.10.2020 13:19:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:13 - Setting state to CREATED","27.10.2020 13:19:13 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:16 - Starting TestRun.4f012e38-dc60-460b-a097-34feedf71d05 at 2020-10-27T13:19:17Z","27.10.2020 13:19:17 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:17 - Project Properties: ","27.10.2020 13:19:17 - etf.testcases - * ","27.10.2020 13:19:17 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","27.10.2020 13:19:17 - username -  ","27.10.2020 13:19:17 - authUser -  ","27.10.2020 13:19:17 - authMethod - basic ","27.10.2020 13:19:17 - TestRunTask initialized","27.10.2020 13:19:29 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:19:36.819 retry condition not satisfied: response.val == response.max
13:19:36.819 sleeping before retry #4
13:19:41.820 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4f012e38-dc60-460b-a097-34feedf71d05/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:42.366 response time in milliseconds: 545.97
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:19:42 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:19:13 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:13 UTC 2020)","27.10.2020 13:19:13 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:13 - Preparing 1 Test Task:","27.10.2020 13:19:13 -  TestTask 1 (6429d65c-1fd3-4059-9d80-737cf51e3472)","27.10.2020 13:19:13 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:13 -  with parameters: ","27.10.2020 13:19:13 - etf.testcases = *","27.10.2020 13:19:13 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:13 - Setting state to CREATED","27.10.2020 13:19:13 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:16 - Starting TestRun.4f012e38-dc60-460b-a097-34feedf71d05 at 2020-10-27T13:19:17Z","27.10.2020 13:19:17 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:17 - Project Properties: ","27.10.2020 13:19:17 - etf.testcases - * ","27.10.2020 13:19:17 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml ","27.10.2020 13:19:17 - username -  ","27.10.2020 13:19:17 - authUser -  ","27.10.2020 13:19:17 - authMethod - basic ","27.10.2020 13:19:17 - TestRunTask initialized","27.10.2020 13:19:29 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:19:37 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:19:37 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:19:38 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:19:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:19:40 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

13:19:42.370 retry condition not satisfied: response.val == response.max
13:19:42.370 sleeping before retry #5
13:19:47.371 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4f012e38-dc60-460b-a097-34feedf71d05/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:49.394 response time in milliseconds: 2022.03
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:19:49 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:19:49.394 retry condition satisfied
* print response 0.000
13:19:49.394 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 3.450
13:19:49.395 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID4f012e38-dc60-460b-a097-34feedf71d05
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:52.841 response time in milliseconds: 2467.71
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Cache-Control: public, max-age=120
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:19:51 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Last-Modified: Tue, 27 Oct 2020 13:19:46 GMT
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/4f012e38-dc60-460b-a097-34feedf71d05.json","testRuns":{"TestRun":{"id":"EID4f012e38-dc60-460b-a097-34feedf71d05","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:19:13.561Z","testTasks":{"TestTask":{"id":"EID6429d65c-1fd3-4059-9d80-737cf51e3472","parent":{"ref":"EID4f012e38-dc60-460b-a097-34feedf71d05"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID5603ed68-acbc-4038-8b1d-489df727fade"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID1a15ad6b-4815-41bb-8c4a-b5b31530739d"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID4f012e38-dc60-460b-a097-34feedf71d05/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID5603ed68-acbc-4038-8b1d-489df727fade","remoteResource":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:19:11.59Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:19:12.536Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnmarienestrategie2018/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID1a15ad6b-4815-41bb-8c4a-b5b31530739d","testObject":{"ref":"EID5603ed68-acbc-4038-8b1d-489df727fade"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a367e37-0175-1000-9e47-a6a6980524df","testCaseResults":{"TestCaseResult":[{"id":"EID6a367e37-0175-1000-860c-500d96b20d68","testStepResults":{"TestStepResult":[{"id":"EID6a367e37-0175-1000-4ca7-56851c53a37b","parent":{"ref":"EID6a367e37-0175-1000-860c-500d96b20d68"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:19:17Z","duration":18,"status":"PASSED"},{"id":"EID6a367e4a-0175-1000-0603-65761530367d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a367f49-0175-1000-9ae8-224e771dad14","parent":{"ref":"EID6a367e4a-0175-1000-0603-65761530367d"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:19:17Z","duration":0,"status":"PASSED"},{"id":"EID6a367f49-0175-1000-deff-56035b551a74","parent":{"ref":"EID6a367e4a-0175-1000-0603-65761530367d"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:19:17Z","duration":0,"status":"PASSED"},{"id":"EID6a367f49-0175-1000-61be-3cc0e5cbcf66","parent":{"ref":"EID6a367e4a-0175-1000-0603-65761530367d"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:19:17Z","duration":0,"status":"PASSED"},{"id":"EID6a367f49-0175-1000-223f-ecc2cb81b77b","parent":{"ref":"EID6a367e4a-0175-1000-0603-65761530367d"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:19:17Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID19981d09-f45a-4a46-8baf-d9f8aaf94a92"},{"ref":"EIDa8e8a1fc-e2e4-467b-a4bc-e8f3f275a811"},{"ref":"EIDe074489d-3f61-4aad-b918-d62ea14b6e67"}]},"parent":{"ref":"EID6a367e37-0175-1000-860c-500d96b20d68"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:19:17Z","duration":112,"status":"PASSED"}]},"parent":{"ref":"EID6a367e37-0175-1000-9e47-a6a6980524df"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:19:17Z","duration":274,"status":"PASSED"},{"id":"EID6a367f49-0175-1000-17ca-00a203c58d10","testStepResults":{"TestStepResult":{"id":"EID6a367f49-0175-1000-2aa9-7e9c3512530a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36811e-0175-1000-7682-a5aa49e3a176","parent":{"ref":"EID6a367f49-0175-1000-2aa9-7e9c3512530a"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:19:18Z","duration":0,"status":"PASSED"},{"id":"EID6a36811e-0175-1000-d79a-aa5956633a6c","parent":{"ref":"EID6a367f49-0175-1000-2aa9-7e9c3512530a"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:19:18Z","duration":0,"status":"PASSED"},{"id":"EID6a36811e-0175-1000-0ce2-d0bd93681ee9","parent":{"ref":"EID6a367f49-0175-1000-2aa9-7e9c3512530a"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:19:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa5077368-10e3-404f-be29-59ac9eaf62ac"},{"ref":"EID77988c58-86e5-4d38-8c5b-f6ea62c30b5e"},{"ref":"EIDb2825ad8-d0d4-4a04-8d41-3d84ac5bc1e9"}]},"parent":{"ref":"EID6a367f49-0175-1000-17ca-00a203c58d10"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:19:17Z","duration":253,"status":"PASSED"}},"parent":{"ref":"EID6a367e37-0175-1000-9e47-a6a6980524df"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:19:17Z","duration":470,"status":"PASSED"}]},"parent":{"ref":"EID1a15ad6b-4815-41bb-8c4a-b5b31530739d"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:19:17Z","duration":744,"status":"PASSED"},{"id":"EID6a36811f-0175-1000-16d5-8604b542877f","testCaseResults":{"TestCaseResult":[{"id":"EID6a36811f-0175-1000-fb51-7363efd7cb05","testStepResults":{"TestStepResult":[{"id":"EID6a36811f-0175-1000-6b3d-cd7c2432edb7","parent":{"ref":"EID6a36811f-0175-1000-fb51-7363efd7cb05"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:19:18Z","duration":253,"status":"PASSED"},{"id":"EID6a36811f-0175-1000-2cf4-ae7198e25d5a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3682ce-0175-1000-4032-e63e7e9fd368","parent":{"ref":"EID6a36811f-0175-1000-2cf4-ae7198e25d5a"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:19:18Z","duration":0,"status":"PASSED"},{"id":"EID6a3682ce-0175-1000-8b43-ac07763d844e","parent":{"ref":"EID6a36811f-0175-1000-2cf4-ae7198e25d5a"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:19:18Z","duration":0,"status":"PASSED"},{"id":"EID6a3682ce-0175-1000-0e65-cc8671633b44","parent":{"ref":"EID6a36811f-0175-1000-2cf4-ae7198e25d5a"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:19:18Z","duration":0,"status":"PASSED"},{"id":"EID6a3682ce-0175-1000-6c87-a4bef930d442","parent":{"ref":"EID6a36811f-0175-1000-2cf4-ae7198e25d5a"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:19:18Z","duration":0,"status":"PASSED"},{"id":"EID6a3682ce-0175-1000-3c78-3d9afc024221","parent":{"ref":"EID6a36811f-0175-1000-2cf4-ae7198e25d5a"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:19:18Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID70fecea0-949d-40a0-b7fc-62efa3f5bd14"},{"ref":"EID748388ea-a403-4762-a0d5-51cc1f31c9ff"},{"ref":"EID9b7f2a57-d6fa-42f6-ab4b-b7bb5e57e7ed"}]},"parent":{"ref":"EID6a36811f-0175-1000-fb51-7363efd7cb05"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:19:18Z","duration":264,"status":"PASSED"}]},"parent":{"ref":"EID6a36811f-0175-1000-16d5-8604b542877f"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:19:18Z","duration":441,"status":"PASSED"},{"id":"EID6a3682d8-0175-1000-dc4b-842174cf04f2","testStepResults":{"TestStepResult":[{"id":"EID6a3682d8-0175-1000-6cb3-b365320d34ff","attachments":{"attachment":[{"ref":"EID151e1bb4-8744-4969-bec0-8592226fb66a"},{"ref":"EID9283fc17-c9ba-4766-9f62-b8348702b510"}]},"parent":{"ref":"EID6a3682d8-0175-1000-dc4b-842174cf04f2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:19:18Z","duration":468,"status":"PASSED"},{"id":"EID6a3684d7-0175-1000-08bc-e05c40bb2121","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a368633-0175-1000-96fc-05425f5c8349","parent":{"ref":"EID6a3684d7-0175-1000-08bc-e05c40bb2121"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:19:19Z","duration":0,"status":"PASSED"},{"id":"EID6a368633-0175-1000-c0f8-3932a11e8c74","parent":{"ref":"EID6a3684d7-0175-1000-08bc-e05c40bb2121"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:19:19Z","duration":0,"status":"PASSED"},{"id":"EID6a368633-0175-1000-fc0a-c21a4db4115b","parent":{"ref":"EID6a3684d7-0175-1000-08bc-e05c40bb2121"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:19:19Z","duration":0,"status":"PASSED"},{"id":"EID6a368633-0175-1000-6165-b234795f039e","parent":{"ref":"EID6a3684d7-0175-1000-08bc-e05c40bb2121"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:19:19Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID281dba9a-44f2-4e51-963a-bb70366099c5"},{"ref":"EID47b38fe1-3348-43e5-b827-ec4123cfbfb5"},{"ref":"EIDed231d51-1acd-4e90-bf23-42be018c7f53"}]},"parent":{"ref":"EID6a3682d8-0175-1000-dc4b-842174cf04f2"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:19:19Z","duration":230,"status":"PASSED"}]},"parent":{"ref":"EID6a36811f-0175-1000-16d5-8604b542877f"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:19:18Z","duration":859,"status":"PASSED"},{"id":"EID6a36863d-0175-1000-1a3d-97b00aeaaf44","testStepResults":{"TestStepResult":[{"id":"EID6a36863d-0175-1000-1bea-bc2f7671fabd","attachments":{"attachment":[{"ref":"EIDf5cfead7-bfbd-41a2-98e4-b9489d69be1e"},{"ref":"EID72905aeb-50f6-45c2-aee3-e33ebfa05b01"}]},"parent":{"ref":"EID6a36863d-0175-1000-1a3d-97b00aeaaf44"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:19:19Z","duration":226,"status":"PASSED"},{"id":"EID6a368746-0175-1000-5613-5b3b3c4bb7cc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3688b6-0175-1000-3d08-61e5839cfe03","parent":{"ref":"EID6a368746-0175-1000-5613-5b3b3c4bb7cc"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:19:20Z","duration":0,"status":"PASSED"},{"id":"EID6a3688b6-0175-1000-d618-873412c51bb8","parent":{"ref":"EID6a368746-0175-1000-5613-5b3b3c4bb7cc"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:19:20Z","duration":0,"status":"PASSED"},{"id":"EID6a3688b6-0175-1000-dc45-2c00c748f898","parent":{"ref":"EID6a368746-0175-1000-5613-5b3b3c4bb7cc"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:19:20Z","duration":0,"status":"PASSED"},{"id":"EID6a3688b6-0175-1000-0cbd-427123d45d4c","parent":{"ref":"EID6a368746-0175-1000-5613-5b3b3c4bb7cc"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:19:20Z","duration":0,"status":"PASSED"},{"id":"EID6a3688b6-0175-1000-78bc-d043ff8885bf","parent":{"ref":"EID6a368746-0175-1000-5613-5b3b3c4bb7cc"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:19:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8e18fd92-b55b-4cd7-b531-9c22d7911719"},{"ref":"EID1ff6bb54-cd6b-4258-8dc4-4881e55223a5"},{"ref":"EID20679dea-0f7e-4fe4-aca5-d8f750a5c860"}]},"parent":{"ref":"EID6a36863d-0175-1000-1a3d-97b00aeaaf44"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:19:19Z","duration":222,"status":"PASSED"}]},"parent":{"ref":"EID6a36811f-0175-1000-16d5-8604b542877f"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:19:19Z","duration":634,"status":"PASSED"},{"id":"EID6a3688b7-0175-1000-cf9c-447359494010","testStepResults":{"TestStepResult":[{"id":"EID6a3688b7-0175-1000-f99f-20032d4fb037","attachments":{"attachment":[{"ref":"EID71cb958d-c2a1-4633-953d-1c33b34af37f"},{"ref":"EIDb9b4760e-356e-46a4-b40a-346a90ff19c3"}]},"parent":{"ref":"EID6a3688b7-0175-1000-cf9c-447359494010"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:19:20Z","duration":97,"status":"PASSED"},{"id":"EID6a36894d-0175-1000-7c5b-2afb6e1d30d7","parent":{"ref":"EID6a3688b7-0175-1000-cf9c-447359494010"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:19:20Z","duration":0,"status":"PASSED"},{"id":"EID6a36894e-0175-1000-b90a-e9d4045dc3e3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a368a78-0175-1000-2cc2-14e1e50aa9fc","parent":{"ref":"EID6a36894e-0175-1000-b90a-e9d4045dc3e3"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:19:20Z","duration":0,"status":"PASSED"},{"id":"EID6a368a78-0175-1000-ed48-c28662c015ac","parent":{"ref":"EID6a36894e-0175-1000-b90a-e9d4045dc3e3"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:19:20Z","duration":0,"status":"PASSED"},{"id":"EID6a368a78-0175-1000-1731-962a6e8017ee","parent":{"ref":"EID6a36894e-0175-1000-b90a-e9d4045dc3e3"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:19:20Z","duration":0,"status":"PASSED"},{"id":"EID6a368a78-0175-1000-6c34-e9521fdee5a6","parent":{"ref":"EID6a36894e-0175-1000-b90a-e9d4045dc3e3"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:19:20Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID283fd709-6fed-414c-a849-4ce554a610f9"},{"ref":"EID5376e7e2-82ef-4dc3-a85f-fef9c560a117"},{"ref":"EIDdecb3720-8e5e-4575-9dc8-bce0a9cc62d1"}]},"parent":{"ref":"EID6a3688b7-0175-1000-cf9c-447359494010"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:19:20Z","duration":193,"status":"PASSED"},{"id":"EID6a368a78-0175-1000-fb7b-594f733e01ef","attachments":{"attachment":{"ref":"EID4fdab3ef-dbab-4a3c-ab20-6baee8c41eac"}},"parent":{"ref":"EID6a3688b7-0175-1000-cf9c-447359494010"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:19:20Z","duration":1,"status":"PASSED"},{"id":"EID6a368a87-0175-1000-55e6-bb502e73bf71","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a368bbc-0175-1000-8793-01e317a87b18","parent":{"ref":"EID6a368a87-0175-1000-55e6-bb502e73bf71"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:19:21Z","duration":0,"status":"PASSED"},{"id":"EID6a368bbc-0175-1000-5197-6a2c58dafce1","parent":{"ref":"EID6a368a87-0175-1000-55e6-bb502e73bf71"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:19:21Z","duration":0,"status":"PASSED"},{"id":"EID6a368bbc-0175-1000-68d2-2458f5d01fa0","parent":{"ref":"EID6a368a87-0175-1000-55e6-bb502e73bf71"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:19:21Z","duration":0,"status":"PASSED"},{"id":"EID6a368bbc-0175-1000-49b0-ea18b2284ee1","parent":{"ref":"EID6a368a87-0175-1000-55e6-bb502e73bf71"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:19:21Z","duration":0,"status":"PASSED"},{"id":"EID6a368bbc-0175-1000-cee3-671ff1b7225d","parent":{"ref":"EID6a368a87-0175-1000-55e6-bb502e73bf71"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:19:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3a795935-c05c-49fa-9beb-c3dbbeeb0ee8"},{"ref":"EID0b3ab8bd-1e8a-45a3-b7b5-35817daf1c06"},{"ref":"EIDb5d6f769-5d36-4a0b-9d15-177a96110a19"}]},"parent":{"ref":"EID6a3688b7-0175-1000-cf9c-447359494010"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:19:20Z","duration":184,"status":"PASSED"}]},"parent":{"ref":"EID6a36811f-0175-1000-16d5-8604b542877f"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:19:20Z","duration":773,"status":"PASSED"},{"id":"EID6a368bbd-0175-1000-c509-4b043a807094","testStepResults":{"TestStepResult":[{"id":"EID6a368bbd-0175-1000-5a16-20f2a09b2e89","attachments":{"attachment":[{"ref":"EID391cc2f3-633e-436e-b113-810c8308a30a"},{"ref":"EID6b5459a1-3e86-416d-ac79-88999562136a"}]},"parent":{"ref":"EID6a368bbd-0175-1000-c509-4b043a807094"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:19:21Z","duration":113,"status":"PASSED"},{"id":"EID6a368c66-0175-1000-5add-f10c98b868bc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a368cdf-0175-1000-391d-086f795521c9","parent":{"ref":"EID6a368c66-0175-1000-5add-f10c98b868bc"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:19:21Z","duration":0,"status":"PASSED"},{"id":"EID6a368cdf-0175-1000-4065-6032405cfd5f","parent":{"ref":"EID6a368c66-0175-1000-5add-f10c98b868bc"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:19:21Z","duration":0,"status":"PASSED"},{"id":"EID6a368cdf-0175-1000-df4f-c8e5656be26b","parent":{"ref":"EID6a368c66-0175-1000-5add-f10c98b868bc"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:19:21Z","duration":0,"status":"PASSED"},{"id":"EID6a368cdf-0175-1000-7905-8f4cd84b3da7","parent":{"ref":"EID6a368c66-0175-1000-5add-f10c98b868bc"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:19:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1cae2c94-05d9-4dfa-91d9-36e4e93a0ee0"},{"ref":"EID820b9b02-9a84-4088-b2fb-7e95d7d67cb2"},{"ref":"EID7a83b8ac-96e0-49cc-92e6-7daa568bebce"}]},"parent":{"ref":"EID6a368bbd-0175-1000-c509-4b043a807094"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:19:21Z","duration":35,"status":"PASSED"}]},"parent":{"ref":"EID6a36811f-0175-1000-16d5-8604b542877f"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:19:21Z","duration":298,"status":"PASSED"},{"id":"EID6a368ce7-0175-1000-95b0-9070d087d5ef","testStepResults":{"TestStepResult":[{"id":"EID6a368ce8-0175-1000-e0a7-f640552d460a","attachments":{"attachment":[{"ref":"EID56939672-e19a-4a7e-b9f4-d083f14377a2"},{"ref":"EIDb7d401ec-bc24-4801-a6dc-e5355f17fd1f"}]},"parent":{"ref":"EID6a368ce7-0175-1000-95b0-9070d087d5ef"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:19:21Z","duration":484,"status":"PASSED"},{"id":"EID6a368f23-0175-1000-e373-eb4b42c8bbc8","parent":{"ref":"EID6a368ce7-0175-1000-95b0-9070d087d5ef"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:19:21Z","duration":0,"status":"PASSED"},{"id":"EID6a368f23-0175-1000-a983-cb6d7abca2aa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36916c-0175-1000-a7da-805c3257f063","parent":{"ref":"EID6a368f23-0175-1000-a983-cb6d7abca2aa"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:19:22Z","duration":0,"status":"PASSED"},{"id":"EID6a36916c-0175-1000-3f4a-246c78ddf3fd","parent":{"ref":"EID6a368f23-0175-1000-a983-cb6d7abca2aa"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:19:22Z","duration":0,"status":"PASSED"},{"id":"EID6a36916c-0175-1000-d411-831395ad5c68","parent":{"ref":"EID6a368f23-0175-1000-a983-cb6d7abca2aa"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:19:22Z","duration":0,"status":"PASSED"},{"id":"EID6a36916c-0175-1000-0826-edf824bfb9b0","parent":{"ref":"EID6a368f23-0175-1000-a983-cb6d7abca2aa"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:19:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID82b6ce63-a4d0-4142-bd6c-3043626e9f9d"},{"ref":"EID13166bfc-021b-4ec5-a1d4-ecbc018bea7e"},{"ref":"EID0f33d317-526c-4151-8ec3-f177fdb1ebbc"}]},"parent":{"ref":"EID6a368ce7-0175-1000-95b0-9070d087d5ef"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:19:21Z","duration":502,"status":"PASSED"},{"id":"EID6a36916c-0175-1000-29c7-ee79ea9d943f","attachments":{"attachment":{"ref":"EIDece086fb-5c08-4a29-99f2-df483e24a841"}},"parent":{"ref":"EID6a368ce7-0175-1000-95b0-9070d087d5ef"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:19:22Z","duration":1,"status":"PASSED"},{"id":"EID6a36917a-0175-1000-9bc4-ef290c6067c8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a369210-0175-1000-b773-dd83b2abebd5","parent":{"ref":"EID6a36917a-0175-1000-9bc4-ef290c6067c8"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:19:22Z","duration":0,"status":"PASSED"},{"id":"EID6a369210-0175-1000-a0b2-4be7e27e2a0a","parent":{"ref":"EID6a36917a-0175-1000-9bc4-ef290c6067c8"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:19:22Z","duration":0,"status":"PASSED"},{"id":"EID6a369210-0175-1000-0f24-94a7ab83829f","parent":{"ref":"EID6a36917a-0175-1000-9bc4-ef290c6067c8"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:19:22Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID65a69331-ce59-4d2a-9007-9f41d180a037"},{"ref":"EID75a14ee0-722c-45a7-a05f-aacb254eb263"},{"ref":"EID1ff12e1c-0804-4ff5-8dcf-300c4fc4985d"}]},"parent":{"ref":"EID6a368ce7-0175-1000-95b0-9070d087d5ef"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:19:22Z","duration":80,"status":"PASSED"},{"id":"EID6a369211-0175-1000-2466-3a9db434f99d","attachments":{"attachment":{"ref":"EID2bbcc197-5168-45b6-b899-8324bee720db"}},"parent":{"ref":"EID6a368ce7-0175-1000-95b0-9070d087d5ef"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-27T13:19:22Z","duration":0,"status":"PASSED"},{"id":"EID6a36923e-0175-1000-4d73-10b267268bde","attachments":{"attachment":{"ref":"EID389e62a4-cf73-4e30-aa3e-88ae43e894cc"}},"parent":{"ref":"EID6a368ce7-0175-1000-95b0-9070d087d5ef"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-27T13:19:22Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a36811f-0175-1000-16d5-8604b542877f"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:19:21Z","duration":1390,"status":"PASSED"},{"id":"EID6a369256-0175-1000-78ff-e12e16b5e8ed","testStepResults":{"TestStepResult":[{"id":"EID6a369256-0175-1000-ecec-2ed7fa935725","attachments":{"attachment":[{"ref":"EID711253b5-7182-4ee7-b0b8-c4ebe451e6f1"},{"ref":"EIDb4f6a2b3-b52c-4609-acef-1d7a1695a290"}]},"parent":{"ref":"EID6a369256-0175-1000-78ff-e12e16b5e8ed"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:19:22Z","duration":294,"status":"PASSED"},{"id":"EID6a3693cf-0175-1000-28e1-8d253cccc9d1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a369572-0175-1000-646c-c20aa792dd18","parent":{"ref":"EID6a3693cf-0175-1000-28e1-8d253cccc9d1"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:19:23Z","duration":0,"status":"PASSED"},{"id":"EID6a369572-0175-1000-92ca-bb30479791ef","parent":{"ref":"EID6a3693cf-0175-1000-28e1-8d253cccc9d1"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:19:23Z","duration":0,"status":"PASSED"},{"id":"EID6a369572-0175-1000-8d99-298f175cd475","parent":{"ref":"EID6a3693cf-0175-1000-28e1-8d253cccc9d1"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:19:23Z","duration":0,"status":"PASSED"},{"id":"EID6a369572-0175-1000-2446-a1cd6e25215f","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a3693cf-0175-1000-28e1-8d253cccc9d1"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:19:23Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EIDaf400bae-9563-4d3a-a914-ce528890a27b"},{"ref":"EID6af432aa-a2a5-4c80-a13a-7de6fbd071db"},{"ref":"EIDea39b155-863c-420c-b553-ae19b575500b"}]},"parent":{"ref":"EID6a369256-0175-1000-78ff-e12e16b5e8ed"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:19:23Z","duration":298,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a36811f-0175-1000-16d5-8604b542877f"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:19:22Z","duration":805,"status":"PASSED_MANUAL"},{"id":"EID6a36957b-0175-1000-811f-3ccc9bf99358","testStepResults":{"TestStepResult":{"id":"EID6a36957b-0175-1000-c36c-3344eae74f8e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3696e0-0175-1000-c20a-a0672e0a40ba","parent":{"ref":"EID6a36957b-0175-1000-c36c-3344eae74f8e"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:19:23Z","duration":0,"status":"PASSED"},{"id":"EID6a3696e0-0175-1000-d747-cad9463e6264","parent":{"ref":"EID6a36957b-0175-1000-c36c-3344eae74f8e"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:19:23Z","duration":0,"status":"PASSED"},{"id":"EID6a3696e0-0175-1000-5560-d88d70241a3a","parent":{"ref":"EID6a36957b-0175-1000-c36c-3344eae74f8e"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:19:23Z","duration":0,"status":"PASSED"},{"id":"EID6a3696e0-0175-1000-ff15-f93b412253a9","parent":{"ref":"EID6a36957b-0175-1000-c36c-3344eae74f8e"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:19:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdc51a8fa-0420-44d7-9e34-fdc2c59b392c"},{"ref":"EID9d96cbb3-9783-4b02-b7f9-24c0101adba6"},{"ref":"EID244a2c66-8573-48ce-8a78-9a96b931cf1a"}]},"parent":{"ref":"EID6a36957b-0175-1000-811f-3ccc9bf99358"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:19:23Z","duration":174,"status":"PASSED"}},"parent":{"ref":"EID6a36811f-0175-1000-16d5-8604b542877f"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:19:23Z","duration":515,"status":"PASSED"},{"id":"EID6a36977e-0175-1000-70bb-ac8de073d220","testStepResults":{"TestStepResult":{"id":"EID6a36977e-0175-1000-1efa-243ea45088a4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a369acf-0175-1000-46ed-afb1c92a499e","parent":{"ref":"EID6a36977e-0175-1000-1efa-243ea45088a4"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:19:24Z","duration":0,"status":"PASSED"},{"id":"EID6a369acf-0175-1000-1c52-edd1c5aae005","parent":{"ref":"EID6a36977e-0175-1000-1efa-243ea45088a4"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:19:24Z","duration":0,"status":"PASSED"},{"id":"EID6a369acf-0175-1000-be26-034630842b58","parent":{"ref":"EID6a36977e-0175-1000-1efa-243ea45088a4"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:19:24Z","duration":0,"status":"PASSED"},{"id":"EID6a369acf-0175-1000-cf79-962a08df3a04","parent":{"ref":"EID6a36977e-0175-1000-1efa-243ea45088a4"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:19:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7f3f7bb0-5b2b-41e0-952b-a2da2d0298ef"},{"ref":"EIDa72c3a76-5e63-4140-bfc2-083ea4cc7725"},{"ref":"EIDe223cc23-abba-4975-8279-b85c6e4c4bc2"}]},"parent":{"ref":"EID6a36977e-0175-1000-70bb-ac8de073d220"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:19:24Z","duration":757,"status":"PASSED"}},"parent":{"ref":"EID6a36811f-0175-1000-16d5-8604b542877f"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:19:24Z","duration":849,"status":"PASSED"},{"id":"EID6a369ae5-0175-1000-74c5-a5f686522a25","testStepResults":{"TestStepResult":[{"id":"EID6a369ae6-0175-1000-23d8-cd3eb83cdec9","attachments":{"attachment":[{"ref":"EID7e61ffa8-ff59-446c-8c6a-fa698de2f974"},{"ref":"EID4164d142-5c71-44fa-9342-1d049c568d47"},{"ref":"EID5aadfdfa-ac84-457e-b617-eaed50705b12"},{"ref":"EID2e31dd76-b66c-4804-8d8c-86423cc96427"},{"ref":"EID54e23311-0cf6-446c-bf60-5866f472f50a"},{"ref":"EID6d47bf4e-df58-4e92-afd1-850d8548dd0b"},{"ref":"EIDe8dc339c-e209-4f1a-bf5a-ecb44ea4af1e"},{"ref":"EID929dc9ba-e01b-4643-90cb-2f955845264b"},{"ref":"EID0ef9f11c-62d2-4c43-8e15-8e51ce81bc2e"},{"ref":"EID1b2701c1-86ed-4850-ae8c-875b119327b9"},{"ref":"EIDfe646561-97d8-4037-9c7c-70e93dda0605"},{"ref":"EIDc5d8247a-e276-436b-8138-2896e5b31326"}]},"parent":{"ref":"EID6a369ae5-0175-1000-74c5-a5f686522a25"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:19:24Z","duration":486,"status":"PASSED"},{"id":"EID6a369dd3-0175-1000-ea69-e4629effe817","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a369e7a-0175-1000-9d1a-a778b10f670e","parent":{"ref":"EID6a369dd3-0175-1000-ea69-e4629effe817"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-27T13:19:25Z","duration":0,"status":"PASSED"},{"id":"EID6a369e7a-0175-1000-3ed4-beed7f73c9b8","parent":{"ref":"EID6a369dd3-0175-1000-ea69-e4629effe817"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-27T13:19:25Z","duration":0,"status":"PASSED"},{"id":"EID6a369e7a-0175-1000-f7f4-a9a9ca2d0b02","parent":{"ref":"EID6a369dd3-0175-1000-ea69-e4629effe817"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-27T13:19:25Z","duration":0,"status":"PASSED"},{"id":"EID6a369e7a-0175-1000-2995-58cfe2023996","parent":{"ref":"EID6a369dd3-0175-1000-ea69-e4629effe817"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-27T13:19:25Z","duration":0,"status":"PASSED"},{"id":"EID6a369e7a-0175-1000-0a14-203dfde07b70","parent":{"ref":"EID6a369dd3-0175-1000-ea69-e4629effe817"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-27T13:19:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1e7f30c4-62dd-4154-a921-709263589bae"},{"ref":"EIDbfdffb3e-4518-453c-94f4-1d2418bab2b3"},{"ref":"EID332fa518-54e4-4e62-8d22-f0fa724e69b2"}]},"parent":{"ref":"EID6a369ae5-0175-1000-74c5-a5f686522a25"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-27T13:19:25Z","duration":52,"status":"PASSED"}]},"parent":{"ref":"EID6a36811f-0175-1000-16d5-8604b542877f"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:19:24Z","duration":917,"status":"PASSED"},{"id":"EID6a369e7b-0175-1000-50df-c47647532002","testStepResults":{"TestStepResult":{"id":"EID6a369e7b-0175-1000-7e1c-35b00834a920","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36a0e5-0175-1000-4d24-c109eec09313","parent":{"ref":"EID6a369e7b-0175-1000-7e1c-35b00834a920"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"},{"id":"EID6a36a0e5-0175-1000-61ca-7c3eca2b1e7d","parent":{"ref":"EID6a369e7b-0175-1000-7e1c-35b00834a920"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"},{"id":"EID6a36a0e5-0175-1000-96ef-3d4a94a202f1","parent":{"ref":"EID6a369e7b-0175-1000-7e1c-35b00834a920"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"},{"id":"EID6a36a0e5-0175-1000-7c6d-dee0afcbcf77","parent":{"ref":"EID6a369e7b-0175-1000-7e1c-35b00834a920"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa836a029-a326-4da2-b33c-51026b2928f4"},{"ref":"EIDfabe9a95-f740-4a70-965a-59a5489259a4"},{"ref":"EID73dc2bb5-caeb-4c33-b461-169e96ab3bbf"}]},"parent":{"ref":"EID6a369e7b-0175-1000-50df-c47647532002"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:19:25Z","duration":461,"status":"PASSED"}},"parent":{"ref":"EID6a36811f-0175-1000-16d5-8604b542877f"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:19:25Z","duration":626,"status":"PASSED"},{"id":"EID6a36a0ed-0175-1000-8e96-b3a33267664f","testStepResults":{"TestStepResult":{"id":"EID6a36a0ed-0175-1000-0627-2d780c8783aa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36a19e-0175-1000-4eb2-b377d89c2b39","parent":{"ref":"EID6a36a0ed-0175-1000-0627-2d780c8783aa"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"},{"id":"EID6a36a19e-0175-1000-0c29-b842bd543ebf","parent":{"ref":"EID6a36a0ed-0175-1000-0627-2d780c8783aa"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"},{"id":"EID6a36a19e-0175-1000-2c2d-2bbfbe21f00f","parent":{"ref":"EID6a36a0ed-0175-1000-0627-2d780c8783aa"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"},{"id":"EID6a36a19e-0175-1000-b6a5-ae95e47d4b12","parent":{"ref":"EID6a36a0ed-0175-1000-0627-2d780c8783aa"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"},{"id":"EID6a36a19e-0175-1000-9e96-4adab66f48d0","parent":{"ref":"EID6a36a0ed-0175-1000-0627-2d780c8783aa"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"},{"id":"EID6a36a19e-0175-1000-d96d-34cca696ca95","parent":{"ref":"EID6a36a0ed-0175-1000-0627-2d780c8783aa"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0023bf77-e9fa-4232-8668-d4b8f36f4854"},{"ref":"EID70c9239c-9851-4a0e-a587-0d7856c41ce1"},{"ref":"EID01b87766-821d-4d66-8216-cbdeb9ebdaca"}]},"parent":{"ref":"EID6a36a0ed-0175-1000-8e96-b3a33267664f"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:19:26Z","duration":40,"status":"PASSED"}},"parent":{"ref":"EID6a36811f-0175-1000-16d5-8604b542877f"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:19:26Z","duration":178,"status":"PASSED"},{"id":"EID6a36a19f-0175-1000-d236-079bda9f149c","testStepResults":{"TestStepResult":{"id":"EID6a36a19f-0175-1000-0400-657dfc9ef1f3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36a304-0175-1000-b884-a7a782e12773","parent":{"ref":"EID6a36a19f-0175-1000-0400-657dfc9ef1f3"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"},{"id":"EID6a36a304-0175-1000-67bb-b1ece35551f8","parent":{"ref":"EID6a36a19f-0175-1000-0400-657dfc9ef1f3"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"},{"id":"EID6a36a304-0175-1000-fc74-d702efa54c42","parent":{"ref":"EID6a36a19f-0175-1000-0400-657dfc9ef1f3"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"},{"id":"EID6a36a304-0175-1000-d6a7-55c3fd72d32f","parent":{"ref":"EID6a36a19f-0175-1000-0400-657dfc9ef1f3"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"},{"id":"EID6a36a304-0175-1000-938f-24e6afe5e320","parent":{"ref":"EID6a36a19f-0175-1000-0400-657dfc9ef1f3"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"},{"id":"EID6a36a304-0175-1000-3a1d-d2029bf347cc","parent":{"ref":"EID6a36a19f-0175-1000-0400-657dfc9ef1f3"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID238d99dc-f2c3-4512-b08a-ba991e78379b"},{"ref":"EID37fd1c80-ea10-406f-bdb3-b87b20da54c5"},{"ref":"EIDc9bfd00b-e640-414d-a6e5-61f81c66d7ce"}]},"parent":{"ref":"EID6a36a19f-0175-1000-d236-079bda9f149c"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:19:26Z","duration":156,"status":"PASSED"}},"parent":{"ref":"EID6a36811f-0175-1000-16d5-8604b542877f"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:19:26Z","duration":357,"status":"PASSED"},{"id":"EID6a36a305-0175-1000-9487-f9d7ec879fd4","testStepResults":{"TestStepResult":{"id":"EID6a36a305-0175-1000-c96a-a333a74bb7cc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36a52f-0175-1000-b4f6-5af40c182c9a","parent":{"ref":"EID6a36a305-0175-1000-c96a-a333a74bb7cc"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:19:27Z","duration":0,"status":"PASSED"},{"id":"EID6a36a52f-0175-1000-0ce1-a6e31476cb5a","parent":{"ref":"EID6a36a305-0175-1000-c96a-a333a74bb7cc"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:19:27Z","duration":0,"status":"PASSED"},{"id":"EID6a36a52f-0175-1000-1363-0e8f668db526","parent":{"ref":"EID6a36a305-0175-1000-c96a-a333a74bb7cc"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:19:27Z","duration":0,"status":"PASSED"},{"id":"EID6a36a52f-0175-1000-1d02-e44d0b72f774","parent":{"ref":"EID6a36a305-0175-1000-c96a-a333a74bb7cc"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:19:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd5fde039-9fe4-4db4-8708-719740d7979a"},{"ref":"EIDec4b6515-6c8b-47a0-a652-4f3ae0f86fa9"},{"ref":"EIDc95e8041-91ab-41be-b215-4e531006d555"}]},"parent":{"ref":"EID6a36a305-0175-1000-9487-f9d7ec879fd4"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:19:26Z","duration":409,"status":"PASSED"}},"parent":{"ref":"EID6a36811f-0175-1000-16d5-8604b542877f"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:19:26Z","duration":555,"status":"PASSED"},{"id":"EID6a36a530-0175-1000-564c-f5ff0a459de9","testStepResults":{"TestStepResult":[{"id":"EID6a36a530-0175-1000-4645-ac57306450ce","attachments":{"attachment":[{"ref":"EIDafba3165-cacb-4972-a37b-9b6ea8169d31"},{"ref":"EIDdb66a232-b467-4060-a818-bab8fa268ae9"},{"ref":"EIDbba0af65-db4b-47b1-9c5a-d808d36294d8"},{"ref":"EID3b2b0f4a-ba8e-4f5f-9a87-b85d4754db11"}]},"parent":{"ref":"EID6a36a530-0175-1000-564c-f5ff0a459de9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:19:27Z","duration":597,"status":"PASSED"},{"id":"EID6a36a802-0175-1000-5538-b0b372a0eb92","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36a958-0175-1000-3461-44c1474628f6","parent":{"ref":"EID6a36a802-0175-1000-5538-b0b372a0eb92"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:19:28Z","duration":0,"status":"PASSED"},{"id":"EID6a36a958-0175-1000-73ae-dc89d9811ed7","parent":{"ref":"EID6a36a802-0175-1000-5538-b0b372a0eb92"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:19:28Z","duration":0,"status":"PASSED"},{"id":"EID6a36a958-0175-1000-6298-929aba36d9b8","parent":{"ref":"EID6a36a802-0175-1000-5538-b0b372a0eb92"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:19:28Z","duration":0,"status":"PASSED"},{"id":"EID6a36a958-0175-1000-206d-8760d7d08874","parent":{"ref":"EID6a36a802-0175-1000-5538-b0b372a0eb92"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:19:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID31456aa1-f510-473f-a273-056b9058a52d"},{"ref":"EID96d76b6c-e124-472b-a631-7f2e5e3692d6"},{"ref":"EIDbcc236e9-1379-4769-a716-a01a40c7e05b"}]},"parent":{"ref":"EID6a36a530-0175-1000-564c-f5ff0a459de9"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:19:28Z","duration":229,"status":"PASSED"}]},"parent":{"ref":"EID6a36811f-0175-1000-16d5-8604b542877f"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:19:27Z","duration":1065,"status":"PASSED"},{"id":"EID6a36a959-0175-1000-dcf1-77f7162a62c3","testStepResults":{"TestStepResult":{"id":"EID6a36a959-0175-1000-f246-a5edf26d5973","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36aa74-0175-1000-6797-d8deef76bd8c","parent":{"ref":"EID6a36a959-0175-1000-f246-a5edf26d5973"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:19:28Z","duration":0,"status":"PASSED"},{"id":"EID6a36aa74-0175-1000-196e-a3cb987ef3ae","parent":{"ref":"EID6a36a959-0175-1000-f246-a5edf26d5973"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:19:28Z","duration":0,"status":"PASSED"},{"id":"EID6a36aa74-0175-1000-2137-7b8889770b72","parent":{"ref":"EID6a36a959-0175-1000-f246-a5edf26d5973"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:19:28Z","duration":0,"status":"PASSED"},{"id":"EID6a36aa74-0175-1000-1c9b-60d5e2b13e92","parent":{"ref":"EID6a36a959-0175-1000-f246-a5edf26d5973"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:19:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa259b6ae-64ff-4ea8-9bcf-4e7e41f31494"},{"ref":"EIDd5c6caff-0a6a-47c0-ab95-e3e20a4b92e9"},{"ref":"EID21c624cf-8417-430d-8399-7d68cb081a84"}]},"parent":{"ref":"EID6a36a959-0175-1000-dcf1-77f7162a62c3"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:19:28Z","duration":180,"status":"PASSED"}},"parent":{"ref":"EID6a36811f-0175-1000-16d5-8604b542877f"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:19:28Z","duration":283,"status":"PASSED"},{"id":"EID6a36aa74-0175-1000-5a17-37c930b10222","testStepResults":{"TestStepResult":[{"id":"EID6a36aa74-0175-1000-7e85-2fb6f84a0425","parent":{"ref":"EID6a36aa74-0175-1000-5a17-37c930b10222"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:19:28Z","duration":0,"status":"PASSED"},{"id":"EID6a36aa74-0175-1000-0773-29c637ba3a3c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36ab16-0175-1000-2760-a9c08bc89a49","parent":{"ref":"EID6a36aa74-0175-1000-0773-29c637ba3a3c"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36ab16-0175-1000-483a-dbef9ad14436","parent":{"ref":"EID6a36aa74-0175-1000-0773-29c637ba3a3c"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36ab16-0175-1000-9001-6bfe15005c41","parent":{"ref":"EID6a36aa74-0175-1000-0773-29c637ba3a3c"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36ab16-0175-1000-6933-9c313ef8a780","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6a36aa74-0175-1000-0773-29c637ba3a3c"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDc03d53ed-d748-4290-8907-f3e8ffc83d81"},{"ref":"EIDe6ddb51f-2413-49b4-93d5-73d32f936605"},{"ref":"EID17b59e16-f2cc-404a-b501-668159be2cfd"}]},"parent":{"ref":"EID6a36aa74-0175-1000-5a17-37c930b10222"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:19:28Z","duration":38,"status":"FAILED"}]},"parent":{"ref":"EID6a36811f-0175-1000-16d5-8604b542877f"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:19:28Z","duration":162,"status":"FAILED"}]},"parent":{"ref":"EID1a15ad6b-4815-41bb-8c4a-b5b31530739d"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:19:18Z","duration":10743,"status":"FAILED"},{"id":"EID6a36ab16-0175-1000-4ec3-1183bea2b874","testCaseResults":{"TestCaseResult":[{"id":"EID6a36ab17-0175-1000-b9ce-7061bda02fe9","testStepResults":{"TestStepResult":[{"id":"EID6a36ab17-0175-1000-fa56-ff0ce135d671","parent":{"ref":"EID6a36ab17-0175-1000-b9ce-7061bda02fe9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36ab17-0175-1000-0404-5dff87cb2d40","parent":{"ref":"EID6a36ab17-0175-1000-b9ce-7061bda02fe9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:19:29Z","duration":180,"status":"PASSED"},{"id":"EID6a36ab17-0175-1000-616a-d3c619c11933","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36abb1-0175-1000-3f82-f91e9968893e","parent":{"ref":"EID6a36ab17-0175-1000-616a-d3c619c11933"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36abb2-0175-1000-f104-9366cf4901a5","parent":{"ref":"EID6a36ab17-0175-1000-616a-d3c619c11933"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36abb2-0175-1000-fe9e-6e9dd17bd7a3","parent":{"ref":"EID6a36ab17-0175-1000-616a-d3c619c11933"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3b495c29-f0cc-4194-b612-aed9666881f7"},{"ref":"EID617d6aa0-acc8-4934-9f4d-3d34f8b8846b"},{"ref":"EID6b1357d5-7b19-4f9d-aec1-7aeccb38793e"}]},"parent":{"ref":"EID6a36ab17-0175-1000-b9ce-7061bda02fe9"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:19:29Z","duration":41,"status":"PASSED"},{"id":"EID6a36abb2-0175-1000-3bae-dd8353c83568","attachments":{"attachment":{"ref":"EIDb8237c72-eb93-4115-b540-2d9f4e9e5297"}},"parent":{"ref":"EID6a36ab17-0175-1000-b9ce-7061bda02fe9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36abc1-0175-1000-691d-7d9a8c04c49e","parent":{"ref":"EID6a36ab17-0175-1000-b9ce-7061bda02fe9"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:19:29Z","duration":20,"status":"PASSED"}]},"parent":{"ref":"EID6a36ab16-0175-1000-4ec3-1183bea2b874"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:19:29Z","duration":191,"status":"PASSED"},{"id":"EID6a36abd6-0175-1000-ea60-c61fc3ebadd2","testStepResults":{"TestStepResult":[{"id":"EID6a36abd6-0175-1000-6147-142931848571","parent":{"ref":"EID6a36abd6-0175-1000-ea60-c61fc3ebadd2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:19:29Z","duration":253,"status":"PASSED"},{"id":"EID6a36abd6-0175-1000-cab2-2389a8b4533a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36ac52-0175-1000-a1e0-833fdbd72f54","parent":{"ref":"EID6a36abd6-0175-1000-cab2-2389a8b4533a"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36ac52-0175-1000-15a6-6563f7808872","parent":{"ref":"EID6a36abd6-0175-1000-cab2-2389a8b4533a"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36ac52-0175-1000-6b46-7df3db11189a","parent":{"ref":"EID6a36abd6-0175-1000-cab2-2389a8b4533a"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36ac52-0175-1000-ac65-48fef4246a94","parent":{"ref":"EID6a36abd6-0175-1000-cab2-2389a8b4533a"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36ac52-0175-1000-51ba-57ea1d6ea812","parent":{"ref":"EID6a36abd6-0175-1000-cab2-2389a8b4533a"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf1446dec-e505-4869-9047-8e8c7a5b4981"},{"ref":"EID88d8d601-0f2d-4b55-bd9c-832d2551bdb3"},{"ref":"EID60a15487-1601-4d93-9da5-2b2f8f9f5fe6"}]},"parent":{"ref":"EID6a36abd6-0175-1000-ea60-c61fc3ebadd2"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:19:29Z","duration":53,"status":"PASSED"}]},"parent":{"ref":"EID6a36ab16-0175-1000-4ec3-1183bea2b874"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:19:29Z","duration":124,"status":"PASSED"},{"id":"EID6a36ac52-0175-1000-b5d9-feee45dfc901","testStepResults":{"TestStepResult":[{"id":"EID6a36ac52-0175-1000-42a0-3707356736af","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36ad49-0175-1000-66a6-95d91f6d19a6","parent":{"ref":"EID6a36ac52-0175-1000-42a0-3707356736af"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36ad49-0175-1000-2902-2c68c6d9e76b","parent":{"ref":"EID6a36ac52-0175-1000-42a0-3707356736af"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36ad49-0175-1000-8562-be910c54ed81","parent":{"ref":"EID6a36ac52-0175-1000-42a0-3707356736af"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7d3d34ff-e80e-47f5-9d82-99ba2cdefd4d"},{"ref":"EIDb9905e54-3b3c-4016-ba10-e9b59d73e675"},{"ref":"EIDb11bb39f-e882-423e-a470-e06fbdaa7e45"}]},"parent":{"ref":"EID6a36ac52-0175-1000-b5d9-feee45dfc901"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:19:29Z","duration":130,"status":"PASSED"},{"id":"EID6a36ad49-0175-1000-3677-689982559967","attachments":{"attachment":{"ref":"EID4d69ec30-3a16-417a-a70d-87b6c546e6c5"}},"parent":{"ref":"EID6a36ac52-0175-1000-b5d9-feee45dfc901"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-27T13:19:29Z","duration":1,"status":"PASSED"},{"id":"EID6a36ad56-0175-1000-7cfa-3d64ee65a963","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36adf3-0175-1000-abcd-ff01e1eb5856","parent":{"ref":"EID6a36ad56-0175-1000-7cfa-3d64ee65a963"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36adf3-0175-1000-2770-9cb31de786f7","parent":{"ref":"EID6a36ad56-0175-1000-7cfa-3d64ee65a963"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36adf3-0175-1000-afc8-ec9d980cef1c","parent":{"ref":"EID6a36ad56-0175-1000-7cfa-3d64ee65a963"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36adf3-0175-1000-6194-f4c0e2212202","parent":{"ref":"EID6a36ad56-0175-1000-7cfa-3d64ee65a963"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36adf3-0175-1000-e92b-55eef4ef80b1","parent":{"ref":"EID6a36ad56-0175-1000-7cfa-3d64ee65a963"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf6315fda-43a5-4f24-b3e9-aa45339e8a4a"},{"ref":"EIDd28fd258-3922-4f80-9d6f-8820306b2ead"},{"ref":"EID57d13b48-a8b0-43e6-a351-d4ba91ff07e0"}]},"parent":{"ref":"EID6a36ac52-0175-1000-b5d9-feee45dfc901"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-27T13:19:29Z","duration":64,"status":"PASSED"}]},"parent":{"ref":"EID6a36ab16-0175-1000-4ec3-1183bea2b874"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:19:29Z","duration":418,"status":"PASSED"},{"id":"EID6a36adf4-0175-1000-7589-dccc864115ec","testStepResults":{"TestStepResult":[{"id":"EID6a36adf4-0175-1000-f765-30347c044b4b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36aeab-0175-1000-5bb2-d961dd056f7e","parent":{"ref":"EID6a36adf4-0175-1000-f765-30347c044b4b"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36aeab-0175-1000-c9c4-c9d9e797f9bc","parent":{"ref":"EID6a36adf4-0175-1000-f765-30347c044b4b"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36aeab-0175-1000-28d9-dbebcbc1f6ec","parent":{"ref":"EID6a36adf4-0175-1000-f765-30347c044b4b"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36aeab-0175-1000-2b53-e632fecb2718","parent":{"ref":"EID6a36adf4-0175-1000-f765-30347c044b4b"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9384e646-3276-4299-b405-e2a3d17a0ef4"},{"ref":"EID1d26b92e-fcd3-43c3-a3c2-aef98e72bdf8"},{"ref":"EIDf334eb39-388c-460f-89c6-e918085a4322"}]},"parent":{"ref":"EID6a36adf4-0175-1000-7589-dccc864115ec"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:19:29Z","duration":103,"status":"PASSED"},{"id":"EID6a36aeac-0175-1000-0274-a78f6ff29616","attachments":{"attachment":{"ref":"EID1c340316-6771-4792-bbaf-a7c7900bc440"}},"parent":{"ref":"EID6a36adf4-0175-1000-7589-dccc864115ec"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36aef2-0175-1000-88be-6065e01cf89a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36aff8-0175-1000-f81b-2f3321975f0a","parent":{"ref":"EID6a36aef2-0175-1000-88be-6065e01cf89a"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"},{"id":"EID6a36aff8-0175-1000-190b-89a5d2eaf1c7","parent":{"ref":"EID6a36aef2-0175-1000-88be-6065e01cf89a"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID60ad9a6a-bed1-4346-92e7-0577c8695dc3"},{"ref":"EID34f4e8d7-4904-4c79-acf5-5a2078fba6b0"}]},"parent":{"ref":"EID6a36adf4-0175-1000-7589-dccc864115ec"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-27T13:19:30Z","duration":257,"status":"PASSED"},{"id":"EID6a36aff8-0175-1000-d8bd-40e33c6bf6cd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36b117-0175-1000-b8d2-b6a5d2d766d4","parent":{"ref":"EID6a36aff8-0175-1000-d8bd-40e33c6bf6cd"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"},{"id":"EID6a36b117-0175-1000-c437-125682e4685b","parent":{"ref":"EID6a36aff8-0175-1000-d8bd-40e33c6bf6cd"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"},{"id":"EID6a36b117-0175-1000-3526-b04bfb3a3144","parent":{"ref":"EID6a36aff8-0175-1000-d8bd-40e33c6bf6cd"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"},{"id":"EID6a36b117-0175-1000-ebc9-82cea3f5a3eb","parent":{"ref":"EID6a36aff8-0175-1000-d8bd-40e33c6bf6cd"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDae465e63-b291-4c10-bcd9-c7960a91996d"},{"ref":"EID54996588-2ece-49c9-a0d0-4f64cc0b965d"},{"ref":"EIDbc74b7a2-a54b-49f2-bdfe-e176fa6793f8"}]},"parent":{"ref":"EID6a36adf4-0175-1000-7589-dccc864115ec"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-27T13:19:30Z","duration":197,"status":"PASSED"}]},"parent":{"ref":"EID6a36ab16-0175-1000-4ec3-1183bea2b874"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:19:29Z","duration":803,"status":"PASSED"},{"id":"EID6a36b117-0175-1000-aefa-fba3c4d58ad5","testStepResults":{"TestStepResult":{"id":"EID6a36b117-0175-1000-d6f4-262100502e76","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36b210-0175-1000-9481-2d16d743329c","parent":{"ref":"EID6a36b117-0175-1000-d6f4-262100502e76"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"},{"id":"EID6a36b210-0175-1000-137c-6d151117c57a","parent":{"ref":"EID6a36b117-0175-1000-d6f4-262100502e76"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"},{"id":"EID6a36b210-0175-1000-4b2b-badb902c406e","parent":{"ref":"EID6a36b117-0175-1000-d6f4-262100502e76"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID629cd06f-4d84-43f4-b931-83b8a1c2c54c"},{"ref":"EID19fd0b10-d05c-4c18-9157-082bdc142aac"},{"ref":"EIDc5b7df50-45a8-49db-8159-c04abc7e11f6"}]},"parent":{"ref":"EID6a36b117-0175-1000-aefa-fba3c4d58ad5"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:19:30Z","duration":196,"status":"PASSED"}},"parent":{"ref":"EID6a36ab16-0175-1000-4ec3-1183bea2b874"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:19:30Z","duration":249,"status":"PASSED"},{"id":"EID6a36b210-0175-1000-884e-7eefa18afafa","testStepResults":{"TestStepResult":{"id":"EID6a36b210-0175-1000-9de7-02ac86a04a82","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36b280-0175-1000-9899-984d82ba0dca","parent":{"ref":"EID6a36b210-0175-1000-9de7-02ac86a04a82"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"},{"id":"EID6a36b280-0175-1000-def0-76be4f06c154","parent":{"ref":"EID6a36b210-0175-1000-9de7-02ac86a04a82"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"},{"id":"EID6a36b280-0175-1000-d853-03341c9c8208","parent":{"ref":"EID6a36b210-0175-1000-9de7-02ac86a04a82"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0ab69dd2-1081-4cce-bae7-c558ca7f24b0"},{"ref":"EID355f90b6-5c3e-42ff-8159-cc2d791b4344"},{"ref":"EID2808b356-138d-4675-a188-8bb6083f4ca2"}]},"parent":{"ref":"EID6a36b210-0175-1000-884e-7eefa18afafa"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:19:30Z","duration":52,"status":"PASSED"}},"parent":{"ref":"EID6a36ab16-0175-1000-4ec3-1183bea2b874"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:19:30Z","duration":112,"status":"PASSED"},{"id":"EID6a36b280-0175-1000-26bf-25e9d66fa5cb","testStepResults":{"TestStepResult":{"id":"EID6a36b280-0175-1000-9267-fc64a6c93ded","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36b461-0175-1000-60f0-132f70b6fd9d","parent":{"ref":"EID6a36b280-0175-1000-9267-fc64a6c93ded"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"PASSED"},{"id":"EID6a36b461-0175-1000-ac98-19f44d0d2ec5","parent":{"ref":"EID6a36b280-0175-1000-9267-fc64a6c93ded"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"PASSED"},{"id":"EID6a36b461-0175-1000-d05c-105c6e40a9f2","parent":{"ref":"EID6a36b280-0175-1000-9267-fc64a6c93ded"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"PASSED"},{"id":"EID6a36b461-0175-1000-4277-0719bd58ba3b","parent":{"ref":"EID6a36b280-0175-1000-9267-fc64a6c93ded"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"PASSED"},{"id":"EID6a36b461-0175-1000-33a4-1007e2488447","parent":{"ref":"EID6a36b280-0175-1000-9267-fc64a6c93ded"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc95edd11-8646-4909-a03f-598810eca997"},{"ref":"EIDc2096aa8-8d47-489b-ab97-3ba15cf31dbf"},{"ref":"EIDbc3b5636-4ae8-40bf-bbc8-98fbefadd1a5"}]},"parent":{"ref":"EID6a36b280-0175-1000-26bf-25e9d66fa5cb"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:19:30Z","duration":344,"status":"PASSED"}},"parent":{"ref":"EID6a36ab16-0175-1000-4ec3-1183bea2b874"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:19:30Z","duration":481,"status":"PASSED"},{"id":"EID6a36b461-0175-1000-69ad-a948c53c7fda","testStepResults":{"TestStepResult":{"id":"EID6a36b461-0175-1000-c6dc-22c67c1ce595","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36b553-0175-1000-1280-0280b1b22ed0","parent":{"ref":"EID6a36b461-0175-1000-c6dc-22c67c1ce595"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"PASSED"},{"id":"EID6a36b553-0175-1000-84cc-9395a257fbb2","parent":{"ref":"EID6a36b461-0175-1000-c6dc-22c67c1ce595"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"PASSED"},{"id":"EID6a36b553-0175-1000-921e-64e10c7673f4","parent":{"ref":"EID6a36b461-0175-1000-c6dc-22c67c1ce595"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc13de523-80a9-496b-b74d-6c9376a59555"},{"ref":"EIDbe4a5166-1e7c-42ac-b419-07449daa6a79"},{"ref":"EIDa0162a27-f821-4070-ae17-a0fc0944d1e0"}]},"parent":{"ref":"EID6a36b461-0175-1000-69ad-a948c53c7fda"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:19:31Z","duration":161,"status":"PASSED"}},"parent":{"ref":"EID6a36ab16-0175-1000-4ec3-1183bea2b874"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:19:31Z","duration":242,"status":"PASSED"},{"id":"EID6a36b553-0175-1000-75c3-d79cb18e90f6","testStepResults":{"TestStepResult":{"id":"EID6a36b553-0175-1000-9d9d-cb8053054409","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36b6fc-0175-1000-b26b-45178e312a20","parent":{"ref":"EID6a36b553-0175-1000-9d9d-cb8053054409"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"},{"id":"EID6a36b6fc-0175-1000-eddc-6c7d1c9a0644","parent":{"ref":"EID6a36b553-0175-1000-9d9d-cb8053054409"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"},{"id":"EID6a36b6fc-0175-1000-61bb-c58dfdc69e7b","parent":{"ref":"EID6a36b553-0175-1000-9d9d-cb8053054409"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1065a275-8adb-48c1-9174-609d09d81acc"},{"ref":"EIDd4a9a4ea-393b-441d-80ab-df08b05d6512"},{"ref":"EIDcf8e4a28-87d9-4fba-ad64-54fe2390e611"}]},"parent":{"ref":"EID6a36b553-0175-1000-75c3-d79cb18e90f6"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:19:31Z","duration":327,"status":"PASSED"}},"parent":{"ref":"EID6a36ab16-0175-1000-4ec3-1183bea2b874"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:19:31Z","duration":426,"status":"PASSED"},{"id":"EID6a36b6fd-0175-1000-5b54-d8545aa9630b","testStepResults":{"TestStepResult":{"id":"EID6a36b6fd-0175-1000-314e-f74534758e3c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36b8b1-0175-1000-7e33-3a737a62baff","parent":{"ref":"EID6a36b6fd-0175-1000-314e-f74534758e3c"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"},{"id":"EID6a36b8b1-0175-1000-1a1c-71f613445b2e","parent":{"ref":"EID6a36b6fd-0175-1000-314e-f74534758e3c"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"},{"id":"EID6a36b8b1-0175-1000-1825-8f0bfa238a3c","parent":{"ref":"EID6a36b6fd-0175-1000-314e-f74534758e3c"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"},{"id":"EID6a36b8b1-0175-1000-287a-22c2ffcd8790","parent":{"ref":"EID6a36b6fd-0175-1000-314e-f74534758e3c"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4276e1b4-9093-4333-83b9-6c10285fa2dc"},{"ref":"EID6b04cd13-6921-47d7-a3d4-b745dbba151d"},{"ref":"EID72f0e794-67bf-4dd3-bce2-9e6ab065e686"}]},"parent":{"ref":"EID6a36b6fd-0175-1000-5b54-d8545aa9630b"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:19:32Z","duration":303,"status":"PASSED"}},"parent":{"ref":"EID6a36ab16-0175-1000-4ec3-1183bea2b874"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:19:32Z","duration":436,"status":"PASSED"},{"id":"EID6a36b8b1-0175-1000-2b98-e22bd3a73bdf","testStepResults":{"TestStepResult":{"id":"EID6a36b8b1-0175-1000-2031-f36871a09f3d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36b927-0175-1000-64a2-ec0bff6231c8","parent":{"ref":"EID6a36b8b1-0175-1000-2031-f36871a09f3d"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"},{"id":"EID6a36b927-0175-1000-53ee-30b11a660f0d","parent":{"ref":"EID6a36b8b1-0175-1000-2031-f36871a09f3d"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"},{"id":"EID6a36b927-0175-1000-abf8-9ea7671f04a0","parent":{"ref":"EID6a36b8b1-0175-1000-2031-f36871a09f3d"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"},{"id":"EID6a36b927-0175-1000-b561-642b5e5e8e7b","parent":{"ref":"EID6a36b8b1-0175-1000-2031-f36871a09f3d"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8f844262-fc9b-47cc-aebc-6c966b654b25"},{"ref":"EID39a100ab-9e4b-4ae5-ab78-8d499e8ca060"},{"ref":"EIDff71367b-91ec-4c2d-9895-b69beca97f44"}]},"parent":{"ref":"EID6a36b8b1-0175-1000-2b98-e22bd3a73bdf"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:19:32Z","duration":53,"status":"PASSED"}},"parent":{"ref":"EID6a36ab16-0175-1000-4ec3-1183bea2b874"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:19:32Z","duration":119,"status":"PASSED"},{"id":"EID6a36b928-0175-1000-8947-788c39e1401d","testStepResults":{"TestStepResult":[{"id":"EID6a36b928-0175-1000-c8a5-951e013cff87","parent":{"ref":"EID6a36b928-0175-1000-8947-788c39e1401d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"},{"id":"EID6a36b928-0175-1000-9950-b0f499811f84","parent":{"ref":"EID6a36b928-0175-1000-8947-788c39e1401d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:19:32Z","duration":517,"status":"PASSED"},{"id":"EID6a36b928-0175-1000-bc9a-24b8f1e3e8dd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36bb3c-0175-1000-5a82-9116afa80e6f","parent":{"ref":"EID6a36b928-0175-1000-bc9a-24b8f1e3e8dd"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bb3d-0175-1000-e2c6-b98edc7dee37","parent":{"ref":"EID6a36b928-0175-1000-bc9a-24b8f1e3e8dd"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bb3d-0175-1000-11bd-8ebb040df1d0","parent":{"ref":"EID6a36b928-0175-1000-bc9a-24b8f1e3e8dd"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bb3d-0175-1000-3ebc-ee421ffaeaff","parent":{"ref":"EID6a36b928-0175-1000-bc9a-24b8f1e3e8dd"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa4c73fa5-2487-4a62-adc9-3710652df4a7"},{"ref":"EID12019ec6-424f-4137-baa9-0e647e68d481"},{"ref":"EID7cc6b586-278c-45ff-a81b-4a95bbfebfe4"}]},"parent":{"ref":"EID6a36b928-0175-1000-8947-788c39e1401d"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:19:32Z","duration":443,"status":"PASSED"},{"id":"EID6a36bb3d-0175-1000-7db7-fc0d5d537d35","attachments":{"attachment":{"ref":"EID10f12cc3-fdce-4923-b1c6-ed97774865dc"}},"parent":{"ref":"EID6a36b928-0175-1000-8947-788c39e1401d"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:19:33Z","duration":1,"status":"PASSED"},{"id":"EID6a36bb4b-0175-1000-fe59-b77d58719337","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36bc6b-0175-1000-834c-60b2f8d6184d","parent":{"ref":"EID6a36bb4b-0175-1000-fe59-b77d58719337"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bc6b-0175-1000-ace2-b5276d7fbe9d","parent":{"ref":"EID6a36bb4b-0175-1000-fe59-b77d58719337"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bc6b-0175-1000-4d2b-d020b09e18aa","parent":{"ref":"EID6a36bb4b-0175-1000-fe59-b77d58719337"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bc6b-0175-1000-9a0a-e2d3e8c1c209","parent":{"ref":"EID6a36bb4b-0175-1000-fe59-b77d58719337"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bc6b-0175-1000-772e-d12af15053c7","parent":{"ref":"EID6a36bb4b-0175-1000-fe59-b77d58719337"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bc6b-0175-1000-aead-5b7ed71b7b1a","parent":{"ref":"EID6a36bb4b-0175-1000-fe59-b77d58719337"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bc6b-0175-1000-8e14-aadaa9184d4d","parent":{"ref":"EID6a36bb4b-0175-1000-fe59-b77d58719337"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc2bad5f9-bd1a-497a-8e89-29a2ac8d35fc"},{"ref":"EID899da5dd-26a2-4a15-aee6-0dc38b423ce1"},{"ref":"EIDf2d4b598-9970-4629-86a7-8dc8313c803a"}]},"parent":{"ref":"EID6a36b928-0175-1000-8947-788c39e1401d"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:19:33Z","duration":196,"status":"PASSED"}]},"parent":{"ref":"EID6a36ab16-0175-1000-4ec3-1183bea2b874"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:19:32Z","duration":835,"status":"PASSED"},{"id":"EID6a36bc6b-0175-1000-2ac4-24761613f211","testStepResults":{"TestStepResult":[{"id":"EID6a36bc6b-0175-1000-492a-2a839c108591","parent":{"ref":"EID6a36bc6b-0175-1000-2ac4-24761613f211"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bc6b-0175-1000-260c-3395472eb5fc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36bd6d-0175-1000-994e-37158f02ac61","parent":{"ref":"EID6a36bc6b-0175-1000-260c-3395472eb5fc"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bd6d-0175-1000-3627-24b5b43c5716","parent":{"ref":"EID6a36bc6b-0175-1000-260c-3395472eb5fc"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bd6d-0175-1000-b95b-c5b446b1bc00","parent":{"ref":"EID6a36bc6b-0175-1000-260c-3395472eb5fc"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bd6d-0175-1000-151e-5266db4da36d","parent":{"ref":"EID6a36bc6b-0175-1000-260c-3395472eb5fc"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID239b83b1-e4a9-4965-8424-6e73dfbafbe6"},{"ref":"EID2b044932-e938-4abf-9e03-e1306e984806"},{"ref":"EIDbd1f6e44-c500-48b6-93ef-c3611d1390ad"}]},"parent":{"ref":"EID6a36bc6b-0175-1000-2ac4-24761613f211"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:19:33Z","duration":147,"status":"PASSED"},{"id":"EID6a36bd6d-0175-1000-6c66-03837c7c406e","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a36bd81-0175-1000-670e-06ae59775bbb","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36be97-0175-1000-daf4-36458b7c703d","parent":{"ref":"EID6a36bd81-0175-1000-670e-06ae59775bbb"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:19:34Z","duration":0,"status":"PASSED"},{"id":"EID6a36be97-0175-1000-cf4a-b5fe7e628e04","parent":{"ref":"EID6a36bd81-0175-1000-670e-06ae59775bbb"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:19:34Z","duration":0,"status":"PASSED"},{"id":"EID6a36be97-0175-1000-7620-c64165f1774d","parent":{"ref":"EID6a36bd81-0175-1000-670e-06ae59775bbb"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:19:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb327c045-a1a9-4b2b-bdaf-6da44f336fd4"},{"ref":"EID64c9cd90-5919-47ba-a229-dc3e0c0deed1"},{"ref":"EID556e612e-d9a8-4fe5-a5bc-9b6152646efa"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:19:33Z","duration":155,"status":"PASSED"},{"id":"EID6a36be98-0175-1000-be67-1e72aa7e1f85","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36bf65-0175-1000-266a-c0c428d8ea1a","parent":{"ref":"EID6a36be98-0175-1000-be67-1e72aa7e1f85"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:19:34Z","duration":0,"status":"PASSED"},{"id":"EID6a36bf65-0175-1000-498d-cca0744afed7","parent":{"ref":"EID6a36be98-0175-1000-be67-1e72aa7e1f85"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:19:34Z","duration":0,"status":"PASSED"},{"id":"EID6a36bf65-0175-1000-e581-3b11dd84244b","parent":{"ref":"EID6a36be98-0175-1000-be67-1e72aa7e1f85"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:19:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3ad4f9f8-2a37-41ea-aa5f-c996ee63ba72"},{"ref":"EIDbacd7fea-5d81-43ca-bf3d-8e7bf62da705"},{"ref":"EIDe195566d-6fa5-4669-b2d5-f896e4ef8498"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:19:34Z","duration":150,"status":"PASSED"},{"id":"EID6a36bf66-0175-1000-6519-79ebac6294b9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36c184-0175-1000-0644-ebf0027d53f4","parent":{"ref":"EID6a36bf66-0175-1000-6519-79ebac6294b9"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:19:34Z","duration":0,"status":"PASSED"},{"id":"EID6a36c184-0175-1000-a117-5c60afed3f2b","parent":{"ref":"EID6a36bf66-0175-1000-6519-79ebac6294b9"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:19:34Z","duration":0,"status":"PASSED"},{"id":"EID6a36c184-0175-1000-8d40-2300aa975d76","parent":{"ref":"EID6a36bf66-0175-1000-6519-79ebac6294b9"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:19:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDee481f1a-52d7-406e-9545-6b84b2619ecf"},{"ref":"EID4a37f1e5-a8ca-4777-b29b-da90137c4a2f"},{"ref":"EID2bfa3dd8-7161-40ae-a517-9d7ca8fd4d4e"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:19:34Z","duration":488,"status":"PASSED"}]},"parent":{"ref":"EID6a36bc6b-0175-1000-2ac4-24761613f211"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:19:33Z","duration":1047,"status":"PASSED"},{"id":"EID6a36c1c3-0175-1000-4132-45dda58b89c5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36c7f9-0175-1000-2fac-c8c531454eeb","parent":{"ref":"EID6a36c1c3-0175-1000-4132-45dda58b89c5"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:19:36Z","duration":0,"status":"PASSED"},{"id":"EID6a36c7f9-0175-1000-3e1c-b22923efc6bc","parent":{"ref":"EID6a36c1c3-0175-1000-4132-45dda58b89c5"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:19:36Z","duration":0,"status":"PASSED"},{"id":"EID6a36c7f9-0175-1000-55fc-a9248976f1be","parent":{"ref":"EID6a36c1c3-0175-1000-4132-45dda58b89c5"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:19:36Z","duration":0,"status":"PASSED"},{"id":"EID6a36c7f9-0175-1000-bf9a-6ea91df8c02e","parent":{"ref":"EID6a36c1c3-0175-1000-4132-45dda58b89c5"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:19:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID82a7791d-07dc-4510-bf97-3961859a69bd"},{"ref":"EIDe6be2da7-6fd5-4e35-9ebb-01ea320887a8"},{"ref":"EIDcafb6092-0c3b-45a8-809c-b96c05e80dc5"}]},"parent":{"ref":"EID6a36bc6b-0175-1000-2ac4-24761613f211"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:19:34Z","duration":1508,"status":"PASSED"}]},"parent":{"ref":"EID6a36ab16-0175-1000-4ec3-1183bea2b874"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:19:33Z","duration":2958,"status":"PASSED"},{"id":"EID6a36c7fa-0175-1000-598f-3553f0d90c32","testStepResults":{"TestStepResult":{"id":"EID6a36c7fa-0175-1000-a876-24c07b3532da","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36ca26-0175-1000-95b5-41d44723fae1","parent":{"ref":"EID6a36c7fa-0175-1000-a876-24c07b3532da"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:19:36Z","duration":0,"status":"PASSED"},{"id":"EID6a36ca26-0175-1000-77a3-a4c92f2a9645","parent":{"ref":"EID6a36c7fa-0175-1000-a876-24c07b3532da"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:19:36Z","duration":0,"status":"PASSED"},{"id":"EID6a36ca26-0175-1000-83de-471266e67434","parent":{"ref":"EID6a36c7fa-0175-1000-a876-24c07b3532da"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:19:36Z","duration":0,"status":"PASSED"},{"id":"EID6a36ca26-0175-1000-b187-164789e35ade","parent":{"ref":"EID6a36c7fa-0175-1000-a876-24c07b3532da"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:19:36Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID06406a3d-1993-49b6-8a1e-80e2e9db0b93"},{"ref":"EID53765f3c-a614-4e0d-beaa-109ad3116fe1"},{"ref":"EID4221c08b-c0ba-4dcc-bc8b-7bfcf8f850c5"}]},"parent":{"ref":"EID6a36c7fa-0175-1000-598f-3553f0d90c32"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:19:36Z","duration":440,"status":"PASSED"}},"parent":{"ref":"EID6a36ab16-0175-1000-4ec3-1183bea2b874"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:19:36Z","duration":556,"status":"PASSED"}]},"parent":{"ref":"EID1a15ad6b-4815-41bb-8c4a-b5b31530739d"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:19:29Z","duration":7952,"status":"PASSED"},{"id":"EID6a36ca26-0175-1000-552d-2eba5bca6d29","testCaseResults":{"TestCaseResult":[{"id":"EID6a36ca26-0175-1000-bd82-7761c4a06662","testStepResults":{"TestStepResult":[{"id":"EID6a36ca26-0175-1000-b3fc-2245fbbd0657","parent":{"ref":"EID6a36ca26-0175-1000-bd82-7761c4a06662"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:19:36Z","duration":1067,"status":"PASSED"},{"id":"EID6a36ca26-0175-1000-f297-1f8f13fb7281","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36cbee-0175-1000-d4b6-2ed87c39c52f","parent":{"ref":"EID6a36ca26-0175-1000-f297-1f8f13fb7281"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-27T13:19:37Z","duration":0,"status":"PASSED"},{"id":"EID6a36cbee-0175-1000-8090-398d1d7e31c2","parent":{"ref":"EID6a36ca26-0175-1000-f297-1f8f13fb7281"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-27T13:19:37Z","duration":0,"status":"PASSED"},{"id":"EID6a36cbee-0175-1000-0c86-d249ba399d83","parent":{"ref":"EID6a36ca26-0175-1000-f297-1f8f13fb7281"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-27T13:19:37Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0882f527-2a40-4d86-b221-20ab7dd9b798"},{"ref":"EIDa6590823-920b-489e-b8a8-5c039fed7e84"},{"ref":"EIDd9aea85d-2489-4dfa-9ec7-17aff2094167"}]},"parent":{"ref":"EID6a36ca26-0175-1000-bd82-7761c4a06662"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-27T13:19:36Z","duration":290,"status":"PASSED"},{"id":"EID6a36cbee-0175-1000-1106-6897308c5ea3","attachments":{"attachment":{"ref":"EID0b2c32aa-f575-4cfd-a922-8794ccf8fc67"}},"parent":{"ref":"EID6a36ca26-0175-1000-bd82-7761c4a06662"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-27T13:19:37Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6a36ca26-0175-1000-552d-2eba5bca6d29"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:19:36Z","duration":470,"status":"PASSED"},{"id":"EID6a36cbfd-0175-1000-83cc-c581b44a8f4c","testStepResults":{"TestStepResult":[{"id":"EID6a36cbfd-0175-1000-63dc-0cd63fbd1903","parent":{"ref":"EID6a36cbfd-0175-1000-83cc-c581b44a8f4c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:19:37Z","duration":1067,"status":"PASSED"},{"id":"EID6a36cbfd-0175-1000-7b3e-9809a35cdca7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36cd28-0175-1000-80d4-db1822a235c4","parent":{"ref":"EID6a36cbfd-0175-1000-7b3e-9809a35cdca7"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-27T13:19:37Z","duration":0,"status":"PASSED"},{"id":"EID6a36cd28-0175-1000-0284-f0deec1f1c20","parent":{"ref":"EID6a36cbfd-0175-1000-7b3e-9809a35cdca7"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-27T13:19:37Z","duration":0,"status":"PASSED"},{"id":"EID6a36cd28-0175-1000-02e2-bbbed6c264ac","parent":{"ref":"EID6a36cbfd-0175-1000-7b3e-9809a35cdca7"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-27T13:19:37Z","duration":0,"status":"PASSED"},{"id":"EID6a36cd28-0175-1000-06f7-88881092ab33","parent":{"ref":"EID6a36cbfd-0175-1000-7b3e-9809a35cdca7"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-27T13:19:37Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc0166bdc-ac8a-439c-8964-126dd763d58b"},{"ref":"EID1b6465b6-60ae-4d50-a4a0-bc07b9bd0e5d"},{"ref":"EID81c24427-9953-4618-adbc-3cd7e3d7469e"}]},"parent":{"ref":"EID6a36cbfd-0175-1000-83cc-c581b44a8f4c"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-27T13:19:37Z","duration":115,"status":"PASSED"}]},"parent":{"ref":"EID6a36ca26-0175-1000-552d-2eba5bca6d29"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:19:37Z","duration":299,"status":"PASSED"},{"id":"EID6a36cd28-0175-1000-5ced-24fb2375508b","testStepResults":{"TestStepResult":[{"id":"EID6a36cd28-0175-1000-b667-3069dc16450f","parent":{"ref":"EID6a36cd28-0175-1000-5ced-24fb2375508b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:19:37Z","duration":1067,"status":"PASSED"},{"id":"EID6a36cd28-0175-1000-1277-643b6d9f1da3","parent":{"ref":"EID6a36cd28-0175-1000-5ced-24fb2375508b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-27T13:19:37Z","duration":0,"status":"PASSED"},{"id":"EID6a36cd28-0175-1000-55b0-7b5a43bcc19d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36cde3-0175-1000-bbdd-8adf903aea43","parent":{"ref":"EID6a36cd28-0175-1000-55b0-7b5a43bcc19d"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-27T13:19:37Z","duration":0,"status":"PASSED"},{"id":"EID6a36cde3-0175-1000-b277-db742da240bf","parent":{"ref":"EID6a36cd28-0175-1000-55b0-7b5a43bcc19d"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-27T13:19:37Z","duration":0,"status":"PASSED"},{"id":"EID6a36cde3-0175-1000-4526-f232fb7a35b4","parent":{"ref":"EID6a36cd28-0175-1000-55b0-7b5a43bcc19d"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-27T13:19:37Z","duration":0,"status":"PASSED"},{"id":"EID6a36cde3-0175-1000-2c29-492a545245dc","parent":{"ref":"EID6a36cd28-0175-1000-55b0-7b5a43bcc19d"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-27T13:19:37Z","duration":0,"status":"PASSED"},{"id":"EID6a36cde3-0175-1000-52e8-8a9918395159","parent":{"ref":"EID6a36cd28-0175-1000-55b0-7b5a43bcc19d"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-27T13:19:37Z","duration":0,"status":"PASSED"},{"id":"EID6a36cde3-0175-1000-2f62-c79f5b75879c","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}}},"parent":{"ref":"EID6a36cd28-0175-1000-55b0-7b5a43bcc19d"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-27T13:19:37Z","duration":0,"status":"FAILED"},{"id":"EID6a36cde3-0175-1000-b9a0-6a0546e74011","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6a36cd28-0175-1000-55b0-7b5a43bcc19d"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-27T13:19:37Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDfd8fb0c6-2e4b-4109-b46d-5f8745fd19ae"},{"ref":"EID918010b5-1950-41c3-9011-f6c1d6722381"},{"ref":"EID7254a548-9271-420a-ba6e-6479a95914cc"}]},"parent":{"ref":"EID6a36cd28-0175-1000-5ced-24fb2375508b"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-27T13:19:37Z","duration":80,"status":"FAILED"}]},"parent":{"ref":"EID6a36ca26-0175-1000-552d-2eba5bca6d29"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:19:37Z","duration":195,"status":"FAILED"},{"id":"EID6a36cdeb-0175-1000-b992-5a34812677f0","testStepResults":{"TestStepResult":[{"id":"EID6a36cdeb-0175-1000-cc97-4dacba01a7e0","parent":{"ref":"EID6a36cdeb-0175-1000-b992-5a34812677f0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:19:37Z","duration":1067,"status":"PASSED"},{"id":"EID6a36cdec-0175-1000-b605-3f63ffb7c854","parent":{"ref":"EID6a36cdeb-0175-1000-b992-5a34812677f0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-27T13:19:37Z","duration":0,"status":"PASSED"},{"id":"EID6a36cdec-0175-1000-40ec-02ffbb2bb9cd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36cea1-0175-1000-7b2f-84cc8ea86e58","parent":{"ref":"EID6a36cdec-0175-1000-40ec-02ffbb2bb9cd"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-27T13:19:38Z","duration":0,"status":"PASSED"},{"id":"EID6a36cea1-0175-1000-f337-ebd598f1340d","parent":{"ref":"EID6a36cdec-0175-1000-40ec-02ffbb2bb9cd"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-27T13:19:38Z","duration":0,"status":"PASSED"},{"id":"EID6a36cea1-0175-1000-6bd0-488da334ec5c","parent":{"ref":"EID6a36cdec-0175-1000-40ec-02ffbb2bb9cd"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-27T13:19:38Z","duration":0,"status":"PASSED"},{"id":"EID6a36cea1-0175-1000-f97b-11e8e8b4e260","parent":{"ref":"EID6a36cdec-0175-1000-40ec-02ffbb2bb9cd"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-27T13:19:38Z","duration":0,"status":"PASSED"},{"id":"EID6a36cea1-0175-1000-6508-3bd741ade29a","parent":{"ref":"EID6a36cdec-0175-1000-40ec-02ffbb2bb9cd"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-27T13:19:38Z","duration":0,"status":"PASSED"},{"id":"EID6a36cea1-0175-1000-b2f1-7d82f65c40ba","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6a36cdec-0175-1000-40ec-02ffbb2bb9cd"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-27T13:19:38Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDbbfd91c1-acfd-4175-b66d-faef0ca83a41"},{"ref":"EIDf2385f6b-4ace-4df8-8c54-cac4e5bab93d"},{"ref":"EID729c0176-de85-4bd8-9ee3-605a3f2bb935"}]},"parent":{"ref":"EID6a36cdeb-0175-1000-b992-5a34812677f0"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-27T13:19:37Z","duration":80,"status":"FAILED"}]},"parent":{"ref":"EID6a36ca26-0175-1000-552d-2eba5bca6d29"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:19:37Z","duration":182,"status":"FAILED"},{"id":"EID6a36cea1-0175-1000-a5bd-3abcccb82c68","testStepResults":{"TestStepResult":[{"id":"EID6a36cea1-0175-1000-935a-c37810402426","parent":{"ref":"EID6a36cea1-0175-1000-a5bd-3abcccb82c68"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:19:38Z","duration":1067,"status":"PASSED"},{"id":"EID6a36cea1-0175-1000-c5ff-0d4e371b0dbe","messages":{"message":[{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}},{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}]},"attachments":{"attachment":[{"ref":"EID6bc440f6-9ab7-4010-8b01-3d64c69b8093"},{"ref":"EIDf73a338c-71b8-435d-9241-0586cdaa29a8"},{"ref":"EIDd4775525-bc6d-4605-ad81-948ee0f53fb2"},{"ref":"EID9c56adeb-1150-4e6e-afd6-6de442590aef"},{"ref":"EID54456a8e-8310-47cc-bf4b-37e9cbde0488"},{"ref":"EID7a616120-105e-4eac-9f37-f94ac4ca5d3a"},{"ref":"EIDa69ade0c-1105-49b0-a815-c6040af783c4"},{"ref":"EIDb35ebba3-d8d4-4214-bedc-87ac71b5df8e"},{"ref":"EIDd64183ae-8e4a-4b18-9aae-9f0b3ea2b58a"},{"ref":"EID9ca55eb5-4c7e-4045-a6a9-ba00b758a843"},{"ref":"EID603ace79-af7f-4639-b1b5-c6dc4905ae70"},{"ref":"EID1caa64c5-5dae-4785-bc67-c6758e3a1f2b"},{"ref":"EID8d7d335d-9216-4f34-8bed-085ece638f5f"},{"ref":"EID695ea199-d7e6-4165-b18a-5410bbb97a02"},{"ref":"EIDcbf73e5a-b084-4896-985d-c7d35b2a02a7"}]},"parent":{"ref":"EID6a36cea1-0175-1000-a5bd-3abcccb82c68"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-27T13:19:38Z","duration":1958,"status":"SKIPPED"}]},"parent":{"ref":"EID6a36ca26-0175-1000-552d-2eba5bca6d29"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:19:38Z","duration":2316,"status":"SKIPPED"},{"id":"EID6a36d7ad-0175-1000-0257-fe56e4048de7","testStepResults":{"TestStepResult":[{"id":"EID6a36d7ad-0175-1000-03ce-a5e5040534f6","parent":{"ref":"EID6a36d7ad-0175-1000-0257-fe56e4048de7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:19:40Z","duration":1067,"status":"PASSED"},{"id":"EID6a36d7ad-0175-1000-1113-a6dbc6780ce0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36d84c-0175-1000-0eea-70be50f994d3","parent":{"ref":"EID6a36d7ad-0175-1000-1113-a6dbc6780ce0"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-27T13:19:40Z","duration":0,"status":"PASSED"},{"id":"EID6a36d84c-0175-1000-f3a9-ffa797bd5135","parent":{"ref":"EID6a36d7ad-0175-1000-1113-a6dbc6780ce0"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-27T13:19:40Z","duration":0,"status":"PASSED"},{"id":"EID6a36d84c-0175-1000-dc57-88cbb8215ac5","parent":{"ref":"EID6a36d7ad-0175-1000-1113-a6dbc6780ce0"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-27T13:19:40Z","duration":0,"status":"PASSED"},{"id":"EID6a36d84c-0175-1000-0000-0832f407d631","parent":{"ref":"EID6a36d7ad-0175-1000-1113-a6dbc6780ce0"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-27T13:19:40Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID19a9f8b3-f011-40f8-9884-7644c481d77e"},{"ref":"EIDc87fc865-f639-4525-b12b-0ce60ae9a88c"},{"ref":"EID14bdc293-1448-4496-90a1-1188177a3269"}]},"parent":{"ref":"EID6a36d7ad-0175-1000-0257-fe56e4048de7"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-27T13:19:40Z","duration":76,"status":"PASSED"}]},"parent":{"ref":"EID6a36ca26-0175-1000-552d-2eba5bca6d29"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:19:40Z","duration":159,"status":"PASSED"},{"id":"EID6a36d84e-0175-1000-3d88-e5c8b1d08569","testStepResults":{"TestStepResult":[{"id":"EID6a36d84e-0175-1000-8c22-2b00a25ec669","parent":{"ref":"EID6a36d84e-0175-1000-3d88-e5c8b1d08569"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:19:40Z","duration":1067,"status":"PASSED"},{"id":"EID6a36d869-0175-1000-ab82-d78f7cdedf56","parent":{"ref":"EID6a36d84e-0175-1000-3d88-e5c8b1d08569"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-27T13:19:40Z","duration":0,"status":"PASSED"},{"id":"EID6a36d869-0175-1000-f223-1b1334677e22","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36d94d-0175-1000-2d6a-62a5c74f6216","parent":{"ref":"EID6a36d869-0175-1000-f223-1b1334677e22"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-27T13:19:40Z","duration":0,"status":"PASSED"},{"id":"EID6a36d94d-0175-1000-8206-949fae6b4fef","parent":{"ref":"EID6a36d869-0175-1000-f223-1b1334677e22"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-27T13:19:40Z","duration":0,"status":"PASSED"},{"id":"EID6a36d94d-0175-1000-90d5-521cdfdc4572","parent":{"ref":"EID6a36d869-0175-1000-f223-1b1334677e22"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-27T13:19:40Z","duration":0,"status":"PASSED"},{"id":"EID6a36d94d-0175-1000-7aca-f503dbe26f9e","parent":{"ref":"EID6a36d869-0175-1000-f223-1b1334677e22"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-27T13:19:40Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf9c058c3-aedf-43d1-a0d8-ba849536b6d5"},{"ref":"EID1edf1098-5ec8-4b07-829a-09dd0ccd6a2c"},{"ref":"EID60dc1f1f-8d33-405b-9de2-4907978efb0d"}]},"parent":{"ref":"EID6a36d84e-0175-1000-3d88-e5c8b1d08569"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-27T13:19:40Z","duration":80,"status":"PASSED"},{"id":"EID6a36d94d-0175-1000-7a29-129d359e3ef2","attachments":{"attachment":{"ref":"EID421b8fff-7297-4725-8030-d6afc1c2e12e"}},"parent":{"ref":"EID6a36d84e-0175-1000-3d88-e5c8b1d08569"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-27T13:19:40Z","duration":0,"status":"PASSED"},{"id":"EID6a36d96a-0175-1000-ad5f-ddf7d5082754","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36d97a-0175-1000-a1a3-aaba2969b5a3","parent":{"ref":"EID6a36d96a-0175-1000-ad5f-ddf7d5082754"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-27T13:19:40Z","duration":0,"status":"PASSED"},{"id":"EID6a36d97a-0175-1000-0e87-5803bb9abaf7","parent":{"ref":"EID6a36d96a-0175-1000-ad5f-ddf7d5082754"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-27T13:19:40Z","duration":0,"status":"PASSED"},{"id":"EID6a36d97a-0175-1000-ef8b-648b8ce4ee1a","parent":{"ref":"EID6a36d96a-0175-1000-ad5f-ddf7d5082754"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-27T13:19:40Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7ebe3967-a6ac-4dc4-ad36-f6fc7bb137be"},{"ref":"EID09ed0f02-20f0-49c8-8e56-411bd303cc2d"}]},"parent":{"ref":"EID6a36d84e-0175-1000-3d88-e5c8b1d08569"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-27T13:19:40Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a36ca26-0175-1000-552d-2eba5bca6d29"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:19:40Z","duration":300,"status":"PASSED"}]},"parent":{"ref":"EID1a15ad6b-4815-41bb-8c4a-b5b31530739d"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:19:36Z","duration":3925,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"Message","id":"EID929dc9ba-e01b-4643-90cb-2f955845264b","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID929dc9ba-e01b-4643-90cb-2f955845264b"}},{"type":"ServiceEndpoint","id":"EID7d3d34ff-e80e-47f5-9d82-99ba2cdefd4d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceResponse","id":"EID64c9cd90-5919-47ba-a229-dc3e0c0deed1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID64c9cd90-5919-47ba-a229-dc3e0c0deed1"}},{"type":"GetParameter","id":"EID7cc6b586-278c-45ff-a81b-4a95bbfebfe4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDb9905e54-3b3c-4016-ba10-e9b59d73e675","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDb9905e54-3b3c-4016-ba10-e9b59d73e675"}},{"type":"ServiceResponse","id":"EID899da5dd-26a2-4a15-aee6-0dc38b423ce1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID899da5dd-26a2-4a15-aee6-0dc38b423ce1"}},{"type":"ServiceResponse","id":"EID77988c58-86e5-4d38-8c5b-f6ea62c30b5e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID77988c58-86e5-4d38-8c5b-f6ea62c30b5e"}},{"type":"ServiceResponse","id":"EID6b04cd13-6921-47d7-a3d4-b745dbba151d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID6b04cd13-6921-47d7-a3d4-b745dbba151d"}},{"type":"ServiceResponse","id":"EID1b6465b6-60ae-4d50-a4a0-bc07b9bd0e5d","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID1b6465b6-60ae-4d50-a4a0-bc07b9bd0e5d"}},{"type":"GetParameter","id":"EIDb2825ad8-d0d4-4a04-8d41-3d84ac5bc1e9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID19fd0b10-d05c-4c18-9157-082bdc142aac","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID19fd0b10-d05c-4c18-9157-082bdc142aac"}},{"type":"ServiceEndpoint","id":"EID7f3f7bb0-5b2b-41e0-952b-a2da2d0298ef","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID21c624cf-8417-430d-8399-7d68cb081a84","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID4fdab3ef-dbab-4a3c-ab20-6baee8c41eac","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID4fdab3ef-dbab-4a3c-ab20-6baee8c41eac"}},{"type":"GetParameter","id":"EID72f0e794-67bf-4dd3-bce2-9e6ab065e686","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceResponse","id":"EIDa72c3a76-5e63-4140-bfc2-083ea4cc7725","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDa72c3a76-5e63-4140-bfc2-083ea4cc7725"}},{"type":"Message","id":"EID1b2701c1-86ed-4850-ae8c-875b119327b9","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID1b2701c1-86ed-4850-ae8c-875b119327b9"}},{"type":"Message","id":"EID2bbcc197-5168-45b6-b899-8324bee720db","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID2bbcc197-5168-45b6-b899-8324bee720db"}},{"type":"GetParameter","id":"EIDff71367b-91ec-4c2d-9895-b69beca97f44","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EID283fd709-6fed-414c-a849-4ce554a610f9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDbbfd91c1-acfd-4175-b66d-faef0ca83a41","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDed231d51-1acd-4e90-bf23-42be018c7f53","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDd9aea85d-2489-4dfa-9ec7-17aff2094167","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDece086fb-5c08-4a29-99f2-df483e24a841","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDece086fb-5c08-4a29-99f2-df483e24a841"}},{"type":"ServiceEndpoint","id":"EIDf1446dec-e505-4869-9047-8e8c7a5b4981","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EIDc0166bdc-ac8a-439c-8964-126dd763d58b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID7ebe3967-a6ac-4dc4-ad36-f6fc7bb137be","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceResponse","id":"EID820b9b02-9a84-4088-b2fb-7e95d7d67cb2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID820b9b02-9a84-4088-b2fb-7e95d7d67cb2"}},{"type":"ServiceEndpoint","id":"EIDc13de523-80a9-496b-b74d-6c9376a59555","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EIDf334eb39-388c-460f-89c6-e918085a4322","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"Message","id":"EID9ca55eb5-4c7e-4045-a6a9-ba00b758a843","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID9ca55eb5-4c7e-4045-a6a9-ba00b758a843"}},{"type":"Message","id":"EID8d7d335d-9216-4f34-8bed-085ece638f5f","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID8d7d335d-9216-4f34-8bed-085ece638f5f"}},{"type":"Message","id":"EID56939672-e19a-4a7e-b9f4-d083f14377a2","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID56939672-e19a-4a7e-b9f4-d083f14377a2"}},{"type":"ServiceResponse","id":"EID617d6aa0-acc8-4934-9f4d-3d34f8b8846b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID617d6aa0-acc8-4934-9f4d-3d34f8b8846b"}},{"type":"ServiceEndpoint","id":"EID82a7791d-07dc-4510-bf97-3961859a69bd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EID01b87766-821d-4d66-8216-cbdeb9ebdaca","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID3ad4f9f8-2a37-41ea-aa5f-c996ee63ba72","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EID629cd06f-4d84-43f4-b931-83b8a1c2c54c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"Message","id":"EIDbba0af65-db4b-47b1-9c5a-d808d36294d8","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDbba0af65-db4b-47b1-9c5a-d808d36294d8"}},{"type":"GetParameter","id":"EIDcf8e4a28-87d9-4fba-ad64-54fe2390e611","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceResponse","id":"EID2b044932-e938-4abf-9e03-e1306e984806","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID2b044932-e938-4abf-9e03-e1306e984806"}},{"type":"GetParameter","id":"EID1ff12e1c-0804-4ff5-8dcf-300c4fc4985d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDd28fd258-3922-4f80-9d6f-8820306b2ead","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDd28fd258-3922-4f80-9d6f-8820306b2ead"}},{"type":"ServiceResponse","id":"EID13166bfc-021b-4ec5-a1d4-ecbc018bea7e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID13166bfc-021b-4ec5-a1d4-ecbc018bea7e"}},{"type":"GetParameter","id":"EIDbcc236e9-1379-4769-a716-a01a40c7e05b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID421b8fff-7297-4725-8030-d6afc1c2e12e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID421b8fff-7297-4725-8030-d6afc1c2e12e"}},{"type":"ServiceEndpoint","id":"EIDd5fde039-9fe4-4db4-8708-719740d7979a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID0b2c32aa-f575-4cfd-a922-8794ccf8fc67","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID0b2c32aa-f575-4cfd-a922-8794ccf8fc67"}},{"type":"Message","id":"EIDe8dc339c-e209-4f1a-bf5a-ecb44ea4af1e","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDe8dc339c-e209-4f1a-bf5a-ecb44ea4af1e"}},{"type":"GetParameter","id":"EID0f33d317-526c-4151-8ec3-f177fdb1ebbc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDbacd7fea-5d81-43ca-bf3d-8e7bf62da705","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDbacd7fea-5d81-43ca-bf3d-8e7bf62da705"}},{"type":"ServiceResponse","id":"EID5376e7e2-82ef-4dc3-a85f-fef9c560a117","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID5376e7e2-82ef-4dc3-a85f-fef9c560a117"}},{"type":"ServiceResponse","id":"EID748388ea-a403-4762-a0d5-51cc1f31c9ff","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID748388ea-a403-4762-a0d5-51cc1f31c9ff"}},{"type":"Message","id":"EID6bc440f6-9ab7-4010-8b01-3d64c69b8093","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID6bc440f6-9ab7-4010-8b01-3d64c69b8093"}},{"type":"GetParameter","id":"EID2808b356-138d-4675-a188-8bb6083f4ca2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceResponse","id":"EIDbe4a5166-1e7c-42ac-b419-07449daa6a79","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDbe4a5166-1e7c-42ac-b419-07449daa6a79"}},{"type":"ServiceResponse","id":"EID4a37f1e5-a8ca-4777-b29b-da90137c4a2f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID4a37f1e5-a8ca-4777-b29b-da90137c4a2f"}},{"type":"ServiceResponse","id":"EID88d8d601-0f2d-4b55-bd9c-832d2551bdb3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID88d8d601-0f2d-4b55-bd9c-832d2551bdb3"}},{"type":"ServiceEndpoint","id":"EIDfd8fb0c6-2e4b-4109-b46d-5f8745fd19ae","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID1caa64c5-5dae-4785-bc67-c6758e3a1f2b","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID1caa64c5-5dae-4785-bc67-c6758e3a1f2b"}},{"type":"ServiceEndpoint","id":"EIDc2bad5f9-bd1a-497a-8e89-29a2ac8d35fc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"Message","id":"EIDb8237c72-eb93-4115-b540-2d9f4e9e5297","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDb8237c72-eb93-4115-b540-2d9f4e9e5297"}},{"type":"Message","id":"EID6d47bf4e-df58-4e92-afd1-850d8548dd0b","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID6d47bf4e-df58-4e92-afd1-850d8548dd0b"}},{"type":"ServiceResponse","id":"EID53765f3c-a614-4e0d-beaa-109ad3116fe1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID53765f3c-a614-4e0d-beaa-109ad3116fe1"}},{"type":"ServiceResponse","id":"EIDc87fc865-f639-4525-b12b-0ce60ae9a88c","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDc87fc865-f639-4525-b12b-0ce60ae9a88c"}},{"type":"GetParameter","id":"EID81c24427-9953-4618-adbc-3cd7e3d7469e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDa8e8a1fc-e2e4-467b-a4bc-e8f3f275a811","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDa8e8a1fc-e2e4-467b-a4bc-e8f3f275a811"}},{"type":"ServiceResponse","id":"EID96d76b6c-e124-472b-a631-7f2e5e3692d6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID96d76b6c-e124-472b-a631-7f2e5e3692d6"}},{"type":"ServiceEndpoint","id":"EIDc03d53ed-d748-4290-8907-f3e8ffc83d81","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID4221c08b-c0ba-4dcc-bc8b-7bfcf8f850c5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceResponse","id":"EID47b38fe1-3348-43e5-b827-ec4123cfbfb5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID47b38fe1-3348-43e5-b827-ec4123cfbfb5"}},{"type":"Message","id":"EID389e62a4-cf73-4e30-aa3e-88ae43e894cc","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID389e62a4-cf73-4e30-aa3e-88ae43e894cc"}},{"type":"ServiceResponse","id":"EID1d26b92e-fcd3-43c3-a3c2-aef98e72bdf8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID1d26b92e-fcd3-43c3-a3c2-aef98e72bdf8"}},{"type":"Message","id":"EIDa69ade0c-1105-49b0-a815-c6040af783c4","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDa69ade0c-1105-49b0-a815-c6040af783c4"}},{"type":"ServiceEndpoint","id":"EIDf6315fda-43a5-4f24-b3e9-aa45339e8a4a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"Message","id":"EIDb35ebba3-d8d4-4214-bedc-87ac71b5df8e","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDb35ebba3-d8d4-4214-bedc-87ac71b5df8e"}},{"type":"GetParameter","id":"EIDea39b155-863c-420c-b553-ae19b575500b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDa259b6ae-64ff-4ea8-9bcf-4e7e41f31494","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID0ef9f11c-62d2-4c43-8e15-8e51ce81bc2e","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID0ef9f11c-62d2-4c43-8e15-8e51ce81bc2e"}},{"type":"ServiceResponse","id":"EID75a14ee0-722c-45a7-a05f-aacb254eb263","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID75a14ee0-722c-45a7-a05f-aacb254eb263"}},{"type":"Message","id":"EID7e61ffa8-ff59-446c-8c6a-fa698de2f974","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID7e61ffa8-ff59-446c-8c6a-fa698de2f974"}},{"type":"ServiceEndpoint","id":"EID19981d09-f45a-4a46-8baf-d9f8aaf94a92","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID60a15487-1601-4d93-9da5-2b2f8f9f5fe6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EIDbc3b5636-4ae8-40bf-bbc8-98fbefadd1a5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"Message","id":"EID9283fc17-c9ba-4766-9f62-b8348702b510","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID9283fc17-c9ba-4766-9f62-b8348702b510"}},{"type":"GetParameter","id":"EID729c0176-de85-4bd8-9ee3-605a3f2bb935","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDe6be2da7-6fd5-4e35-9ebb-01ea320887a8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDe6be2da7-6fd5-4e35-9ebb-01ea320887a8"}},{"type":"GetParameter","id":"EID2bfa3dd8-7161-40ae-a517-9d7ca8fd4d4e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EID60dc1f1f-8d33-405b-9de2-4907978efb0d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID7a83b8ac-96e0-49cc-92e6-7daa568bebce","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID54996588-2ece-49c9-a0d0-4f64cc0b965d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID54996588-2ece-49c9-a0d0-4f64cc0b965d"}},{"type":"ServiceEndpoint","id":"EID8e18fd92-b55b-4cd7-b531-9c22d7911719","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID6b1357d5-7b19-4f9d-aec1-7aeccb38793e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID31456aa1-f510-473f-a273-056b9058a52d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDe074489d-3f61-4aad-b918-d62ea14b6e67","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID57d13b48-a8b0-43e6-a351-d4ba91ff07e0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EIDa0162a27-f821-4070-ae17-a0fc0944d1e0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EID1065a275-8adb-48c1-9174-609d09d81acc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceResponse","id":"EID39a100ab-9e4b-4ae5-ab78-8d499e8ca060","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID39a100ab-9e4b-4ae5-ab78-8d499e8ca060"}},{"type":"Message","id":"EID54e23311-0cf6-446c-bf60-5866f472f50a","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID54e23311-0cf6-446c-bf60-5866f472f50a"}},{"type":"ServiceResponse","id":"EID1ff6bb54-cd6b-4258-8dc4-4881e55223a5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID1ff6bb54-cd6b-4258-8dc4-4881e55223a5"}},{"type":"ServiceEndpoint","id":"EID3a795935-c05c-49fa-9beb-c3dbbeeb0ee8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDb7d401ec-bc24-4801-a6dc-e5355f17fd1f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDb7d401ec-bc24-4801-a6dc-e5355f17fd1f"}},{"type":"GetParameter","id":"EIDc95e8041-91ab-41be-b215-4e531006d555","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID12019ec6-424f-4137-baa9-0e647e68d481","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID12019ec6-424f-4137-baa9-0e647e68d481"}},{"type":"Message","id":"EID71cb958d-c2a1-4633-953d-1c33b34af37f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID71cb958d-c2a1-4633-953d-1c33b34af37f"}},{"type":"Message","id":"EID10f12cc3-fdce-4923-b1c6-ed97774865dc","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID10f12cc3-fdce-4923-b1c6-ed97774865dc"}},{"type":"ServiceResponse","id":"EID1edf1098-5ec8-4b07-829a-09dd0ccd6a2c","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID1edf1098-5ec8-4b07-829a-09dd0ccd6a2c"}},{"type":"Message","id":"EID72905aeb-50f6-45c2-aee3-e33ebfa05b01","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID72905aeb-50f6-45c2-aee3-e33ebfa05b01"}},{"type":"ServiceResponse","id":"EID6af432aa-a2a5-4c80-a13a-7de6fbd071db","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID6af432aa-a2a5-4c80-a13a-7de6fbd071db"}},{"type":"ServiceEndpoint","id":"EIDa5077368-10e3-404f-be29-59ac9eaf62ac","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID65a69331-ce59-4d2a-9007-9f41d180a037","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID73dc2bb5-caeb-4c33-b461-169e96ab3bbf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID34f4e8d7-4904-4c79-acf5-5a2078fba6b0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9kb3dubG9hZHMva3JtX21hcmllbmVyYXBwb3J0YWdlZWVuaGVkZW5fZXUyMDE4X2dwa2cuemlw"},{"type":"Message","id":"EID2e31dd76-b66c-4804-8d8c-86423cc96427","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID2e31dd76-b66c-4804-8d8c-86423cc96427"}},{"type":"ServiceEndpoint","id":"EIDaf400bae-9563-4d3a-a914-ce528890a27b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDec4b6515-6c8b-47a0-a652-4f3ae0f86fa9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDec4b6515-6c8b-47a0-a652-4f3ae0f86fa9"}},{"type":"ServiceResponse","id":"EIDd5c6caff-0a6a-47c0-ab95-e3e20a4b92e9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDd5c6caff-0a6a-47c0-ab95-e3e20a4b92e9"}},{"type":"LogFile","id":"EID07612069-65d8-4d50-a10b-b7ec29c7fd67","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID07612069-65d8-4d50-a10b-b7ec29c7fd67"}},{"type":"ServiceResponse","id":"EIDc2096aa8-8d47-489b-ab97-3ba15cf31dbf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDc2096aa8-8d47-489b-ab97-3ba15cf31dbf"}},{"type":"ServiceResponse","id":"EIDf2385f6b-4ace-4df8-8c54-cac4e5bab93d","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDf2385f6b-4ace-4df8-8c54-cac4e5bab93d"}},{"type":"GetParameter","id":"EID17b59e16-f2cc-404a-b501-668159be2cfd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDbc74b7a2-a54b-49f2-bdfe-e176fa6793f8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EID7254a548-9271-420a-ba6e-6479a95914cc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID60ad9a6a-bed1-4346-92e7-0577c8695dc3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9kb3dubG9hZHMva3JtX21hcmllbmVyYXBwb3J0YWdlZWVuaGVkZW5fZXUyMDE4X2dwa2cuemlw"},{"type":"Message","id":"EIDd4775525-bc6d-4605-ad81-948ee0f53fb2","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDd4775525-bc6d-4605-ad81-948ee0f53fb2"}},{"type":"GetParameter","id":"EIDb11bb39f-e882-423e-a470-e06fbdaa7e45","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EIDc95edd11-8646-4909-a03f-598810eca997","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EIDb327c045-a1a9-4b2b-bdaf-6da44f336fd4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EID4276e1b4-9093-4333-83b9-6c10285fa2dc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EIDf9c058c3-aedf-43d1-a0d8-ba849536b6d5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID8f844262-fc9b-47cc-aebc-6c966b654b25","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceResponse","id":"EID70c9239c-9851-4a0e-a587-0d7856c41ce1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID70c9239c-9851-4a0e-a587-0d7856c41ce1"}},{"type":"Message","id":"EIDdb66a232-b467-4060-a818-bab8fa268ae9","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDdb66a232-b467-4060-a818-bab8fa268ae9"}},{"type":"ServiceEndpoint","id":"EIDee481f1a-52d7-406e-9545-6b84b2619ecf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EID70fecea0-949d-40a0-b7fc-62efa3f5bd14","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID244a2c66-8573-48ce-8a78-9a96b931cf1a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDc5d8247a-e276-436b-8138-2896e5b31326","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDc5d8247a-e276-436b-8138-2896e5b31326"}},{"type":"ServiceEndpoint","id":"EID1cae2c94-05d9-4dfa-91d9-36e4e93a0ee0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID3b2b0f4a-ba8e-4f5f-9a87-b85d4754db11","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID3b2b0f4a-ba8e-4f5f-9a87-b85d4754db11"}},{"type":"GetParameter","id":"EID14bdc293-1448-4496-90a1-1188177a3269","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID4d69ec30-3a16-417a-a70d-87b6c546e6c5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID4d69ec30-3a16-417a-a70d-87b6c546e6c5"}},{"type":"Message","id":"EID9c56adeb-1150-4e6e-afd6-6de442590aef","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID9c56adeb-1150-4e6e-afd6-6de442590aef"}},{"type":"Message","id":"EIDd64183ae-8e4a-4b18-9aae-9f0b3ea2b58a","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDd64183ae-8e4a-4b18-9aae-9f0b3ea2b58a"}},{"type":"Message","id":"EID391cc2f3-633e-436e-b113-810c8308a30a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID391cc2f3-633e-436e-b113-810c8308a30a"}},{"type":"GetParameter","id":"EID332fa518-54e4-4e62-8d22-f0fa724e69b2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID06406a3d-1993-49b6-8a1e-80e2e9db0b93","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EID9b7f2a57-d6fa-42f6-ab4b-b7bb5e57e7ed","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDb4f6a2b3-b52c-4609-acef-1d7a1695a290","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDb4f6a2b3-b52c-4609-acef-1d7a1695a290"}},{"type":"Message","id":"EID695ea199-d7e6-4165-b18a-5410bbb97a02","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID695ea199-d7e6-4165-b18a-5410bbb97a02"}},{"type":"GetParameter","id":"EIDe223cc23-abba-4975-8279-b85c6e4c4bc2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID1e7f30c4-62dd-4154-a921-709263589bae","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID239b83b1-e4a9-4965-8424-6e73dfbafbe6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EIDae465e63-b291-4c10-bcd9-c7960a91996d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EIDf2d4b598-9970-4629-86a7-8dc8313c803a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"Message","id":"EIDafba3165-cacb-4972-a37b-9b6ea8169d31","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDafba3165-cacb-4972-a37b-9b6ea8169d31"}},{"type":"GetParameter","id":"EID556e612e-d9a8-4fe5-a5bc-9b6152646efa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EID355f90b6-5c3e-42ff-8159-cc2d791b4344","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID355f90b6-5c3e-42ff-8159-cc2d791b4344"}},{"type":"GetParameter","id":"EIDdecb3720-8e5e-4575-9dc8-bce0a9cc62d1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID0023bf77-e9fa-4232-8668-d4b8f36f4854","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID9d96cbb3-9783-4b02-b7f9-24c0101adba6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID9d96cbb3-9783-4b02-b7f9-24c0101adba6"}},{"type":"ServiceResponse","id":"EID0b3ab8bd-1e8a-45a3-b7b5-35817daf1c06","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID0b3ab8bd-1e8a-45a3-b7b5-35817daf1c06"}},{"type":"GetParameter","id":"EIDb5d6f769-5d36-4a0b-9d15-177a96110a19","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID37fd1c80-ea10-406f-bdb3-b87b20da54c5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID37fd1c80-ea10-406f-bdb3-b87b20da54c5"}},{"type":"GetParameter","id":"EIDc5b7df50-45a8-49db-8159-c04abc7e11f6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"GetParameter","id":"EIDc9bfd00b-e640-414d-a6e5-61f81c66d7ce","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDa836a029-a326-4da2-b33c-51026b2928f4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID3b495c29-f0cc-4194-b612-aed9666881f7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDdc51a8fa-0420-44d7-9e34-fdc2c59b392c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDcafb6092-0c3b-45a8-809c-b96c05e80dc5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EID281dba9a-44f2-4e51-963a-bb70366099c5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID20679dea-0f7e-4fe4-aca5-d8f750a5c860","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDbd1f6e44-c500-48b6-93ef-c3611d1390ad","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EIDf73a338c-71b8-435d-9241-0586cdaa29a8","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDf73a338c-71b8-435d-9241-0586cdaa29a8"}},{"type":"ServiceEndpoint","id":"EID9384e646-3276-4299-b405-e2a3d17a0ef4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"Message","id":"EIDb9b4760e-356e-46a4-b40a-346a90ff19c3","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDb9b4760e-356e-46a4-b40a-346a90ff19c3"}},{"type":"Message","id":"EID603ace79-af7f-4639-b1b5-c6dc4905ae70","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID603ace79-af7f-4639-b1b5-c6dc4905ae70"}},{"type":"ServiceResponse","id":"EID918010b5-1950-41c3-9011-f6c1d6722381","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID918010b5-1950-41c3-9011-f6c1d6722381"}},{"type":"Message","id":"EID151e1bb4-8744-4969-bec0-8592226fb66a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID151e1bb4-8744-4969-bec0-8592226fb66a"}},{"type":"ServiceResponse","id":"EIDd4a9a4ea-393b-441d-80ab-df08b05d6512","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDd4a9a4ea-393b-441d-80ab-df08b05d6512"}},{"type":"Message","id":"EID711253b5-7182-4ee7-b0b8-c4ebe451e6f1","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID711253b5-7182-4ee7-b0b8-c4ebe451e6f1"}},{"type":"ServiceEndpoint","id":"EID0ab69dd2-1081-4cce-bae7-c558ca7f24b0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9rcm1fbWFyaWVuZXJhcHBvcnRhZ2VlZW5oZWRlbl9ldTIwMTgueG1s"},{"type":"ServiceEndpoint","id":"EID82b6ce63-a4d0-4142-bd6c-3043626e9f9d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDe195566d-6fa5-4669-b2d5-f896e4ef8498","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EIDcbf73e5a-b084-4896-985d-c7d35b2a02a7","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDcbf73e5a-b084-4896-985d-c7d35b2a02a7"}},{"type":"ServiceResponse","id":"EIDbfdffb3e-4518-453c-94f4-1d2418bab2b3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDbfdffb3e-4518-453c-94f4-1d2418bab2b3"}},{"type":"Message","id":"EID1c340316-6771-4792-bbaf-a7c7900bc440","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID1c340316-6771-4792-bbaf-a7c7900bc440"}},{"type":"ServiceEndpoint","id":"EIDa4c73fa5-2487-4a62-adc9-3710652df4a7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID19a9f8b3-f011-40f8-9884-7644c481d77e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC82NDFhMGY0OC04NzJiLTQ0NzAtYjEzMC1lM2QyOGU2YmZkZmIvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID5aadfdfa-ac84-457e-b617-eaed50705b12","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID5aadfdfa-ac84-457e-b617-eaed50705b12"}},{"type":"ServiceEndpoint","id":"EID238d99dc-f2c3-4512-b08a-ba991e78379b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID6b5459a1-3e86-416d-ac79-88999562136a","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID6b5459a1-3e86-416d-ac79-88999562136a"}},{"type":"Message","id":"EID7a616120-105e-4eac-9f37-f94ac4ca5d3a","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID7a616120-105e-4eac-9f37-f94ac4ca5d3a"}},{"type":"Message","id":"EIDfe646561-97d8-4037-9c7c-70e93dda0605","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDfe646561-97d8-4037-9c7c-70e93dda0605"}},{"type":"ServiceResponse","id":"EIDfabe9a95-f740-4a70-965a-59a5489259a4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDfabe9a95-f740-4a70-965a-59a5489259a4"}},{"type":"GetParameter","id":"EID09ed0f02-20f0-49c8-8e56-411bd303cc2d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"Message","id":"EID54456a8e-8310-47cc-bf4b-37e9cbde0488","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID54456a8e-8310-47cc-bf4b-37e9cbde0488"}},{"type":"ServiceResponse","id":"EIDe6ddb51f-2413-49b4-93d5-73d32f936605","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDe6ddb51f-2413-49b4-93d5-73d32f936605"}},{"type":"ServiceEndpoint","id":"EID0882f527-2a40-4d86-b221-20ab7dd9b798","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3J3cy9rYWRlcnJpY2h0bGlqbm1hcmllbmVzdHJhdGVnaWUyMDE4L2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDa6590823-920b-489e-b8a8-5c039fed7e84","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDa6590823-920b-489e-b8a8-5c039fed7e84"}},{"type":"Message","id":"EIDf5cfead7-bfbd-41a2-98e4-b9489d69be1e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EIDf5cfead7-bfbd-41a2-98e4-b9489d69be1e"}},{"type":"Message","id":"EID4164d142-5c71-44fa-9342-1d049c568d47","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID1a15ad6b-4815-41bb-8c4a-b5b31530739d/Attachments/EID4164d142-5c71-44fa-9342-1d049c568d47"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:19:17Z","duration":23420,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:19:52.845 [print] EID4f012e38-dc60-460b-a097-34feedf71d05
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:19:52.846 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:19:52.846 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:19:52.846 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:19:52.846 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/4f012e38-dc60-460b-a097-34feedf71d05.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:19:52.846 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/4f012e38-dc60-460b-a097-34feedf71d05.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:19:52.846 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID4f012e38-dc60-460b-a097-34feedf71d05/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.004
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
13:19:52.852 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
13:19:52.853 [print] [
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* print sortedrefs 0.000
13:19:52.853 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1.554
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:19:16.130 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholetmaal/v2/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.553
13:19:16.131 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 301
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholetmaal/v2/wfs?request=GetCapabilities"}}}

13:19:17.684 response time in milliseconds: 1445.97
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:19:17 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","timestamp":"1603804757501","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/ienw/geluidskaartschipholetmaal/v2/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:19:17.684 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
37.829
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:17:54.776 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 8.725
13:17:54.776 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

13:18:03.498 response time in milliseconds: 7958.51
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:18:02 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:18:00 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/3e652bc8-818e-46bf-9f40-caa2a82d2172.json","testRuns":{"TestRun":{"id":"EID3e652bc8-818e-46bf-9f40-caa2a82d2172","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:17:57.529Z","testTasks":{"TestTask":{"id":"EIDda75ec54-2801-4d25-a4cf-c8a58ffdbdef","parent":{"ref":"EID3e652bc8-818e-46bf-9f40-caa2a82d2172"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID9acc06eb-9edb-4e98-a822-e76e4abfca19"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID3e652bc8-818e-46bf-9f40-caa2a82d2172/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID9acc06eb-9edb-4e98-a822-e76e4abfca19","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:17:55.213Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:17:56.153Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:18:03.501 [print] EID3e652bc8-818e-46bf-9f40-caa2a82d2172
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:18:03.502 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:18:03.502 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:18:03.502 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/3e652bc8-818e-46bf-9f40-caa2a82d2172.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:18:03.502 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID3e652bc8-818e-46bf-9f40-caa2a82d2172/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:18:03.502 [print] statuspath TestRuns/EID3e652bc8-818e-46bf-9f40-caa2a82d2172
* print 'progresspath ', progresspath 0.000
13:18:03.502 [print] progresspath  TestRuns/EID3e652bc8-818e-46bf-9f40-caa2a82d2172/progress
Given path progresspath 0.000
When method GET 0.562
13:18:03.504 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3e652bc8-818e-46bf-9f40-caa2a82d2172/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:04.064 response time in milliseconds: 559.38
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:18:03 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["27.10.2020 13:17:57 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:17:57 UTC 2020)","27.10.2020 13:17:57 - Resolving Executable Test Suite dependencies","27.10.2020 13:17:57 - Preparing 1 Test Task:","27.10.2020 13:17:57 -  TestTask 1 (da75ec54-2801-4d25-a4cf-c8a58ffdbdef)","27.10.2020 13:17:57 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:17:57 -  with parameters: ","27.10.2020 13:17:57 - etf.testcases = *","27.10.2020 13:17:57 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:17:57 - Setting state to CREATED","27.10.2020 13:17:57 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:00 - Starting TestRun.3e652bc8-818e-46bf-9f40-caa2a82d2172 at 2020-10-27T13:18:02Z","27.10.2020 13:18:02 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:02 - Project Properties: ","27.10.2020 13:18:02 - etf.testcases - * ","27.10.2020 13:18:02 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:18:02 - username -  ","27.10.2020 13:18:02 - authUser -  ","27.10.2020 13:18:02 - authMethod - basic ","27.10.2020 13:18:02 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:18:04.065 [print] {
  "val": "16",
  "max": "17",
  "log": [
    "27.10.2020 13:17:57 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:17:57 UTC 2020)",
    "27.10.2020 13:17:57 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:17:57 - Preparing 1 Test Task:",
    "27.10.2020 13:17:57 -  TestTask 1 (da75ec54-2801-4d25-a4cf-c8a58ffdbdef)",
    "27.10.2020 13:17:57 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:17:57 -  with parameters: ",
    "27.10.2020 13:17:57 - etf.testcases = *",
    "27.10.2020 13:17:57 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:17:57 - Setting state to CREATED",
    "27.10.2020 13:17:57 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:18:00 - Starting TestRun.3e652bc8-818e-46bf-9f40-caa2a82d2172 at 2020-10-27T13:18:02Z",
    "27.10.2020 13:18:02 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:18:02 - Project Properties: ",
    "27.10.2020 13:18:02 - etf.testcases - * ",
    "27.10.2020 13:18:02 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "27.10.2020 13:18:02 - username -  ",
    "27.10.2020 13:18:02 - authUser -  ",
    "27.10.2020 13:18:02 - authMethod - basic ",
    "27.10.2020 13:18:02 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 24.181
13:18:04.065 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3e652bc8-818e-46bf-9f40-caa2a82d2172/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:04.600 response time in milliseconds: 533.99
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:18:04 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["27.10.2020 13:17:57 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:17:57 UTC 2020)","27.10.2020 13:17:57 - Resolving Executable Test Suite dependencies","27.10.2020 13:17:57 - Preparing 1 Test Task:","27.10.2020 13:17:57 -  TestTask 1 (da75ec54-2801-4d25-a4cf-c8a58ffdbdef)","27.10.2020 13:17:57 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:17:57 -  with parameters: ","27.10.2020 13:17:57 - etf.testcases = *","27.10.2020 13:17:57 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:17:57 - Setting state to CREATED","27.10.2020 13:17:57 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:00 - Starting TestRun.3e652bc8-818e-46bf-9f40-caa2a82d2172 at 2020-10-27T13:18:02Z","27.10.2020 13:18:02 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:02 - Project Properties: ","27.10.2020 13:18:02 - etf.testcases - * ","27.10.2020 13:18:02 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:18:02 - username -  ","27.10.2020 13:18:02 - authUser -  ","27.10.2020 13:18:02 - authMethod - basic ","27.10.2020 13:18:02 - TestRunTask initialized"]}

13:18:04.600 retry condition not satisfied: response.val == response.max
13:18:04.600 sleeping before retry #1
13:18:09.601 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3e652bc8-818e-46bf-9f40-caa2a82d2172/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:10.131 response time in milliseconds: 529.84
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:18:10 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"73","max":"74","log":["27.10.2020 13:17:57 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:17:57 UTC 2020)","27.10.2020 13:17:57 - Resolving Executable Test Suite dependencies","27.10.2020 13:17:57 - Preparing 1 Test Task:","27.10.2020 13:17:57 -  TestTask 1 (da75ec54-2801-4d25-a4cf-c8a58ffdbdef)","27.10.2020 13:17:57 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:17:57 -  with parameters: ","27.10.2020 13:17:57 - etf.testcases = *","27.10.2020 13:17:57 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:17:57 - Setting state to CREATED","27.10.2020 13:17:57 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:00 - Starting TestRun.3e652bc8-818e-46bf-9f40-caa2a82d2172 at 2020-10-27T13:18:02Z","27.10.2020 13:18:02 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:02 - Project Properties: ","27.10.2020 13:18:02 - etf.testcases - * ","27.10.2020 13:18:02 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:18:02 - username -  ","27.10.2020 13:18:02 - authUser -  ","27.10.2020 13:18:02 - authMethod - basic ","27.10.2020 13:18:02 - TestRunTask initialized","27.10.2020 13:18:06 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:18:06 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:18:08 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027"]}

13:18:10.134 retry condition not satisfied: response.val == response.max
13:18:10.134 sleeping before retry #2
13:18:15.135 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3e652bc8-818e-46bf-9f40-caa2a82d2172/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:15.657 response time in milliseconds: 521.77
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:18:15 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["27.10.2020 13:17:57 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:17:57 UTC 2020)","27.10.2020 13:17:57 - Resolving Executable Test Suite dependencies","27.10.2020 13:17:57 - Preparing 1 Test Task:","27.10.2020 13:17:57 -  TestTask 1 (da75ec54-2801-4d25-a4cf-c8a58ffdbdef)","27.10.2020 13:17:57 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:17:57 -  with parameters: ","27.10.2020 13:17:57 - etf.testcases = *","27.10.2020 13:17:57 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:17:57 - Setting state to CREATED","27.10.2020 13:17:57 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:00 - Starting TestRun.3e652bc8-818e-46bf-9f40-caa2a82d2172 at 2020-10-27T13:18:02Z","27.10.2020 13:18:02 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:02 - Project Properties: ","27.10.2020 13:18:02 - etf.testcases - * ","27.10.2020 13:18:02 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:18:02 - username -  ","27.10.2020 13:18:02 - authUser -  ","27.10.2020 13:18:02 - authMethod - basic ","27.10.2020 13:18:02 - TestRunTask initialized","27.10.2020 13:18:06 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:18:06 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:18:08 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:18:10 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:18:10 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:18:10 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:10 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:10 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:11 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:11 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:18:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:11 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:11 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:11 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:18:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:12 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:12 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:12 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:18:12 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:18:12 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:12 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:18:12 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:14 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:14 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:18:14 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:14 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:18:15.665 retry condition not satisfied: response.val == response.max
13:18:15.665 sleeping before retry #3
13:18:20.666 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3e652bc8-818e-46bf-9f40-caa2a82d2172/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:21.218 response time in milliseconds: 552.29
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:18:21 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["27.10.2020 13:17:57 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:17:57 UTC 2020)","27.10.2020 13:17:57 - Resolving Executable Test Suite dependencies","27.10.2020 13:17:57 - Preparing 1 Test Task:","27.10.2020 13:17:57 -  TestTask 1 (da75ec54-2801-4d25-a4cf-c8a58ffdbdef)","27.10.2020 13:17:57 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:17:57 -  with parameters: ","27.10.2020 13:17:57 - etf.testcases = *","27.10.2020 13:17:57 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:17:57 - Setting state to CREATED","27.10.2020 13:17:57 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:00 - Starting TestRun.3e652bc8-818e-46bf-9f40-caa2a82d2172 at 2020-10-27T13:18:02Z","27.10.2020 13:18:02 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:02 - Project Properties: ","27.10.2020 13:18:02 - etf.testcases - * ","27.10.2020 13:18:02 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:18:02 - username -  ","27.10.2020 13:18:02 - authUser -  ","27.10.2020 13:18:02 - authMethod - basic ","27.10.2020 13:18:02 - TestRunTask initialized","27.10.2020 13:18:06 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:18:06 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:18:08 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:18:10 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:18:10 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:18:10 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:10 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:10 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:11 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:11 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:18:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:11 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:11 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:11 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:18:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:12 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:12 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:12 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:18:12 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:18:12 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:12 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:18:12 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:14 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:14 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:18:14 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:14 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:18:21.226 retry condition not satisfied: response.val == response.max
13:18:21.226 sleeping before retry #4
13:18:26.227 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3e652bc8-818e-46bf-9f40-caa2a82d2172/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:28.246 response time in milliseconds: 2018.17
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:18:28 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:18:28.246 retry condition satisfied
* print response 0.000
13:18:28.246 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 4.299
13:18:28.247 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3e652bc8-818e-46bf-9f40-caa2a82d2172
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:32.543 response time in milliseconds: 3342.52
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Cache-Control: public, max-age=120
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:18:31 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Last-Modified: Tue, 27 Oct 2020 13:18:28 GMT
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/3e652bc8-818e-46bf-9f40-caa2a82d2172.json","testRuns":{"TestRun":{"id":"EID3e652bc8-818e-46bf-9f40-caa2a82d2172","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:17:57.529Z","testTasks":{"TestTask":{"id":"EIDda75ec54-2801-4d25-a4cf-c8a58ffdbdef","parent":{"ref":"EID3e652bc8-818e-46bf-9f40-caa2a82d2172"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID9acc06eb-9edb-4e98-a822-e76e4abfca19"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EIDe0a1c243-b214-4c35-88a3-4c80582aff34"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID3e652bc8-818e-46bf-9f40-caa2a82d2172/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID9acc06eb-9edb-4e98-a822-e76e4abfca19","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:17:55.213Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:17:56.153Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EIDe0a1c243-b214-4c35-88a3-4c80582aff34","testObject":{"ref":"EID9acc06eb-9edb-4e98-a822-e76e4abfca19"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a3557d8-0175-1000-52b8-668bd7b3f842","testCaseResults":{"TestCaseResult":[{"id":"EID6a3557d8-0175-1000-699a-c022b3278882","testStepResults":{"TestStepResult":[{"id":"EID6a3557d8-0175-1000-7d30-52fa15c9196a","parent":{"ref":"EID6a3557d8-0175-1000-699a-c022b3278882"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:18:02Z","duration":17,"status":"PASSED"},{"id":"EID6a3557ea-0175-1000-554a-266a953248f3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3558ef-0175-1000-85ce-33f135c05055","parent":{"ref":"EID6a3557ea-0175-1000-554a-266a953248f3"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:18:02Z","duration":0,"status":"PASSED"},{"id":"EID6a3558ef-0175-1000-683c-8ad23e5aff6a","parent":{"ref":"EID6a3557ea-0175-1000-554a-266a953248f3"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:18:02Z","duration":0,"status":"PASSED"},{"id":"EID6a3558ef-0175-1000-ff2b-9b5aefafd6d4","parent":{"ref":"EID6a3557ea-0175-1000-554a-266a953248f3"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:18:02Z","duration":0,"status":"PASSED"},{"id":"EID6a3558ef-0175-1000-420f-66957a211fa5","parent":{"ref":"EID6a3557ea-0175-1000-554a-266a953248f3"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:18:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID697ce945-9e8c-4adf-a783-b0fff3a3290f"},{"ref":"EIDa11d78cb-a3fd-4e27-a5df-861e11b3fbb1"},{"ref":"EID36f1c972-8064-483b-b234-8d178314476d"}]},"parent":{"ref":"EID6a3557d8-0175-1000-699a-c022b3278882"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:18:02Z","duration":65,"status":"PASSED"}]},"parent":{"ref":"EID6a3557d8-0175-1000-52b8-668bd7b3f842"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:18:02Z","duration":293,"status":"PASSED"},{"id":"EID6a355909-0175-1000-de05-1d98494f3094","testStepResults":{"TestStepResult":{"id":"EID6a355909-0175-1000-322c-d3edaa85e403","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3559d4-0175-1000-bd67-5aa0b88a676d","parent":{"ref":"EID6a355909-0175-1000-322c-d3edaa85e403"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:18:02Z","duration":0,"status":"PASSED"},{"id":"EID6a3559d4-0175-1000-ae1f-b5e0664b53ee","parent":{"ref":"EID6a355909-0175-1000-322c-d3edaa85e403"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:18:02Z","duration":0,"status":"PASSED"},{"id":"EID6a3559d4-0175-1000-6a40-f56f7d1c38fc","parent":{"ref":"EID6a355909-0175-1000-322c-d3edaa85e403"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:18:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0439abe6-fab3-4ff2-99d1-dbbf040c27bc"},{"ref":"EID2edacfdf-508d-407b-aaed-1ed0e6cc6993"},{"ref":"EIDd4b5f28e-9f95-4163-a78b-cfa71afb1b3e"}]},"parent":{"ref":"EID6a355909-0175-1000-de05-1d98494f3094"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:18:02Z","duration":80,"status":"PASSED"}},"parent":{"ref":"EID6a3557d8-0175-1000-52b8-668bd7b3f842"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:18:02Z","duration":211,"status":"PASSED"}]},"parent":{"ref":"EIDe0a1c243-b214-4c35-88a3-4c80582aff34"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:18:02Z","duration":516,"status":"PASSED"},{"id":"EID6a3559dc-0175-1000-599c-18346678bd95","testCaseResults":{"TestCaseResult":[{"id":"EID6a3559dc-0175-1000-5412-1d9d6c25096e","testStepResults":{"TestStepResult":[{"id":"EID6a3559dc-0175-1000-075f-0bbe0c4096de","parent":{"ref":"EID6a3559dc-0175-1000-5412-1d9d6c25096e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:18:02Z","duration":80,"status":"PASSED"},{"id":"EID6a3559dc-0175-1000-10d8-8f4bc1bdaf9e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a355b2c-0175-1000-5279-82e3a9aef99b","parent":{"ref":"EID6a3559dc-0175-1000-10d8-8f4bc1bdaf9e"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:18:03Z","duration":0,"status":"PASSED"},{"id":"EID6a355b2c-0175-1000-aae1-2d45e4e26e62","parent":{"ref":"EID6a3559dc-0175-1000-10d8-8f4bc1bdaf9e"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:18:03Z","duration":0,"status":"PASSED"},{"id":"EID6a355b2c-0175-1000-d6cd-f25f9a472efb","parent":{"ref":"EID6a3559dc-0175-1000-10d8-8f4bc1bdaf9e"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:18:03Z","duration":0,"status":"PASSED"},{"id":"EID6a355b2c-0175-1000-ce16-99648303af22","parent":{"ref":"EID6a3559dc-0175-1000-10d8-8f4bc1bdaf9e"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:18:03Z","duration":0,"status":"PASSED"},{"id":"EID6a355b2c-0175-1000-4dc0-ba444029fe42","parent":{"ref":"EID6a3559dc-0175-1000-10d8-8f4bc1bdaf9e"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:18:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbba66cd2-34d4-4c87-8731-96c0f753ac7a"},{"ref":"EID6e0c858f-0235-4bbc-bf35-3abf98cafc82"},{"ref":"EID6c3d5f05-6889-4464-b966-f59bb71464ca"}]},"parent":{"ref":"EID6a3559dc-0175-1000-5412-1d9d6c25096e"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:18:02Z","duration":131,"status":"PASSED"}]},"parent":{"ref":"EID6a3559dc-0175-1000-599c-18346678bd95"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:18:02Z","duration":336,"status":"PASSED"},{"id":"EID6a355b2c-0175-1000-a1f6-6f34f74f51a9","testStepResults":{"TestStepResult":[{"id":"EID6a355b2c-0175-1000-d597-9b3e3dc5b2bc","attachments":{"attachment":[{"ref":"EID6c2ab89a-0a32-46ba-9660-fc75a7a605a6"},{"ref":"EIDb838704c-0d5e-4550-87c0-c5003efa30a9"}]},"parent":{"ref":"EID6a355b2c-0175-1000-a1f6-6f34f74f51a9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:18:03Z","duration":189,"status":"PASSED"},{"id":"EID6a355cab-0175-1000-93cd-04d79f9ea53f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a355dd1-0175-1000-df04-bc1d0eac0cef","parent":{"ref":"EID6a355cab-0175-1000-93cd-04d79f9ea53f"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:18:03Z","duration":0,"status":"PASSED"},{"id":"EID6a355dd1-0175-1000-1471-d629eb225ef7","parent":{"ref":"EID6a355cab-0175-1000-93cd-04d79f9ea53f"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:18:03Z","duration":0,"status":"PASSED"},{"id":"EID6a355dd1-0175-1000-d91e-03943339930f","parent":{"ref":"EID6a355cab-0175-1000-93cd-04d79f9ea53f"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:18:03Z","duration":0,"status":"PASSED"},{"id":"EID6a355dd1-0175-1000-43bc-fe2386a72144","parent":{"ref":"EID6a355cab-0175-1000-93cd-04d79f9ea53f"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:18:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID66f1cbcf-4d7b-4ae1-8341-0339d9c27587"},{"ref":"EIDbb983e1a-6d5f-41c6-bbfe-447558223571"},{"ref":"EIDbdd10cf6-a6ce-424c-a509-4449369df797"}]},"parent":{"ref":"EID6a355b2c-0175-1000-a1f6-6f34f74f51a9"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:18:03Z","duration":77,"status":"PASSED"}]},"parent":{"ref":"EID6a3559dc-0175-1000-599c-18346678bd95"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:18:03Z","duration":677,"status":"PASSED"},{"id":"EID6a355dd1-0175-1000-f0c9-ca3bed7cf4b6","testStepResults":{"TestStepResult":[{"id":"EID6a355dd1-0175-1000-4490-6284d4e268d2","attachments":{"attachment":[{"ref":"EIDc687d230-32eb-4a09-b4a4-ad2688b43c97"},{"ref":"EID68091aa4-035b-48e8-aed8-1b3d320d1f96"}]},"parent":{"ref":"EID6a355dd1-0175-1000-f0c9-ca3bed7cf4b6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:18:03Z","duration":283,"status":"PASSED"},{"id":"EID6a355f21-0175-1000-91b6-28df798475d4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35602c-0175-1000-f4d5-75adb7e0f293","parent":{"ref":"EID6a355f21-0175-1000-91b6-28df798475d4"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:18:04Z","duration":0,"status":"PASSED"},{"id":"EID6a35602c-0175-1000-cc80-66f3532294e3","parent":{"ref":"EID6a355f21-0175-1000-91b6-28df798475d4"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:18:04Z","duration":0,"status":"PASSED"},{"id":"EID6a35602c-0175-1000-9f7a-b2ccc0acef17","parent":{"ref":"EID6a355f21-0175-1000-91b6-28df798475d4"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:18:04Z","duration":0,"status":"PASSED"},{"id":"EID6a35602c-0175-1000-1c06-4d628e9a605f","parent":{"ref":"EID6a355f21-0175-1000-91b6-28df798475d4"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:18:04Z","duration":0,"status":"PASSED"},{"id":"EID6a35602c-0175-1000-f18a-383de4d39720","parent":{"ref":"EID6a355f21-0175-1000-91b6-28df798475d4"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:18:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4049574e-27e7-4030-8494-bb274f710cdd"},{"ref":"EID1ed6d794-9e63-4f5e-b36d-e921e639e2fd"},{"ref":"EID0c47fe0a-44f0-485e-88fb-870c136ba853"}]},"parent":{"ref":"EID6a355dd1-0175-1000-f0c9-ca3bed7cf4b6"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:18:04Z","duration":45,"status":"PASSED"}]},"parent":{"ref":"EID6a3559dc-0175-1000-599c-18346678bd95"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:18:03Z","duration":604,"status":"PASSED"},{"id":"EID6a35602d-0175-1000-0333-61954bb72f75","testStepResults":{"TestStepResult":[{"id":"EID6a35602d-0175-1000-a925-242d73d6f575","attachments":{"attachment":[{"ref":"EID140b4829-2855-46ff-9a2c-13afe3654d0b"},{"ref":"EIDcb825264-35d9-4266-820e-cca1cf9581f3"}]},"parent":{"ref":"EID6a35602d-0175-1000-0333-61954bb72f75"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:18:04Z","duration":253,"status":"PASSED"},{"id":"EID6a35615a-0175-1000-b138-4ca792dab1fa","parent":{"ref":"EID6a35602d-0175-1000-0333-61954bb72f75"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:18:04Z","duration":0,"status":"PASSED"},{"id":"EID6a35615a-0175-1000-a3c5-977eda11f9f6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a356238-0175-1000-d43a-f2fd64c78b9e","parent":{"ref":"EID6a35615a-0175-1000-a3c5-977eda11f9f6"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:18:04Z","duration":0,"status":"PASSED"},{"id":"EID6a356238-0175-1000-cae3-82f1c86229f0","parent":{"ref":"EID6a35615a-0175-1000-a3c5-977eda11f9f6"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:18:04Z","duration":0,"status":"PASSED"},{"id":"EID6a356238-0175-1000-5671-fff8cf9dee60","parent":{"ref":"EID6a35615a-0175-1000-a3c5-977eda11f9f6"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:18:04Z","duration":0,"status":"PASSED"},{"id":"EID6a356238-0175-1000-f136-a282294b81b2","parent":{"ref":"EID6a35615a-0175-1000-a3c5-977eda11f9f6"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:18:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd6fa6ea3-c3f8-476a-a464-c912dfac2726"},{"ref":"EID995685b9-b96f-4a60-b35f-94075bbf547e"},{"ref":"EID5935c6c5-7c9f-4ee4-ad8c-f1231e64ee04"}]},"parent":{"ref":"EID6a35602d-0175-1000-0333-61954bb72f75"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:18:04Z","duration":62,"status":"PASSED"},{"id":"EID6a356238-0175-1000-4786-ea0788e2e844","attachments":{"attachment":{"ref":"EIDe98ce115-1e42-4407-91c1-3fa9d1b36622"}},"parent":{"ref":"EID6a35602d-0175-1000-0333-61954bb72f75"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:18:04Z","duration":3,"status":"PASSED"},{"id":"EID6a356248-0175-1000-b192-4b0e4a805b60","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a356355-0175-1000-4845-b2e3e4c25844","parent":{"ref":"EID6a356248-0175-1000-b192-4b0e4a805b60"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:18:05Z","duration":0,"status":"PASSED"},{"id":"EID6a356355-0175-1000-60fd-ee3b46006f06","parent":{"ref":"EID6a356248-0175-1000-b192-4b0e4a805b60"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:18:05Z","duration":0,"status":"PASSED"},{"id":"EID6a356355-0175-1000-9151-e8164146be83","parent":{"ref":"EID6a356248-0175-1000-b192-4b0e4a805b60"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:18:05Z","duration":0,"status":"PASSED"},{"id":"EID6a356355-0175-1000-e277-7897cd9f3fef","parent":{"ref":"EID6a356248-0175-1000-b192-4b0e4a805b60"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:18:05Z","duration":0,"status":"PASSED"},{"id":"EID6a356355-0175-1000-030c-a7bbd0415bc8","parent":{"ref":"EID6a356248-0175-1000-b192-4b0e4a805b60"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:18:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3aa6aed2-7ece-4b5c-81a8-488ebd13ff8f"},{"ref":"EID0c71cf86-fd97-48c7-89f5-728b4b16d26b"},{"ref":"EID7916e406-cb7e-472d-8222-6af5c5f97100"}]},"parent":{"ref":"EID6a35602d-0175-1000-0333-61954bb72f75"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:18:04Z","duration":44,"status":"PASSED"}]},"parent":{"ref":"EID6a3559dc-0175-1000-599c-18346678bd95"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:18:04Z","duration":808,"status":"PASSED"},{"id":"EID6a356355-0175-1000-c1fa-ee0367f38b37","testStepResults":{"TestStepResult":[{"id":"EID6a356355-0175-1000-7d4f-ad8d77505429","attachments":{"attachment":[{"ref":"EID84da4b2e-4f63-44b5-bc7f-e4ed05044381"},{"ref":"EIDf1565a7e-07d1-4838-87ab-a027ff0242e3"}]},"parent":{"ref":"EID6a356355-0175-1000-c1fa-ee0367f38b37"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:18:05Z","duration":166,"status":"PASSED"},{"id":"EID6a356442-0175-1000-303c-e84a23b68b9f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a356563-0175-1000-355d-ac199a17c906","parent":{"ref":"EID6a356442-0175-1000-303c-e84a23b68b9f"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:18:05Z","duration":0,"status":"PASSED"},{"id":"EID6a356563-0175-1000-ef3b-dc140fb326a0","parent":{"ref":"EID6a356442-0175-1000-303c-e84a23b68b9f"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:18:05Z","duration":0,"status":"PASSED"},{"id":"EID6a356563-0175-1000-8fa8-76559a9e1e39","parent":{"ref":"EID6a356442-0175-1000-303c-e84a23b68b9f"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:18:05Z","duration":0,"status":"PASSED"},{"id":"EID6a356563-0175-1000-c3a6-4801fed256c2","parent":{"ref":"EID6a356442-0175-1000-303c-e84a23b68b9f"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:18:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe542c4f1-793d-4812-af38-b5203ac5c35d"},{"ref":"EIDea98e1c6-4ff7-4af5-ad59-d9719980ff5d"},{"ref":"EID45336194-07b1-48c1-87bb-c6e2aaea2602"}]},"parent":{"ref":"EID6a356355-0175-1000-c1fa-ee0367f38b37"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:18:05Z","duration":132,"status":"PASSED"}]},"parent":{"ref":"EID6a3559dc-0175-1000-599c-18346678bd95"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:18:05Z","duration":534,"status":"PASSED"},{"id":"EID6a35656b-0175-1000-9e11-bd57ae0ade8b","testStepResults":{"TestStepResult":[{"id":"EID6a35656c-0175-1000-be52-32107ad3672d","attachments":{"attachment":[{"ref":"EID1ed02d36-08a3-4e9b-a6b3-971cd3640d33"},{"ref":"EID4f882a43-1ae4-433c-a0e8-517228dd243e"}]},"parent":{"ref":"EID6a35656b-0175-1000-9e11-bd57ae0ade8b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:18:05Z","duration":146,"status":"PASSED"},{"id":"EID6a356631-0175-1000-4253-665e040af369","parent":{"ref":"EID6a35656b-0175-1000-9e11-bd57ae0ade8b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:18:05Z","duration":0,"status":"PASSED"},{"id":"EID6a356631-0175-1000-7de4-97414a13d480","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3566f9-0175-1000-d388-bd14d41423d7","parent":{"ref":"EID6a356631-0175-1000-7de4-97414a13d480"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:18:06Z","duration":0,"status":"PASSED"},{"id":"EID6a3566f9-0175-1000-198d-b17aaeb3e6e1","parent":{"ref":"EID6a356631-0175-1000-7de4-97414a13d480"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:18:06Z","duration":0,"status":"PASSED"},{"id":"EID6a3566f9-0175-1000-45a2-061588ed0ea3","parent":{"ref":"EID6a356631-0175-1000-7de4-97414a13d480"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:18:06Z","duration":0,"status":"PASSED"},{"id":"EID6a3566f9-0175-1000-94a9-37aef4a25954","parent":{"ref":"EID6a356631-0175-1000-7de4-97414a13d480"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:18:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd5f100dd-7a85-420c-8582-4e5c6edc24c4"},{"ref":"EID98190599-5f45-4a20-bec2-a373ced57e7c"},{"ref":"EIDefb75daa-37ad-4f1f-93f0-62bb6078f666"}]},"parent":{"ref":"EID6a35656b-0175-1000-9e11-bd57ae0ade8b"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:18:05Z","duration":68,"status":"PASSED"},{"id":"EID6a356702-0175-1000-3620-35b4477e13de","attachments":{"attachment":{"ref":"EIDef5c361b-6ac1-4769-a907-d47bddbc7579"}},"parent":{"ref":"EID6a35656b-0175-1000-9e11-bd57ae0ade8b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:18:06Z","duration":3,"status":"PASSED"},{"id":"EID6a356715-0175-1000-c65f-fc3c01eaa250","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3568a8-0175-1000-f30e-cef47542e188","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a356715-0175-1000-c65f-fc3c01eaa250"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:18:06Z","duration":27,"status":"FAILED"},{"id":"EID6a3568c3-0175-1000-6a5a-8d953e46b18f","parent":{"ref":"EID6a356715-0175-1000-c65f-fc3c01eaa250"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:18:06Z","duration":0,"status":"PASSED"},{"id":"EID6a3568c3-0175-1000-dc0e-2edba3fb978a","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6a356715-0175-1000-c65f-fc3c01eaa250"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:18:06Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDb91c7794-cc14-476a-a8eb-333ec17b85cf"},{"ref":"EIDbf8f360f-6a2f-4028-b025-b92a3214f7f3"},{"ref":"EIDf6f62c84-a970-426c-b14e-3f01ad35a543"}]},"parent":{"ref":"EID6a35656b-0175-1000-9e11-bd57ae0ade8b"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:18:06Z","duration":336,"status":"FAILED"}]},"parent":{"ref":"EID6a3559dc-0175-1000-599c-18346678bd95"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:18:05Z","duration":856,"status":"FAILED"},{"id":"EID6a3568c3-0175-1000-5e6a-bd2035ae3725","testStepResults":{"TestStepResult":[{"id":"EID6a3568c3-0175-1000-31a0-c7ef8eb7b6e8","attachments":{"attachment":[{"ref":"EIDc3df49d1-cbac-44ac-a1e4-37d56db593bd"},{"ref":"EID90a67765-ff40-4efb-afd9-f56d9f7c9944"}]},"parent":{"ref":"EID6a3568c3-0175-1000-5e6a-bd2035ae3725"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:18:06Z","duration":272,"status":"PASSED"},{"id":"EID6a3569ff-0175-1000-cf0c-306112aac7d4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a356b00-0175-1000-1912-11f93f445036","parent":{"ref":"EID6a3569ff-0175-1000-cf0c-306112aac7d4"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:18:07Z","duration":0,"status":"PASSED"},{"id":"EID6a356b00-0175-1000-8ffa-605741d9729e","parent":{"ref":"EID6a3569ff-0175-1000-cf0c-306112aac7d4"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:18:07Z","duration":0,"status":"PASSED"},{"id":"EID6a356b00-0175-1000-e376-320855aa254b","parent":{"ref":"EID6a3569ff-0175-1000-cf0c-306112aac7d4"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:18:07Z","duration":0,"status":"PASSED"},{"id":"EID6a356b00-0175-1000-091c-ab25e5779b9a","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a3569ff-0175-1000-cf0c-306112aac7d4"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:18:07Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID8d888337-b4f6-4840-ac85-7643ca4ef499"},{"ref":"EIDdec6ff40-0852-41c3-97f8-0701a28bb30a"},{"ref":"EID77acaa5b-8db6-4059-9d23-85a7130ce566"}]},"parent":{"ref":"EID6a3568c3-0175-1000-5e6a-bd2035ae3725"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:18:06Z","duration":118,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a3559dc-0175-1000-599c-18346678bd95"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:18:06Z","duration":573,"status":"PASSED_MANUAL"},{"id":"EID6a356b00-0175-1000-60ad-9eba0cffb234","testStepResults":{"TestStepResult":{"id":"EID6a356b09-0175-1000-d0ef-5bf4ef62300b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a356c20-0175-1000-9448-44bc749e516b","parent":{"ref":"EID6a356b09-0175-1000-d0ef-5bf4ef62300b"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:18:07Z","duration":0,"status":"PASSED"},{"id":"EID6a356c20-0175-1000-3e9a-cd18cecb87ae","parent":{"ref":"EID6a356b09-0175-1000-d0ef-5bf4ef62300b"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:18:07Z","duration":0,"status":"PASSED"},{"id":"EID6a356c20-0175-1000-a5d7-ef915a08ef49","parent":{"ref":"EID6a356b09-0175-1000-d0ef-5bf4ef62300b"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:18:07Z","duration":0,"status":"PASSED"},{"id":"EID6a356c20-0175-1000-4d58-08723e5d8752","parent":{"ref":"EID6a356b09-0175-1000-d0ef-5bf4ef62300b"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:18:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDaf4e257f-8e0e-4bc5-b394-58f3f4393091"},{"ref":"EID58789b49-6093-43e8-9437-7b3719000eb7"},{"ref":"EID7ea397a2-4f70-4456-8ac4-1a9fc7e26e79"}]},"parent":{"ref":"EID6a356b00-0175-1000-60ad-9eba0cffb234"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:18:07Z","duration":128,"status":"PASSED"}},"parent":{"ref":"EID6a3559dc-0175-1000-599c-18346678bd95"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:18:07Z","duration":289,"status":"PASSED"},{"id":"EID6a356c21-0175-1000-88f9-fa9231c600b8","testStepResults":{"TestStepResult":{"id":"EID6a356c21-0175-1000-1ad4-8a155cc2d8ae","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a356d21-0175-1000-075c-8e358355b12c","parent":{"ref":"EID6a356c21-0175-1000-1ad4-8a155cc2d8ae"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:18:07Z","duration":0,"status":"PASSED"},{"id":"EID6a356d21-0175-1000-013d-092b5deb4b6e","parent":{"ref":"EID6a356c21-0175-1000-1ad4-8a155cc2d8ae"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:18:07Z","duration":0,"status":"PASSED"},{"id":"EID6a356d21-0175-1000-8083-ed92c1887bd3","parent":{"ref":"EID6a356c21-0175-1000-1ad4-8a155cc2d8ae"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:18:07Z","duration":0,"status":"PASSED"},{"id":"EID6a356d21-0175-1000-d5b1-6b17ac0cb38e","parent":{"ref":"EID6a356c21-0175-1000-1ad4-8a155cc2d8ae"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:18:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe3e59497-80a3-4d91-bbb9-5418c4e818ef"},{"ref":"EIDb653e115-de4f-4feb-854c-8204a03416fe"},{"ref":"EIDf2abc7d2-b0a9-4c63-be4c-4624272d366a"}]},"parent":{"ref":"EID6a356c21-0175-1000-88f9-fa9231c600b8"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:18:07Z","duration":115,"status":"PASSED"}},"parent":{"ref":"EID6a3559dc-0175-1000-599c-18346678bd95"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:18:07Z","duration":256,"status":"PASSED"},{"id":"EID6a356d22-0175-1000-8c58-98244c09a40a","testStepResults":{"TestStepResult":{"id":"EID6a356d22-0175-1000-9b62-44deada2d8eb","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EID55f4d003-8555-4956-ac52-290d97b0912d"},{"ref":"EIDe7396c5b-e81f-4640-9aad-fc0b1786b1ea"},{"ref":"EID828a68ef-e935-4ef4-8536-8c953d352e5f"},{"ref":"EIDd036f65a-41ce-43ef-9922-b9a44cd982ef"},{"ref":"EID4135a175-1261-4d0c-9652-49870cd7cd75"},{"ref":"EID6693cc20-08c9-4133-8ef8-087130d88242"},{"ref":"EID044b19d7-8ea5-48ae-85da-56152206cfa3"},{"ref":"EID572cc39d-8c8c-43b4-802c-9a14e01b0e86"},{"ref":"EIDd40785bc-11eb-4ae2-ad1c-e6faae832477"}]},"parent":{"ref":"EID6a356d22-0175-1000-8c58-98244c09a40a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:18:07Z","duration":588,"status":"SKIPPED"}},"parent":{"ref":"EID6a3559dc-0175-1000-599c-18346678bd95"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:18:07Z","duration":752,"status":"SKIPPED"},{"id":"EID6a357012-0175-1000-6ecf-43cb8c344113","testStepResults":{"TestStepResult":{"id":"EID6a357012-0175-1000-14ba-8ec3dec64c17","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3570b2-0175-1000-f087-f31a9d80d105","parent":{"ref":"EID6a357012-0175-1000-14ba-8ec3dec64c17"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:18:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3570b2-0175-1000-fcfe-6e31d95b346c","parent":{"ref":"EID6a357012-0175-1000-14ba-8ec3dec64c17"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:18:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3570b2-0175-1000-3a51-abced4448703","parent":{"ref":"EID6a357012-0175-1000-14ba-8ec3dec64c17"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:18:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3570b2-0175-1000-77f2-39def6166b63","parent":{"ref":"EID6a357012-0175-1000-14ba-8ec3dec64c17"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:18:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID91ac6e4b-8981-40f4-bfd0-8c88dd38c40f"},{"ref":"EID5775b644-24d5-47a8-8212-c11065923aef"},{"ref":"EIDb68ab6c3-0e45-46ae-8b21-5f652c777696"}]},"parent":{"ref":"EID6a357012-0175-1000-6ecf-43cb8c344113"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:18:08Z","duration":41,"status":"PASSED"}},"parent":{"ref":"EID6a3559dc-0175-1000-599c-18346678bd95"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:18:08Z","duration":160,"status":"PASSED"},{"id":"EID6a3570b2-0175-1000-0454-919c4b5ac8b0","testStepResults":{"TestStepResult":{"id":"EID6a3570b2-0175-1000-e8ab-1c2ca1687926","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3571ba-0175-1000-0d7c-692eade48ee1","parent":{"ref":"EID6a3570b2-0175-1000-e8ab-1c2ca1687926"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:18:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3571ba-0175-1000-06dc-f7d368434663","parent":{"ref":"EID6a3570b2-0175-1000-e8ab-1c2ca1687926"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:18:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3571ba-0175-1000-f0d9-c76fecd09d94","parent":{"ref":"EID6a3570b2-0175-1000-e8ab-1c2ca1687926"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:18:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3571ba-0175-1000-b90f-72bc4aa89762","parent":{"ref":"EID6a3570b2-0175-1000-e8ab-1c2ca1687926"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:18:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3571ba-0175-1000-1d50-7106e39ac721","parent":{"ref":"EID6a3570b2-0175-1000-e8ab-1c2ca1687926"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:18:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3571ba-0175-1000-1c5e-4b2d8a3ca459","parent":{"ref":"EID6a3570b2-0175-1000-e8ab-1c2ca1687926"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:18:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID843fffcb-7ebc-4428-bbfd-9ca3a199ebd8"},{"ref":"EIDed3f3ae6-1f4e-4921-8773-ecb7fedbad43"},{"ref":"EID3fe4e6c7-01a4-43d4-b72d-0f60970bc0cf"}]},"parent":{"ref":"EID6a3570b2-0175-1000-0454-919c4b5ac8b0"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:18:08Z","duration":91,"status":"PASSED"}},"parent":{"ref":"EID6a3559dc-0175-1000-599c-18346678bd95"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:18:08Z","duration":264,"status":"PASSED"},{"id":"EID6a3571ba-0175-1000-c44d-ae21fbdfaeaf","testStepResults":{"TestStepResult":{"id":"EID6a3571ba-0175-1000-c607-5b2f02f962ff","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3572fe-0175-1000-dea9-96743745bde9","parent":{"ref":"EID6a3571ba-0175-1000-c607-5b2f02f962ff"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:18:09Z","duration":0,"status":"PASSED"},{"id":"EID6a3572fe-0175-1000-e24a-ee2308d4555e","parent":{"ref":"EID6a3571ba-0175-1000-c607-5b2f02f962ff"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:18:09Z","duration":0,"status":"PASSED"},{"id":"EID6a3572fe-0175-1000-0782-9980321341f0","parent":{"ref":"EID6a3571ba-0175-1000-c607-5b2f02f962ff"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:18:09Z","duration":0,"status":"PASSED"},{"id":"EID6a3572fe-0175-1000-7549-4cb8bff1f1ed","parent":{"ref":"EID6a3571ba-0175-1000-c607-5b2f02f962ff"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:18:09Z","duration":0,"status":"PASSED"},{"id":"EID6a3572fe-0175-1000-8412-c71669d4e392","parent":{"ref":"EID6a3571ba-0175-1000-c607-5b2f02f962ff"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:18:09Z","duration":0,"status":"PASSED"},{"id":"EID6a3572fe-0175-1000-e7d2-a3083b1ef8dd","parent":{"ref":"EID6a3571ba-0175-1000-c607-5b2f02f962ff"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:18:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc0308e97-bc1b-44bc-bcab-38ddd7ef36c8"},{"ref":"EIDb353bba7-f70f-4575-89c0-fe3076a252a7"},{"ref":"EID919d3aa6-f52c-4945-8381-73df7c0fc639"}]},"parent":{"ref":"EID6a3571ba-0175-1000-c44d-ae21fbdfaeaf"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:18:08Z","duration":144,"status":"PASSED"}},"parent":{"ref":"EID6a3559dc-0175-1000-599c-18346678bd95"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:18:08Z","duration":325,"status":"PASSED"},{"id":"EID6a3572ff-0175-1000-c172-9c1d89f6eebc","testStepResults":{"TestStepResult":{"id":"EID6a3572ff-0175-1000-d1cc-a4f43ef94ab3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3573f0-0175-1000-4635-579297671d2d","parent":{"ref":"EID6a3572ff-0175-1000-d1cc-a4f43ef94ab3"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:18:09Z","duration":0,"status":"PASSED"},{"id":"EID6a3573f0-0175-1000-e023-94d60cb71416","parent":{"ref":"EID6a3572ff-0175-1000-d1cc-a4f43ef94ab3"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:18:09Z","duration":0,"status":"PASSED"},{"id":"EID6a3573f0-0175-1000-3a07-1bd2637bd86c","parent":{"ref":"EID6a3572ff-0175-1000-d1cc-a4f43ef94ab3"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:18:09Z","duration":0,"status":"PASSED"},{"id":"EID6a3573f0-0175-1000-eb72-905bd71462e9","parent":{"ref":"EID6a3572ff-0175-1000-d1cc-a4f43ef94ab3"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:18:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb76dc2e9-d17e-447c-86a5-d3a75de6c79c"},{"ref":"EID755e1187-0bb3-4924-a15d-d959742bb102"},{"ref":"EIDba691cbe-70df-406f-b707-acb4ce5b06e7"}]},"parent":{"ref":"EID6a3572ff-0175-1000-c172-9c1d89f6eebc"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:18:09Z","duration":53,"status":"PASSED"}},"parent":{"ref":"EID6a3559dc-0175-1000-599c-18346678bd95"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:18:09Z","duration":241,"status":"PASSED"},{"id":"EID6a3573f0-0175-1000-6935-6014c0b926fc","testStepResults":{"TestStepResult":[{"id":"EID6a3573f0-0175-1000-20e9-47ab9bdc789c","attachments":{"attachment":[{"ref":"EID41903ef4-fe73-42cf-9cd5-978ca7343447"},{"ref":"EIDf22f9779-cb06-407c-8dcb-7c3dd4fe3730"},{"ref":"EIDe67b55f3-d646-493c-8c64-b5dc68bd8e26"},{"ref":"EIDa6ced18d-543c-4435-ad6f-71adabc8a7f5"}]},"parent":{"ref":"EID6a3573f0-0175-1000-6935-6014c0b926fc"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:18:09Z","duration":471,"status":"PASSED"},{"id":"EID6a357613-0175-1000-018e-763908dab8cd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a357733-0175-1000-2eb3-82cebe056dbf","parent":{"ref":"EID6a357613-0175-1000-018e-763908dab8cd"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a357733-0175-1000-298d-28c6ce0dc6f4","parent":{"ref":"EID6a357613-0175-1000-018e-763908dab8cd"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a357733-0175-1000-0a89-194d6ca9fad7","parent":{"ref":"EID6a357613-0175-1000-018e-763908dab8cd"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a357733-0175-1000-3e91-b53138bcba9e","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6a357613-0175-1000-018e-763908dab8cd"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID8143a302-657c-4a6d-8c38-ea9de6144c0c"},{"ref":"EIDcf39bad9-a7e8-4b0d-b489-16b654f6f297"},{"ref":"EIDb29d2567-8529-46e2-8ffc-edd7ce0303ba"}]},"parent":{"ref":"EID6a3573f0-0175-1000-6935-6014c0b926fc"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:18:09Z","duration":62,"status":"FAILED"}]},"parent":{"ref":"EID6a3559dc-0175-1000-599c-18346678bd95"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:18:09Z","duration":835,"status":"FAILED"},{"id":"EID6a357734-0175-1000-5a53-40133b967a75","testStepResults":{"TestStepResult":{"id":"EID6a357734-0175-1000-bb39-a65af2f9cf42","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a357829-0175-1000-1e3e-519d3fdb7883","parent":{"ref":"EID6a357734-0175-1000-bb39-a65af2f9cf42"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a35782a-0175-1000-07fc-535d69b52415","parent":{"ref":"EID6a357734-0175-1000-bb39-a65af2f9cf42"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a35782a-0175-1000-b75d-7450072962e1","parent":{"ref":"EID6a357734-0175-1000-bb39-a65af2f9cf42"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a35782a-0175-1000-4e4a-06871dbdf0c3","parent":{"ref":"EID6a357734-0175-1000-bb39-a65af2f9cf42"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd8772dbc-007d-4821-9b1c-ecb1c6313723"},{"ref":"EID10fc735e-71f4-48e9-b958-86dd537e6a88"},{"ref":"EID69ef66b1-6aa5-4713-9a38-4bfd135ffddb"}]},"parent":{"ref":"EID6a357734-0175-1000-5a53-40133b967a75"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:18:10Z","duration":79,"status":"PASSED"}},"parent":{"ref":"EID6a3559dc-0175-1000-599c-18346678bd95"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:18:10Z","duration":246,"status":"PASSED"},{"id":"EID6a35782a-0175-1000-2877-c32730de2f30","testStepResults":{"TestStepResult":[{"id":"EID6a35782a-0175-1000-9dc8-10a43255d15b","parent":{"ref":"EID6a35782a-0175-1000-2877-c32730de2f30"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a35782a-0175-1000-bdec-dc91b4e709ec","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3578e6-0175-1000-9c24-4c8308185d8a","parent":{"ref":"EID6a35782a-0175-1000-bdec-dc91b4e709ec"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a3578e6-0175-1000-9018-fb99bc2562c0","parent":{"ref":"EID6a35782a-0175-1000-bdec-dc91b4e709ec"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a3578e6-0175-1000-a69e-d6b1a0687f0b","parent":{"ref":"EID6a35782a-0175-1000-bdec-dc91b4e709ec"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a3578e6-0175-1000-5f7e-ff47a927ea15","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6a35782a-0175-1000-bdec-dc91b4e709ec"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID36887e11-7adf-40eb-aab0-0cf44f42c685"},{"ref":"EID69ce2797-4111-4c1c-97fe-8d77bf642e48"},{"ref":"EID971c00e0-657d-4b8b-89ad-13d7f867a4cc"}]},"parent":{"ref":"EID6a35782a-0175-1000-2877-c32730de2f30"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:18:10Z","duration":72,"status":"FAILED"}]},"parent":{"ref":"EID6a3559dc-0175-1000-599c-18346678bd95"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:18:10Z","duration":188,"status":"FAILED"}]},"parent":{"ref":"EIDe0a1c243-b214-4c35-88a3-4c80582aff34"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:18:02Z","duration":7946,"status":"FAILED"},{"id":"EID6a3578e6-0175-1000-d910-fd8b92b83b5e","testCaseResults":{"TestCaseResult":[{"id":"EID6a3578e6-0175-1000-8d81-0446b3fd53eb","testStepResults":{"TestStepResult":[{"id":"EID6a3578e6-0175-1000-3524-ad765116e4b7","parent":{"ref":"EID6a3578e6-0175-1000-8d81-0446b3fd53eb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a3578e6-0175-1000-c5d6-74c781eff3ec","parent":{"ref":"EID6a3578e6-0175-1000-8d81-0446b3fd53eb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:18:10Z","duration":79,"status":"PASSED"},{"id":"EID6a3578e6-0175-1000-05df-dd654fbce639","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35799c-0175-1000-c678-b2a4f75686be","parent":{"ref":"EID6a3578e6-0175-1000-05df-dd654fbce639"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a35799c-0175-1000-3bdb-bfa1cb0b9f63","parent":{"ref":"EID6a3578e6-0175-1000-05df-dd654fbce639"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a35799c-0175-1000-73ad-bfc94797bc98","parent":{"ref":"EID6a3578e6-0175-1000-05df-dd654fbce639"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6bd4a899-cef4-4edf-bc37-0a066e1f55aa"},{"ref":"EID89687dd9-a482-4e2f-b098-a1521c128ffa"},{"ref":"EIDd8abc55c-03a5-48c5-8a22-07f0987be5a0"}]},"parent":{"ref":"EID6a3578e6-0175-1000-8d81-0446b3fd53eb"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:18:10Z","duration":76,"status":"PASSED"},{"id":"EID6a35799c-0175-1000-85b7-bad083eb02ca","attachments":{"attachment":{"ref":"EIDa96fb439-ca66-4ff3-a974-e85147deffe4"}},"parent":{"ref":"EID6a3578e6-0175-1000-8d81-0446b3fd53eb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a3579a7-0175-1000-8e6a-88cdf3435917","parent":{"ref":"EID6a3578e6-0175-1000-8d81-0446b3fd53eb"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:18:10Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6a3578e6-0175-1000-d910-fd8b92b83b5e"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:18:10Z","duration":216,"status":"PASSED"},{"id":"EID6a3579bf-0175-1000-42d4-6f2ef2d5ec08","testStepResults":{"TestStepResult":[{"id":"EID6a3579bf-0175-1000-5abc-b5e6fefcfc52","parent":{"ref":"EID6a3579bf-0175-1000-42d4-6f2ef2d5ec08"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:18:10Z","duration":80,"status":"PASSED"},{"id":"EID6a3579bf-0175-1000-8c63-4c1a718160f4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a357a1d-0175-1000-d486-25fe9521e92b","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a3579bf-0175-1000-8c63-4c1a718160f4"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:18:10Z","duration":14,"status":"FAILED"},{"id":"EID6a357a2c-0175-1000-a69b-79d6711a3212","parent":{"ref":"EID6a3579bf-0175-1000-8c63-4c1a718160f4"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a357a2c-0175-1000-a8d2-782268d45ce8","parent":{"ref":"EID6a3579bf-0175-1000-8c63-4c1a718160f4"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"PASSED"},{"id":"EID6a357a2c-0175-1000-71ad-1b8d72d7ae4d","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6a3579bf-0175-1000-8c63-4c1a718160f4"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"FAILED"},{"id":"EID6a357a2c-0175-1000-9bb1-471c58ac4c01","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6a3579bf-0175-1000-8c63-4c1a718160f4"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:18:10Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDdee82dbe-9a66-4662-824c-414f2c4bbe5a"},{"ref":"EID4eeed612-dd8e-4701-9661-a4238ce5c5ff"},{"ref":"EIDc79f4992-8b65-4f15-95fe-2079afa29121"}]},"parent":{"ref":"EID6a3579bf-0175-1000-42d4-6f2ef2d5ec08"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:18:10Z","duration":28,"status":"FAILED"}]},"parent":{"ref":"EID6a3578e6-0175-1000-d910-fd8b92b83b5e"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:18:10Z","duration":109,"status":"FAILED"},{"id":"EID6a357a2c-0175-1000-6418-2d9689595de3","testStepResults":{"TestStepResult":{"id":"EID6a357a2c-0175-1000-c405-fb5ed2f6983b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a357aa4-0175-1000-369c-83fc4630f8a0","parent":{"ref":"EID6a357a2c-0175-1000-c405-fb5ed2f6983b"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"},{"id":"EID6a357aa4-0175-1000-b268-57288a6913f5","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a357a2c-0175-1000-c405-fb5ed2f6983b"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:18:11Z","duration":70,"status":"FAILED"},{"id":"EID6a357aea-0175-1000-794c-ad362f590b4e","parent":{"ref":"EID6a357a2c-0175-1000-c405-fb5ed2f6983b"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe86e95a8-40e8-49f7-8c62-0b8c7ee596ce"},{"ref":"EID350f32ea-07d9-4f06-87cd-5a990155ae5b"},{"ref":"EID80010a95-6594-43db-a11a-5a1f324fe8fa"}]},"parent":{"ref":"EID6a357a2c-0175-1000-6418-2d9689595de3"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:18:10Z","duration":57,"status":"FAILED"}},"parent":{"ref":"EID6a3578e6-0175-1000-d910-fd8b92b83b5e"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:18:10Z","duration":190,"status":"FAILED"},{"id":"EID6a357aea-0175-1000-2c3f-20e5e1c2e6c1","testStepResults":{"TestStepResult":{"id":"EID6a357aeb-0175-1000-91a5-bd39ef6c006b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a357b4d-0175-1000-42f0-8fd1ac362736","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a357aeb-0175-1000-91a5-bd39ef6c006b"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"FAILED"},{"id":"EID6a357b4d-0175-1000-2f2a-44b92076801c","parent":{"ref":"EID6a357aeb-0175-1000-91a5-bd39ef6c006b"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"},{"id":"EID6a357b4d-0175-1000-be9a-5ee220f0be03","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a357aeb-0175-1000-91a5-bd39ef6c006b"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:18:11Z","duration":36,"status":"FAILED"},{"id":"EID6a357b71-0175-1000-a71e-f8a2bf7b5b62","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6a357aeb-0175-1000-91a5-bd39ef6c006b"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDa16746e6-b2c3-4ff8-b56c-35f0a72d268f"},{"ref":"EIDaed49050-8a9f-4acb-bc5c-c6a845ee4e6f"},{"ref":"EIDff1b0217-32d7-4496-b776-2b3748a7f6bf"}]},"parent":{"ref":"EID6a357aea-0175-1000-2c3f-20e5e1c2e6c1"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:18:11Z","duration":31,"status":"FAILED"}},"parent":{"ref":"EID6a3578e6-0175-1000-d910-fd8b92b83b5e"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:18:11Z","duration":135,"status":"FAILED"},{"id":"EID6a357b71-0175-1000-be7d-a9e426e7e647","testStepResults":{"TestStepResult":{"id":"EID6a357b71-0175-1000-34eb-cdec656e768a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a357bcc-0175-1000-2568-f8e3fc6adf20","parent":{"ref":"EID6a357b71-0175-1000-34eb-cdec656e768a"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"},{"id":"EID6a357bcc-0175-1000-2b8c-8d9164cf66ea","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a357b71-0175-1000-34eb-cdec656e768a"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:18:11Z","duration":79,"status":"FAILED"},{"id":"EID6a357c1b-0175-1000-982d-1dd21936a281","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6a357b71-0175-1000-34eb-cdec656e768a"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID24279cf6-c078-4342-955d-2bb77f9b29f3"},{"ref":"EID2388c4de-39c8-49df-946b-7b1daf506e6a"},{"ref":"EID44ac63b3-abb5-4e20-a982-d2821dfb858e"}]},"parent":{"ref":"EID6a357b71-0175-1000-be7d-a9e426e7e647"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:18:11Z","duration":33,"status":"FAILED"}},"parent":{"ref":"EID6a3578e6-0175-1000-d910-fd8b92b83b5e"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:18:11Z","duration":170,"status":"FAILED"},{"id":"EID6a357c1c-0175-1000-51a8-24dce863b7c9","testStepResults":{"TestStepResult":{"id":"EID6a357c1c-0175-1000-15cf-c8617b0db549","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a357c7b-0175-1000-0d96-35e8631c0a9e","parent":{"ref":"EID6a357c1c-0175-1000-15cf-c8617b0db549"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"},{"id":"EID6a357c7b-0175-1000-3ef8-f43121746490","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a357c1c-0175-1000-15cf-c8617b0db549"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:18:11Z","duration":66,"status":"FAILED"},{"id":"EID6a357cbd-0175-1000-950e-ac5fba2e867d","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a357c1c-0175-1000-15cf-c8617b0db549"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID4e1499a9-b4d0-476c-adaf-1dbc0473e6c2"},{"ref":"EID0fb86cbf-1a48-496b-9970-9f632b398a26"},{"ref":"EIDe139be72-008c-4ae4-bdd4-0a21149680f8"}]},"parent":{"ref":"EID6a357c1c-0175-1000-51a8-24dce863b7c9"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:18:11Z","duration":33,"status":"FAILED"}},"parent":{"ref":"EID6a3578e6-0175-1000-d910-fd8b92b83b5e"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:18:11Z","duration":161,"status":"FAILED"},{"id":"EID6a357cbe-0175-1000-5a46-952eb6630443","testStepResults":{"TestStepResult":{"id":"EID6a357cbe-0175-1000-edb7-5a8af4244ace","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a357d61-0175-1000-c804-263c74c502f2","parent":{"ref":"EID6a357cbe-0175-1000-edb7-5a8af4244ace"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"},{"id":"EID6a357d61-0175-1000-5c7f-e28b393ed93f","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a357cbe-0175-1000-edb7-5a8af4244ace"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:18:11Z","duration":60,"status":"FAILED"},{"id":"EID6a357d9d-0175-1000-8f79-fe0b93b4e6e8","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6a357cbe-0175-1000-edb7-5a8af4244ace"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"FAILED"},{"id":"EID6a357d9d-0175-1000-99fc-6fe41e75aafb","parent":{"ref":"EID6a357cbe-0175-1000-edb7-5a8af4244ace"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"},{"id":"EID6a357d9d-0175-1000-c4e2-8e5073d2887c","parent":{"ref":"EID6a357cbe-0175-1000-edb7-5a8af4244ace"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfb63067f-e938-49b1-9d4a-63e25fd04c41"},{"ref":"EIDa3916bbc-1c3e-4880-8fb2-d8f6787f0d9c"},{"ref":"EIDc73ddba7-be12-403c-8507-a2db9397a13e"}]},"parent":{"ref":"EID6a357cbe-0175-1000-5a46-952eb6630443"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:18:11Z","duration":37,"status":"FAILED"}},"parent":{"ref":"EID6a3578e6-0175-1000-d910-fd8b92b83b5e"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:18:11Z","duration":223,"status":"FAILED"},{"id":"EID6a357d9d-0175-1000-35f4-053a8b9b651b","testStepResults":{"TestStepResult":{"id":"EID6a357d9d-0175-1000-e751-f116b4121da6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a357e13-0175-1000-7c5f-625fc23d605d","parent":{"ref":"EID6a357d9d-0175-1000-e751-f116b4121da6"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"},{"id":"EID6a357e13-0175-1000-d3be-68713237ead4","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a357d9d-0175-1000-e751-f116b4121da6"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:18:11Z","duration":11,"status":"FAILED"},{"id":"EID6a357e1e-0175-1000-a661-c68dc4c77813","parent":{"ref":"EID6a357d9d-0175-1000-e751-f116b4121da6"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:18:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfed1d7d8-d98f-44b3-903b-732d799d9456"},{"ref":"EIDf1d604c6-0cfe-48e3-9152-f4a05f8dbb35"},{"ref":"EIDd28a3fd2-8f87-4c89-9197-e85ce7af37b0"}]},"parent":{"ref":"EID6a357d9d-0175-1000-35f4-053a8b9b651b"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:18:11Z","duration":32,"status":"FAILED"}},"parent":{"ref":"EID6a3578e6-0175-1000-d910-fd8b92b83b5e"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:18:11Z","duration":129,"status":"FAILED"},{"id":"EID6a357e1e-0175-1000-3c1e-b454ea1dacfe","testStepResults":{"TestStepResult":{"id":"EID6a357e1e-0175-1000-6a95-12f177a1545d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a357e85-0175-1000-917d-62c4131c10f7","parent":{"ref":"EID6a357e1e-0175-1000-6a95-12f177a1545d"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a357e85-0175-1000-1d97-11669f99a39a","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a357e1e-0175-1000-6a95-12f177a1545d"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:18:12Z","duration":14,"status":"FAILED"},{"id":"EID6a357e93-0175-1000-3c2e-7e2cc5c3cc06","parent":{"ref":"EID6a357e1e-0175-1000-6a95-12f177a1545d"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb01cdbd8-3fd5-478b-8438-9d57ef76a671"},{"ref":"EID6359f1d8-1177-43d1-8c5d-e6d8239c58bf"},{"ref":"EID09ca2ff6-132c-4851-aa04-1f2d35296d20"}]},"parent":{"ref":"EID6a357e1e-0175-1000-3c1e-b454ea1dacfe"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:18:11Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6a3578e6-0175-1000-d910-fd8b92b83b5e"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:18:11Z","duration":117,"status":"FAILED"},{"id":"EID6a357e93-0175-1000-8e5d-e38a5d46f71b","testStepResults":{"TestStepResult":{"id":"EID6a357e93-0175-1000-b847-3e12b2b729b5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a357f45-0175-1000-edb5-ddedeb4d3719","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a357e93-0175-1000-b847-3e12b2b729b5"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:18:12Z","duration":14,"status":"FAILED"},{"id":"EID6a357f53-0175-1000-7c4d-9debef2e22e8","parent":{"ref":"EID6a357e93-0175-1000-b847-3e12b2b729b5"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a357f53-0175-1000-2dab-53a760f1e1e9","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a357e93-0175-1000-b847-3e12b2b729b5"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:18:12Z","duration":1,"status":"FAILED"},{"id":"EID6a357f54-0175-1000-5f0f-fe4bd1bc5230","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6a357e93-0175-1000-b847-3e12b2b729b5"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDd4010715-7833-4bdb-a925-2309d28f99b2"},{"ref":"EID0d9c5a97-af4b-45e7-9ffe-4ed956677c7b"},{"ref":"EIDf13245f6-835d-4bf6-86ce-e4180fce1c9a"}]},"parent":{"ref":"EID6a357e93-0175-1000-8e5d-e38a5d46f71b"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:18:12Z","duration":27,"status":"FAILED"}},"parent":{"ref":"EID6a3578e6-0175-1000-d910-fd8b92b83b5e"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:18:12Z","duration":193,"status":"FAILED"},{"id":"EID6a357f54-0175-1000-f0c7-160caa588a6d","testStepResults":{"TestStepResult":{"id":"EID6a357f54-0175-1000-cdf3-34421b915961","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a357fd1-0175-1000-f22c-acc21f6449cd","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a357f54-0175-1000-cdf3-34421b915961"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:18:12Z","duration":11,"status":"FAILED"},{"id":"EID6a357fdc-0175-1000-8107-ab01dce18c61","parent":{"ref":"EID6a357f54-0175-1000-cdf3-34421b915961"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a357fdc-0175-1000-a315-89f468d21867","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a357f54-0175-1000-cdf3-34421b915961"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"FAILED"},{"id":"EID6a357fdc-0175-1000-4c1c-7bc45fadf542","parent":{"ref":"EID6a357f54-0175-1000-cdf3-34421b915961"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7f7da02e-1f05-4a47-b4e8-f37c941c4ddf"},{"ref":"EIDdd6b5c1d-d007-4221-9c5a-523328778d4d"},{"ref":"EID8cb65be3-3ec0-44ad-9806-8be2fdc8cc44"}]},"parent":{"ref":"EID6a357f54-0175-1000-f0c7-160caa588a6d"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:18:12Z","duration":34,"status":"FAILED"}},"parent":{"ref":"EID6a3578e6-0175-1000-d910-fd8b92b83b5e"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:18:12Z","duration":136,"status":"FAILED"},{"id":"EID6a357fdc-0175-1000-f014-bedf33eb4203","testStepResults":{"TestStepResult":[{"id":"EID6a357fdc-0175-1000-2e11-9fe9f8000593","parent":{"ref":"EID6a357fdc-0175-1000-f014-bedf33eb4203"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a357fdc-0175-1000-dd42-f4957f6e694b","parent":{"ref":"EID6a357fdc-0175-1000-f014-bedf33eb4203"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:18:12Z","duration":211,"status":"PASSED"},{"id":"EID6a357fdc-0175-1000-3018-a167851e88f3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35811d-0175-1000-142a-ad00b340ce79","parent":{"ref":"EID6a357fdc-0175-1000-3018-a167851e88f3"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a35811d-0175-1000-07a5-6d602986ace6","parent":{"ref":"EID6a357fdc-0175-1000-3018-a167851e88f3"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a35811d-0175-1000-0549-1027cf60cd51","parent":{"ref":"EID6a357fdc-0175-1000-3018-a167851e88f3"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a35811d-0175-1000-a5c7-2d0ad0cd31eb","parent":{"ref":"EID6a357fdc-0175-1000-3018-a167851e88f3"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa641a842-f762-420a-a6e7-35ecb266d006"},{"ref":"EID5a545fdb-bde7-4a34-9a41-d4d2bcbe3a90"},{"ref":"EIDffce9d40-4a1d-41de-9e70-eac5364d1d0e"}]},"parent":{"ref":"EID6a357fdc-0175-1000-f014-bedf33eb4203"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:18:12Z","duration":114,"status":"PASSED"},{"id":"EID6a35811d-0175-1000-d177-c9b198adc652","attachments":{"attachment":{"ref":"EIDa0a1c4fa-ec11-4e28-bcea-c145cbdf158b"}},"parent":{"ref":"EID6a357fdc-0175-1000-f014-bedf33eb4203"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:18:12Z","duration":4,"status":"PASSED"},{"id":"EID6a35812d-0175-1000-f7bb-48e0603919cd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3581d4-0175-1000-81d8-baa902a8e728","parent":{"ref":"EID6a35812d-0175-1000-f7bb-48e0603919cd"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3581d4-0175-1000-850a-f9ee5a2a6739","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a35812d-0175-1000-f7bb-48e0603919cd"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:18:12Z","duration":12,"status":"FAILED"},{"id":"EID6a3581e0-0175-1000-df24-837f1f958664","parent":{"ref":"EID6a35812d-0175-1000-f7bb-48e0603919cd"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3581e0-0175-1000-61a6-0d8c9274c290","parent":{"ref":"EID6a35812d-0175-1000-f7bb-48e0603919cd"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3581e0-0175-1000-77c9-2a548397066e","parent":{"ref":"EID6a35812d-0175-1000-f7bb-48e0603919cd"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3581e0-0175-1000-0c73-bf34abff17fe","parent":{"ref":"EID6a35812d-0175-1000-f7bb-48e0603919cd"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3581e0-0175-1000-9756-617a5ed573b9","parent":{"ref":"EID6a35812d-0175-1000-f7bb-48e0603919cd"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID80ca10be-4ab2-44ed-b0b3-28448617042c"},{"ref":"EID5c770b5d-de0c-461f-b445-5e0ced9d5eb1"},{"ref":"EID6036db36-ff5e-453f-b2ab-12835431e2f9"}]},"parent":{"ref":"EID6a357fdc-0175-1000-f014-bedf33eb4203"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:18:12Z","duration":29,"status":"FAILED"}]},"parent":{"ref":"EID6a3578e6-0175-1000-d910-fd8b92b83b5e"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:18:12Z","duration":516,"status":"FAILED"},{"id":"EID6a3581e0-0175-1000-66fc-ccad237682cb","testStepResults":{"TestStepResult":[{"id":"EID6a3581e0-0175-1000-5d89-32312d915239","parent":{"ref":"EID6a3581e0-0175-1000-66fc-ccad237682cb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:18:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3581e0-0175-1000-7760-2866e8f419f1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a358338-0175-1000-1021-0fb6fea24e12","parent":{"ref":"EID6a3581e0-0175-1000-7760-2866e8f419f1"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"},{"id":"EID6a358338-0175-1000-3cf5-ee2a105a71ed","parent":{"ref":"EID6a3581e0-0175-1000-7760-2866e8f419f1"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"},{"id":"EID6a358338-0175-1000-bcc4-96833063c391","parent":{"ref":"EID6a3581e0-0175-1000-7760-2866e8f419f1"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"},{"id":"EID6a358338-0175-1000-901a-7df11728e7d9","parent":{"ref":"EID6a3581e0-0175-1000-7760-2866e8f419f1"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6210fe38-b483-4a56-8966-5a92b931f969"},{"ref":"EID3a2ad419-88d4-4537-a216-abd4f460ce58"},{"ref":"EID5fbdcc7e-53b8-41d4-a6b5-efce9f004fbb"}]},"parent":{"ref":"EID6a3581e0-0175-1000-66fc-ccad237682cb"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:18:12Z","duration":146,"status":"PASSED"},{"id":"EID6a358338-0175-1000-57dc-7bce8ccd525f","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a358349-0175-1000-b18d-aca6b76ca7b4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3584a7-0175-1000-5f45-e0ab653e3f46","parent":{"ref":"EID6a358349-0175-1000-b18d-aca6b76ca7b4"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3584a7-0175-1000-3130-9f60ce00bffa","parent":{"ref":"EID6a358349-0175-1000-b18d-aca6b76ca7b4"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3584a7-0175-1000-6ca9-77dd93c497cd","parent":{"ref":"EID6a358349-0175-1000-b18d-aca6b76ca7b4"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID383e28de-6239-429d-8792-e7c0c032980c"},{"ref":"EIDd7c9d04e-83e3-44a4-a524-934a36f09d63"},{"ref":"EID273f31aa-ce61-4b04-8c08-0721f1a28ec0"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:18:13Z","duration":147,"status":"PASSED"},{"id":"EID6a3584aa-0175-1000-034e-8acb340f2f93","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a358589-0175-1000-3a46-f2046df285b6","parent":{"ref":"EID6a3584aa-0175-1000-034e-8acb340f2f93"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"},{"id":"EID6a358589-0175-1000-fe52-b90546162fca","parent":{"ref":"EID6a3584aa-0175-1000-034e-8acb340f2f93"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"},{"id":"EID6a358589-0175-1000-229b-87c7f8b90216","parent":{"ref":"EID6a3584aa-0175-1000-034e-8acb340f2f93"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:18:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID921ba27e-0898-4d9b-9926-61d15a723861"},{"ref":"EID46d4231f-6e85-4450-bbf8-08ed82f3bbd4"},{"ref":"EIDb923ffcb-9c39-4a13-8d82-024a9b6eff6b"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:18:13Z","duration":157,"status":"PASSED"},{"id":"EID6a35858b-0175-1000-ca37-b1c64011ddb0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3585f9-0175-1000-aae1-63cf2a276217","parent":{"ref":"EID6a35858b-0175-1000-ca37-b1c64011ddb0"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"PASSED"},{"id":"EID6a3585f9-0175-1000-f8c2-24b0e38cf0a2","parent":{"ref":"EID6a35858b-0175-1000-ca37-b1c64011ddb0"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"PASSED"},{"id":"EID6a3585f9-0175-1000-f249-bba06d337ce6","parent":{"ref":"EID6a35858b-0175-1000-ca37-b1c64011ddb0"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID75671c10-83d6-40b7-a5e5-0e456e5e2f1b"},{"ref":"EID29f0bae1-13c1-4ac5-b9bf-a9099382dd96"},{"ref":"EID8a299b60-b6b1-4a3c-94bc-8cc0faa7d3fc"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:18:13Z","duration":41,"status":"PASSED"}]},"parent":{"ref":"EID6a3581e0-0175-1000-66fc-ccad237682cb"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:18:13Z","duration":706,"status":"PASSED"},{"id":"EID6a3585fa-0175-1000-f8d5-e11323d009ba","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35865c-0175-1000-8eaf-7156bea4eff3","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a3585fa-0175-1000-f8d5-e11323d009ba"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:18:14Z","duration":16,"status":"FAILED"},{"id":"EID6a35866d-0175-1000-2cb1-dda28773b017","parent":{"ref":"EID6a3585fa-0175-1000-f8d5-e11323d009ba"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"PASSED"},{"id":"EID6a35866d-0175-1000-5672-015fc69b2d48","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a3585fa-0175-1000-f8d5-e11323d009ba"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"FAILED"},{"id":"EID6a35866d-0175-1000-ac53-5c1894bc9cca","parent":{"ref":"EID6a3585fa-0175-1000-f8d5-e11323d009ba"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfe0c497d-2b29-4d8e-b0a9-309a27a77677"},{"ref":"EID7213203e-b912-47d6-91dd-65702b60ee60"},{"ref":"EID190d73fe-5037-4fa9-84f7-f028bd513f5c"}]},"parent":{"ref":"EID6a3581e0-0175-1000-66fc-ccad237682cb"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:18:14Z","duration":31,"status":"FAILED"}]},"parent":{"ref":"EID6a3578e6-0175-1000-d910-fd8b92b83b5e"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:18:12Z","duration":1165,"status":"FAILED"},{"id":"EID6a35866d-0175-1000-fba9-a6fae6f9a3d0","testStepResults":{"TestStepResult":{"id":"EID6a35866d-0175-1000-db92-03308624b319","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3586f2-0175-1000-b572-a68a2a96bda7","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a35866d-0175-1000-db92-03308624b319"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:18:14Z","duration":13,"status":"FAILED"},{"id":"EID6a3586ff-0175-1000-2513-2e1201461d08","parent":{"ref":"EID6a35866d-0175-1000-db92-03308624b319"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"PASSED"},{"id":"EID6a3586ff-0175-1000-eb2c-6a8367414d0b","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a35866d-0175-1000-db92-03308624b319"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"FAILED"},{"id":"EID6a3586ff-0175-1000-e31b-a0b2a466f1e8","parent":{"ref":"EID6a35866d-0175-1000-db92-03308624b319"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3377d193-1d3b-4c22-ac9c-d2d1cc6f5f02"},{"ref":"EIDb971fc0f-f71f-421b-837f-3094461d8b85"},{"ref":"EIDbd5c919b-d205-4166-a16b-d97e730e9aa4"}]},"parent":{"ref":"EID6a35866d-0175-1000-fba9-a6fae6f9a3d0"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:18:14Z","duration":27,"status":"FAILED"}},"parent":{"ref":"EID6a3578e6-0175-1000-d910-fd8b92b83b5e"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:18:14Z","duration":147,"status":"FAILED"}]},"parent":{"ref":"EIDe0a1c243-b214-4c35-88a3-4c80582aff34"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:18:10Z","duration":3610,"status":"FAILED"},{"id":"EID6a358700-0175-1000-d908-68734809a70c","testCaseResults":{"TestCaseResult":[{"id":"EID6a358700-0175-1000-249d-9e79ad003233","testStepResults":{"TestStepResult":{"id":"EID6a358700-0175-1000-bd33-d2465ff5357f","parent":{"ref":"EID6a358700-0175-1000-249d-9e79ad003233"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:18:14Z","duration":553,"status":"SKIPPED"}},"parent":{"ref":"EID6a358700-0175-1000-d908-68734809a70c"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"SKIPPED"},{"id":"EID6a358700-0175-1000-1dbf-4724f2982c9b","testStepResults":{"TestStepResult":{"id":"EID6a358700-0175-1000-6414-97c38d04b438","parent":{"ref":"EID6a358700-0175-1000-1dbf-4724f2982c9b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:18:14Z","duration":553,"status":"SKIPPED"}},"parent":{"ref":"EID6a358700-0175-1000-d908-68734809a70c"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"SKIPPED"},{"id":"EID6a358700-0175-1000-706f-5ded4635a060","testStepResults":{"TestStepResult":{"id":"EID6a358700-0175-1000-ba96-7c5d8d448d77","parent":{"ref":"EID6a358700-0175-1000-706f-5ded4635a060"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:18:14Z","duration":553,"status":"SKIPPED"}},"parent":{"ref":"EID6a358700-0175-1000-d908-68734809a70c"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"SKIPPED"},{"id":"EID6a358700-0175-1000-2a5c-dee8753230e1","testStepResults":{"TestStepResult":{"id":"EID6a35870a-0175-1000-fa0d-452ac72209a2","parent":{"ref":"EID6a358700-0175-1000-2a5c-dee8753230e1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:18:14Z","duration":553,"status":"SKIPPED"}},"parent":{"ref":"EID6a358700-0175-1000-d908-68734809a70c"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:18:14Z","duration":10,"status":"SKIPPED"},{"id":"EID6a35870a-0175-1000-ac08-06ae3b87fe76","testStepResults":{"TestStepResult":{"id":"EID6a35870a-0175-1000-45fd-432c12b74634","parent":{"ref":"EID6a35870a-0175-1000-ac08-06ae3b87fe76"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:18:14Z","duration":553,"status":"SKIPPED"}},"parent":{"ref":"EID6a358700-0175-1000-d908-68734809a70c"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"SKIPPED"},{"id":"EID6a35870a-0175-1000-dee9-b03ef71f787c","testStepResults":{"TestStepResult":{"id":"EID6a35870a-0175-1000-f16b-bdd7266b27f5","parent":{"ref":"EID6a35870a-0175-1000-dee9-b03ef71f787c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:18:14Z","duration":553,"status":"SKIPPED"}},"parent":{"ref":"EID6a358700-0175-1000-d908-68734809a70c"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"SKIPPED"},{"id":"EID6a35870a-0175-1000-8918-2d23d85fbcb0","testStepResults":{"TestStepResult":{"id":"EID6a35870a-0175-1000-9b6d-01d2f561bc6b","parent":{"ref":"EID6a35870a-0175-1000-8918-2d23d85fbcb0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:18:14Z","duration":553,"status":"SKIPPED"}},"parent":{"ref":"EID6a358700-0175-1000-d908-68734809a70c"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:18:14Z","duration":0,"status":"SKIPPED"}]},"parent":{"ref":"EIDe0a1c243-b214-4c35-88a3-4c80582aff34"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:18:14Z","duration":11,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"Message","id":"EIDd40785bc-11eb-4ae2-ad1c-e6faae832477","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDd40785bc-11eb-4ae2-ad1c-e6faae832477"}},{"type":"ServiceResponse","id":"EID6359f1d8-1177-43d1-8c5d-e6d8239c58bf","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID6359f1d8-1177-43d1-8c5d-e6d8239c58bf"}},{"type":"Message","id":"EIDb838704c-0d5e-4550-87c0-c5003efa30a9","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDb838704c-0d5e-4550-87c0-c5003efa30a9"}},{"type":"GetParameter","id":"EIDf2abc7d2-b0a9-4c63-be4c-4624272d366a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDb983bedf-14d4-44ea-9de3-fe82deb9e0c2","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDb983bedf-14d4-44ea-9de3-fe82deb9e0c2"}},{"type":"ServiceEndpoint","id":"EID36887e11-7adf-40eb-aab0-0cf44f42c685","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDc3df49d1-cbac-44ac-a1e4-37d56db593bd","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDc3df49d1-cbac-44ac-a1e4-37d56db593bd"}},{"type":"ServiceEndpoint","id":"EIDd4010715-7833-4bdb-a925-2309d28f99b2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EIDb8e32182-a635-45b8-aba4-bfd36e6b5833","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDb8e32182-a635-45b8-aba4-bfd36e6b5833"}},{"type":"Error","id":"EID3c51a328-0173-4264-ae53-7fb011945975","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID3c51a328-0173-4264-ae53-7fb011945975"}},{"type":"GetParameter","id":"EIDd4b5f28e-9f95-4163-a78b-cfa71afb1b3e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDc8677c65-b649-4032-a513-bea5743987ec","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDc8677c65-b649-4032-a513-bea5743987ec"}},{"type":"ServiceEndpoint","id":"EIDd8772dbc-007d-4821-9b1c-ecb1c6313723","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID6bd4a899-cef4-4edf-bc37-0a066e1f55aa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDb91c7794-cc14-476a-a8eb-333ec17b85cf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID971c00e0-657d-4b8b-89ad-13d7f867a4cc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID843fffcb-7ebc-4428-bbfd-9ca3a199ebd8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID4f882a43-1ae4-433c-a0e8-517228dd243e","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID4f882a43-1ae4-433c-a0e8-517228dd243e"}},{"type":"GetParameter","id":"EIDc73ddba7-be12-403c-8507-a2db9397a13e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID29f0bae1-13c1-4ac5-b9bf-a9099382dd96","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID29f0bae1-13c1-4ac5-b9bf-a9099382dd96"}},{"type":"Message","id":"EID68091aa4-035b-48e8-aed8-1b3d320d1f96","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID68091aa4-035b-48e8-aed8-1b3d320d1f96"}},{"type":"ServiceEndpoint","id":"EIDfb63067f-e938-49b1-9d4a-63e25fd04c41","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID77acaa5b-8db6-4059-9d23-85a7130ce566","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID58789b49-6093-43e8-9437-7b3719000eb7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID58789b49-6093-43e8-9437-7b3719000eb7"}},{"type":"GetParameter","id":"EID6036db36-ff5e-453f-b2ab-12835431e2f9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDc0308e97-bc1b-44bc-bcab-38ddd7ef36c8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID350f32ea-07d9-4f06-87cd-5a990155ae5b","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID350f32ea-07d9-4f06-87cd-5a990155ae5b"}},{"type":"ServiceResponse","id":"EID755e1187-0bb3-4924-a15d-d959742bb102","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID755e1187-0bb3-4924-a15d-d959742bb102"}},{"type":"ServiceEndpoint","id":"EID24279cf6-c078-4342-955d-2bb77f9b29f3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID3377d193-1d3b-4c22-ac9c-d2d1cc6f5f02","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID8d888337-b4f6-4840-ac85-7643ca4ef499","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDaed49050-8a9f-4acb-bc5c-c6a845ee4e6f","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDaed49050-8a9f-4acb-bc5c-c6a845ee4e6f"}},{"type":"GetParameter","id":"EID0c47fe0a-44f0-485e-88fb-870c136ba853","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDb653e115-de4f-4feb-854c-8204a03416fe","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDb653e115-de4f-4feb-854c-8204a03416fe"}},{"type":"ServiceResponse","id":"EID0fb86cbf-1a48-496b-9970-9f632b398a26","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID0fb86cbf-1a48-496b-9970-9f632b398a26"}},{"type":"GetParameter","id":"EIDb923ffcb-9c39-4a13-8d82-024a9b6eff6b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceResponse","id":"EIDbb983e1a-6d5f-41c6-bbfe-447558223571","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDbb983e1a-6d5f-41c6-bbfe-447558223571"}},{"type":"Error","id":"EID58762548-0d3f-4d62-921a-1e06725ce8a3","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID58762548-0d3f-4d62-921a-1e06725ce8a3"}},{"type":"GetParameter","id":"EIDe139be72-008c-4ae4-bdd4-0a21149680f8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDe3e59497-80a3-4d91-bbb9-5418c4e818ef","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID41903ef4-fe73-42cf-9cd5-978ca7343447","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID41903ef4-fe73-42cf-9cd5-978ca7343447"}},{"type":"ServiceResponse","id":"EIDd7c9d04e-83e3-44a4-a524-934a36f09d63","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDd7c9d04e-83e3-44a4-a524-934a36f09d63"}},{"type":"ServiceResponse","id":"EID7213203e-b912-47d6-91dd-65702b60ee60","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID7213203e-b912-47d6-91dd-65702b60ee60"}},{"type":"Message","id":"EID572cc39d-8c8c-43b4-802c-9a14e01b0e86","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID572cc39d-8c8c-43b4-802c-9a14e01b0e86"}},{"type":"GetParameter","id":"EID3fe4e6c7-01a4-43d4-b72d-0f60970bc0cf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDa0074a2a-5e82-4fbf-80d0-d4e1677c7675","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDa0074a2a-5e82-4fbf-80d0-d4e1677c7675"}},{"type":"GetParameter","id":"EIDd28a3fd2-8f87-4c89-9197-e85ce7af37b0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EID4bb0c6fd-3594-46b2-8135-eb56ce399872","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID4bb0c6fd-3594-46b2-8135-eb56ce399872"}},{"type":"Message","id":"EIDe7396c5b-e81f-4640-9aad-fc0b1786b1ea","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDe7396c5b-e81f-4640-9aad-fc0b1786b1ea"}},{"type":"Message","id":"EID4135a175-1261-4d0c-9652-49870cd7cd75","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID4135a175-1261-4d0c-9652-49870cd7cd75"}},{"type":"ServiceResponse","id":"EIDed3f3ae6-1f4e-4921-8773-ecb7fedbad43","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDed3f3ae6-1f4e-4921-8773-ecb7fedbad43"}},{"type":"Message","id":"EID140b4829-2855-46ff-9a2c-13afe3654d0b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID140b4829-2855-46ff-9a2c-13afe3654d0b"}},{"type":"ServiceEndpoint","id":"EIDfed1d7d8-d98f-44b3-903b-732d799d9456","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EIDc448ccfa-d785-4cea-aaa3-f86cb8cfbeb0","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDc448ccfa-d785-4cea-aaa3-f86cb8cfbeb0"}},{"type":"ServiceEndpoint","id":"EIDbba66cd2-34d4-4c87-8731-96c0f753ac7a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID7916e406-cb7e-472d-8222-6af5c5f97100","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID383e28de-6239-429d-8792-e7c0c032980c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EIDa16746e6-b2c3-4ff8-b56c-35f0a72d268f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID80010a95-6594-43db-a11a-5a1f324fe8fa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDffce9d40-4a1d-41de-9e70-eac5364d1d0e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDdec6ff40-0852-41c3-97f8-0701a28bb30a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDdec6ff40-0852-41c3-97f8-0701a28bb30a"}},{"type":"ServiceResponse","id":"EID5c770b5d-de0c-461f-b445-5e0ced9d5eb1","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID5c770b5d-de0c-461f-b445-5e0ced9d5eb1"}},{"type":"Error","id":"EIDa70a0fe7-867c-4496-bf90-09466d3d0db6","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDa70a0fe7-867c-4496-bf90-09466d3d0db6"}},{"type":"ServiceEndpoint","id":"EIDe542c4f1-793d-4812-af38-b5203ac5c35d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDdd6b5c1d-d007-4221-9c5a-523328778d4d","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDdd6b5c1d-d007-4221-9c5a-523328778d4d"}},{"type":"ServiceEndpoint","id":"EIDb76dc2e9-d17e-447c-86a5-d3a75de6c79c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID84da4b2e-4f63-44b5-bc7f-e4ed05044381","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID84da4b2e-4f63-44b5-bc7f-e4ed05044381"}},{"type":"Message","id":"EIDd036f65a-41ce-43ef-9922-b9a44cd982ef","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDd036f65a-41ce-43ef-9922-b9a44cd982ef"}},{"type":"ServiceResponse","id":"EID10fc735e-71f4-48e9-b958-86dd537e6a88","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID10fc735e-71f4-48e9-b958-86dd537e6a88"}},{"type":"ServiceEndpoint","id":"EID3aa6aed2-7ece-4b5c-81a8-488ebd13ff8f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"Message","id":"EIDef5c361b-6ac1-4769-a907-d47bddbc7579","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDef5c361b-6ac1-4769-a907-d47bddbc7579"}},{"type":"ServiceEndpoint","id":"EID697ce945-9e8c-4adf-a783-b0fff3a3290f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDefb75daa-37ad-4f1f-93f0-62bb6078f666","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID2388c4de-39c8-49df-946b-7b1daf506e6a","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID2388c4de-39c8-49df-946b-7b1daf506e6a"}},{"type":"ServiceEndpoint","id":"EID75671c10-83d6-40b7-a5e5-0e456e5e2f1b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EIDd8abc55c-03a5-48c5-8a22-07f0987be5a0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID8cb65be3-3ec0-44ad-9806-8be2fdc8cc44","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID6e0c858f-0235-4bbc-bf35-3abf98cafc82","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID6e0c858f-0235-4bbc-bf35-3abf98cafc82"}},{"type":"Message","id":"EIDa96fb439-ca66-4ff3-a974-e85147deffe4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDa96fb439-ca66-4ff3-a974-e85147deffe4"}},{"type":"Message","id":"EID828a68ef-e935-4ef4-8536-8c953d352e5f","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID828a68ef-e935-4ef4-8536-8c953d352e5f"}},{"type":"Message","id":"EIDf22f9779-cb06-407c-8dcb-7c3dd4fe3730","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDf22f9779-cb06-407c-8dcb-7c3dd4fe3730"}},{"type":"GetParameter","id":"EID36f1c972-8064-483b-b234-8d178314476d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDf1d604c6-0cfe-48e3-9152-f4a05f8dbb35","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDf1d604c6-0cfe-48e3-9152-f4a05f8dbb35"}},{"type":"ServiceEndpoint","id":"EID7f7da02e-1f05-4a47-b4e8-f37c941c4ddf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDbd5c919b-d205-4166-a16b-d97e730e9aa4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID6c2ab89a-0a32-46ba-9660-fc75a7a605a6","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID6c2ab89a-0a32-46ba-9660-fc75a7a605a6"}},{"type":"ServiceEndpoint","id":"EIDd5f100dd-7a85-420c-8582-4e5c6edc24c4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID91ac6e4b-8981-40f4-bfd0-8c88dd38c40f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDc867e73c-ce05-4ef6-8e59-c280e6b0b92d","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDc867e73c-ce05-4ef6-8e59-c280e6b0b92d"}},{"type":"ServiceResponse","id":"EIDa11d78cb-a3fd-4e27-a5df-861e11b3fbb1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDa11d78cb-a3fd-4e27-a5df-861e11b3fbb1"}},{"type":"ServiceEndpoint","id":"EIDe86e95a8-40e8-49f7-8c62-0b8c7ee596ce","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDb971fc0f-f71f-421b-837f-3094461d8b85","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDb971fc0f-f71f-421b-837f-3094461d8b85"}},{"type":"Message","id":"EID6693cc20-08c9-4133-8ef8-087130d88242","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID6693cc20-08c9-4133-8ef8-087130d88242"}},{"type":"Error","id":"EIDaca3d6e0-273f-477e-a40f-e32768e2e69b","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDaca3d6e0-273f-477e-a40f-e32768e2e69b"}},{"type":"Message","id":"EIDcb825264-35d9-4266-820e-cca1cf9581f3","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDcb825264-35d9-4266-820e-cca1cf9581f3"}},{"type":"ServiceResponse","id":"EID69ce2797-4111-4c1c-97fe-8d77bf642e48","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID69ce2797-4111-4c1c-97fe-8d77bf642e48"}},{"type":"ServiceResponse","id":"EIDa3916bbc-1c3e-4880-8fb2-d8f6787f0d9c","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDa3916bbc-1c3e-4880-8fb2-d8f6787f0d9c"}},{"type":"Error","id":"EID822d01f6-3117-4d5b-b5e4-e08a04c2825d","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID822d01f6-3117-4d5b-b5e4-e08a04c2825d"}},{"type":"ServiceEndpoint","id":"EID80ca10be-4ab2-44ed-b0b3-28448617042c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EID09154806-b295-41f3-bd86-e0b0977015e1","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID09154806-b295-41f3-bd86-e0b0977015e1"}},{"type":"ServiceResponse","id":"EIDbf8f360f-6a2f-4028-b025-b92a3214f7f3","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDbf8f360f-6a2f-4028-b025-b92a3214f7f3"}},{"type":"GetParameter","id":"EIDf6f62c84-a970-426c-b14e-3f01ad35a543","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDa0a1c4fa-ec11-4e28-bcea-c145cbdf158b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDa0a1c4fa-ec11-4e28-bcea-c145cbdf158b"}},{"type":"GetParameter","id":"EIDc79f4992-8b65-4f15-95fe-2079afa29121","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID09ca2ff6-132c-4851-aa04-1f2d35296d20","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EIDc687d230-32eb-4a09-b4a4-ad2688b43c97","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDc687d230-32eb-4a09-b4a4-ad2688b43c97"}},{"type":"ServiceEndpoint","id":"EIDa641a842-f762-420a-a6e7-35ecb266d006","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID044b19d7-8ea5-48ae-85da-56152206cfa3","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID044b19d7-8ea5-48ae-85da-56152206cfa3"}},{"type":"ServiceResponse","id":"EID4eeed612-dd8e-4701-9661-a4238ce5c5ff","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID4eeed612-dd8e-4701-9661-a4238ce5c5ff"}},{"type":"ServiceEndpoint","id":"EID4e1499a9-b4d0-476c-adaf-1dbc0473e6c2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID8143a302-657c-4a6d-8c38-ea9de6144c0c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDaf4e257f-8e0e-4bc5-b394-58f3f4393091","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID44ac63b3-abb5-4e20-a982-d2821dfb858e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID4049574e-27e7-4030-8494-bb274f710cdd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID273f31aa-ce61-4b04-8c08-0721f1a28ec0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EID6210fe38-b483-4a56-8966-5a92b931f969","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"LogFile","id":"EID3beb52c2-30bf-44b3-8b5a-c4be5f3bcf43","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID3beb52c2-30bf-44b3-8b5a-c4be5f3bcf43"}},{"type":"GetParameter","id":"EID6c3d5f05-6889-4464-b966-f59bb71464ca","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDea98e1c6-4ff7-4af5-ad59-d9719980ff5d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDea98e1c6-4ff7-4af5-ad59-d9719980ff5d"}},{"type":"Message","id":"EIDe98ce115-1e42-4407-91c1-3fa9d1b36622","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDe98ce115-1e42-4407-91c1-3fa9d1b36622"}},{"type":"Message","id":"EIDf1565a7e-07d1-4838-87ab-a027ff0242e3","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDf1565a7e-07d1-4838-87ab-a027ff0242e3"}},{"type":"GetParameter","id":"EID919d3aa6-f52c-4945-8381-73df7c0fc639","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID5fbdcc7e-53b8-41d4-a6b5-efce9f004fbb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EID2edacfdf-508d-407b-aaed-1ed0e6cc6993","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID2edacfdf-508d-407b-aaed-1ed0e6cc6993"}},{"type":"GetParameter","id":"EIDf13245f6-835d-4bf6-86ce-e4180fce1c9a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID3a2ad419-88d4-4537-a216-abd4f460ce58","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID3a2ad419-88d4-4537-a216-abd4f460ce58"}},{"type":"GetParameter","id":"EID45336194-07b1-48c1-87bb-c6e2aaea2602","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDcf39bad9-a7e8-4b0d-b489-16b654f6f297","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDcf39bad9-a7e8-4b0d-b489-16b654f6f297"}},{"type":"ServiceResponse","id":"EID5a545fdb-bde7-4a34-9a41-d4d2bcbe3a90","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID5a545fdb-bde7-4a34-9a41-d4d2bcbe3a90"}},{"type":"ServiceResponse","id":"EIDb353bba7-f70f-4575-89c0-fe3076a252a7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDb353bba7-f70f-4575-89c0-fe3076a252a7"}},{"type":"ServiceResponse","id":"EID0c71cf86-fd97-48c7-89f5-728b4b16d26b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID0c71cf86-fd97-48c7-89f5-728b4b16d26b"}},{"type":"Message","id":"EID1ed02d36-08a3-4e9b-a6b3-971cd3640d33","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID1ed02d36-08a3-4e9b-a6b3-971cd3640d33"}},{"type":"ServiceResponse","id":"EID1ed6d794-9e63-4f5e-b36d-e921e639e2fd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID1ed6d794-9e63-4f5e-b36d-e921e639e2fd"}},{"type":"GetParameter","id":"EIDb29d2567-8529-46e2-8ffc-edd7ce0303ba","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDdee82dbe-9a66-4662-824c-414f2c4bbe5a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID8a299b60-b6b1-4a3c-94bc-8cc0faa7d3fc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EIDff1b0217-32d7-4496-b776-2b3748a7f6bf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID921ba27e-0898-4d9b-9926-61d15a723861","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EIDba691cbe-70df-406f-b707-acb4ce5b06e7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID0d9c5a97-af4b-45e7-9ffe-4ed956677c7b","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID0d9c5a97-af4b-45e7-9ffe-4ed956677c7b"}},{"type":"Message","id":"EIDe67b55f3-d646-493c-8c64-b5dc68bd8e26","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDe67b55f3-d646-493c-8c64-b5dc68bd8e26"}},{"type":"ServiceEndpoint","id":"EIDb01cdbd8-3fd5-478b-8438-9d57ef76a671","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID995685b9-b96f-4a60-b35f-94075bbf547e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID995685b9-b96f-4a60-b35f-94075bbf547e"}},{"type":"GetParameter","id":"EID5935c6c5-7c9f-4ee4-ad8c-f1231e64ee04","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID46d4231f-6e85-4450-bbf8-08ed82f3bbd4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID46d4231f-6e85-4450-bbf8-08ed82f3bbd4"}},{"type":"ServiceEndpoint","id":"EID0439abe6-fab3-4ff2-99d1-dbbf040c27bc","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDd6fa6ea3-c3f8-476a-a464-c912dfac2726","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDa6ced18d-543c-4435-ad6f-71adabc8a7f5","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDa6ced18d-543c-4435-ad6f-71adabc8a7f5"}},{"type":"GetParameter","id":"EIDb68ab6c3-0e45-46ae-8b21-5f652c777696","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDcbbde0cd-a110-4a96-bba4-80a4a260c57f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EIDcbbde0cd-a110-4a96-bba4-80a4a260c57f"}},{"type":"ServiceEndpoint","id":"EIDfe0c497d-2b29-4d8e-b0a9-309a27a77677","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID98190599-5f45-4a20-bec2-a373ced57e7c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID98190599-5f45-4a20-bec2-a373ced57e7c"}},{"type":"GetParameter","id":"EID7ea397a2-4f70-4456-8ac4-1a9fc7e26e79","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID66f1cbcf-4d7b-4ae1-8341-0339d9c27587","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDbdd10cf6-a6ce-424c-a509-4449369df797","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID55f4d003-8555-4956-ac52-290d97b0912d","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID55f4d003-8555-4956-ac52-290d97b0912d"}},{"type":"GetParameter","id":"EID69ef66b1-6aa5-4713-9a38-4bfd135ffddb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID190d73fe-5037-4fa9-84f7-f028bd513f5c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID90a67765-ff40-4efb-afd9-f56d9f7c9944","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID90a67765-ff40-4efb-afd9-f56d9f7c9944"}},{"type":"ServiceResponse","id":"EID5775b644-24d5-47a8-8212-c11065923aef","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID5775b644-24d5-47a8-8212-c11065923aef"}},{"type":"ServiceResponse","id":"EID89687dd9-a482-4e2f-b098-a1521c128ffa","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDe0a1c243-b214-4c35-88a3-4c80582aff34/Attachments/EID89687dd9-a482-4e2f-b098-a1521c128ffa"}}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:18:02Z","duration":12157,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:18:32.547 [print] EID3e652bc8-818e-46bf-9f40-caa2a82d2172
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:18:32.547 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:18:32.559 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:18:32.559 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:18:32.559 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/3e652bc8-818e-46bf-9f40-caa2a82d2172.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:18:32.559 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/3e652bc8-818e-46bf-9f40-caa2a82d2172.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:18:32.559 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID3e652bc8-818e-46bf-9f40-caa2a82d2172/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.013
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.012
* def a = embedUrl ("../../" + jsonPath , status ) 0.001
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.002
13:18:32.590 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.001
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
13:18:32.594 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
13:18:32.595 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.021
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
2.094
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:19:21.456 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsgebiedsoorten/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.094
13:19:21.457 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 307
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsgebiedsoorten/wfs?request=GetCapabilities"}}}

13:19:23.550 response time in milliseconds: 1987.60
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:19:23 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","timestamp":"1603804763373","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsgebiedsoorten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:19:23.550 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1.684
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:20:26.360 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/su-vector/wfs?&request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.683
13:20:26.360 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 297
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/su-vector/wfs?&request=GetCapabilities&service=WFS"}}}

13:20:28.043 response time in milliseconds: 1577.41
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:20:27 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804827857","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:20:28.044 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1.830
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:19:26.166 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/bu/wfs?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.829
13:19:26.166 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 289
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/bu/wfs?request=GetCapabilities&service=WFS"}}}

13:19:27.993 response time in milliseconds: 1721.88
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:19:27 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804767817","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:19:27.996 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1:7.031
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.006
13:10:27.442 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 6.462
13:10:27.444 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 287
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml"}}}

13:10:33.898 response time in milliseconds: 5681.04
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:10:33 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:10:30 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/08458fd0-e1cd-401d-846f-ebef32220b30.json","testRuns":{"TestRun":{"id":"EID08458fd0-e1cd-401d-846f-ebef32220b30","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:10:30.084Z","testTasks":{"TestTask":{"id":"EID5cf243af-24ee-4ea1-8276-5e22d0bc921c","parent":{"ref":"EID08458fd0-e1cd-401d-846f-ebef32220b30"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID0da07856-8bfa-44fd-852b-90a280632c7f"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID08458fd0-e1cd-401d-846f-ebef32220b30/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID0da07856-8bfa-44fd-852b-90a280632c7f","remoteResource":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:10:27.903Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:10:29.49Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.001
13:10:33.921 [print] EID08458fd0-e1cd-401d-846f-ebef32220b30
* print response.EtfItemCollection.testRuns.TestRun.status 0.001
13:10:33.922 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.001
13:10:33.924 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.001
13:10:33.925 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/08458fd0-e1cd-401d-846f-ebef32220b30.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.001
13:10:33.926 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID08458fd0-e1cd-401d-846f-ebef32220b30/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.002
13:10:33.930 [print] statuspath TestRuns/EID08458fd0-e1cd-401d-846f-ebef32220b30
* print 'progresspath ', progresspath 0.001
13:10:33.931 [print] progresspath  TestRuns/EID08458fd0-e1cd-401d-846f-ebef32220b30/progress
Given path progresspath 0.000
When method GET 0.550
13:10:33.936 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID08458fd0-e1cd-401d-846f-ebef32220b30/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:34.482 response time in milliseconds: 544.86
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:10:34 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["27.10.2020 13:10:30 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:30 UTC 2020)","27.10.2020 13:10:30 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:30 - Preparing 1 Test Task:","27.10.2020 13:10:30 -  TestTask 1 (5cf243af-24ee-4ea1-8276-5e22d0bc921c)","27.10.2020 13:10:30 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:30 -  with parameters: ","27.10.2020 13:10:30 - etf.testcases = *","27.10.2020 13:10:30 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:30 - Setting state to CREATED","27.10.2020 13:10:30 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:30 - Starting TestRun.08458fd0-e1cd-401d-846f-ebef32220b30 at 2020-10-27T13:10:32Z","27.10.2020 13:10:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:32 - Project Properties: ","27.10.2020 13:10:32 - etf.testcases - * ","27.10.2020 13:10:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","27.10.2020 13:10:32 - username -  ","27.10.2020 13:10:32 - authUser -  ","27.10.2020 13:10:32 - authMethod - basic ","27.10.2020 13:10:32 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:10:34.482 [print] {
  "val": "16",
  "max": "17",
  "log": [
    "27.10.2020 13:10:30 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:30 UTC 2020)",
    "27.10.2020 13:10:30 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:10:30 - Preparing 1 Test Task:",
    "27.10.2020 13:10:30 -  TestTask 1 (5cf243af-24ee-4ea1-8276-5e22d0bc921c)",
    "27.10.2020 13:10:30 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:10:30 -  with parameters: ",
    "27.10.2020 13:10:30 - etf.testcases = *",
    "27.10.2020 13:10:30 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:10:30 - Setting state to CREATED",
    "27.10.2020 13:10:30 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:10:30 - Starting TestRun.08458fd0-e1cd-401d-846f-ebef32220b30 at 2020-10-27T13:10:32Z",
    "27.10.2020 13:10:32 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:10:32 - Project Properties: ",
    "27.10.2020 13:10:32 - etf.testcases - * ",
    "27.10.2020 13:10:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ",
    "27.10.2020 13:10:32 - username -  ",
    "27.10.2020 13:10:32 - authUser -  ",
    "27.10.2020 13:10:32 - authMethod - basic ",
    "27.10.2020 13:10:32 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 29.659
13:10:34.483 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID08458fd0-e1cd-401d-846f-ebef32220b30/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:35.013 response time in milliseconds: 525.22
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:10:34 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"25","max":"26","log":["27.10.2020 13:10:30 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:30 UTC 2020)","27.10.2020 13:10:30 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:30 - Preparing 1 Test Task:","27.10.2020 13:10:30 -  TestTask 1 (5cf243af-24ee-4ea1-8276-5e22d0bc921c)","27.10.2020 13:10:30 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:30 -  with parameters: ","27.10.2020 13:10:30 - etf.testcases = *","27.10.2020 13:10:30 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:30 - Setting state to CREATED","27.10.2020 13:10:30 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:30 - Starting TestRun.08458fd0-e1cd-401d-846f-ebef32220b30 at 2020-10-27T13:10:32Z","27.10.2020 13:10:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:32 - Project Properties: ","27.10.2020 13:10:32 - etf.testcases - * ","27.10.2020 13:10:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","27.10.2020 13:10:32 - username -  ","27.10.2020 13:10:32 - authUser -  ","27.10.2020 13:10:32 - authMethod - basic ","27.10.2020 13:10:32 - TestRunTask initialized"]}

13:10:35.015 retry condition not satisfied: response.val == response.max
13:10:35.015 sleeping before retry #1
13:10:40.017 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID08458fd0-e1cd-401d-846f-ebef32220b30/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:40.575 response time in milliseconds: 557.04
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:10:40 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"74","max":"75","log":["27.10.2020 13:10:30 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:30 UTC 2020)","27.10.2020 13:10:30 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:30 - Preparing 1 Test Task:","27.10.2020 13:10:30 -  TestTask 1 (5cf243af-24ee-4ea1-8276-5e22d0bc921c)","27.10.2020 13:10:30 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:30 -  with parameters: ","27.10.2020 13:10:30 - etf.testcases = *","27.10.2020 13:10:30 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:30 - Setting state to CREATED","27.10.2020 13:10:30 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:30 - Starting TestRun.08458fd0-e1cd-401d-846f-ebef32220b30 at 2020-10-27T13:10:32Z","27.10.2020 13:10:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:32 - Project Properties: ","27.10.2020 13:10:32 - etf.testcases - * ","27.10.2020 13:10:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","27.10.2020 13:10:32 - username -  ","27.10.2020 13:10:32 - authUser -  ","27.10.2020 13:10:32 - authMethod - basic ","27.10.2020 13:10:32 - TestRunTask initialized"]}

13:10:40.575 retry condition not satisfied: response.val == response.max
13:10:40.576 sleeping before retry #2
13:10:45.577 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID08458fd0-e1cd-401d-846f-ebef32220b30/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:46.096 response time in milliseconds: 516.12
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:10:46 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"118","max":"119","log":["27.10.2020 13:10:30 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:30 UTC 2020)","27.10.2020 13:10:30 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:30 - Preparing 1 Test Task:","27.10.2020 13:10:30 -  TestTask 1 (5cf243af-24ee-4ea1-8276-5e22d0bc921c)","27.10.2020 13:10:30 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:30 -  with parameters: ","27.10.2020 13:10:30 - etf.testcases = *","27.10.2020 13:10:30 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:30 - Setting state to CREATED","27.10.2020 13:10:30 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:30 - Starting TestRun.08458fd0-e1cd-401d-846f-ebef32220b30 at 2020-10-27T13:10:32Z","27.10.2020 13:10:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:32 - Project Properties: ","27.10.2020 13:10:32 - etf.testcases - * ","27.10.2020 13:10:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","27.10.2020 13:10:32 - username -  ","27.10.2020 13:10:32 - authUser -  ","27.10.2020 13:10:32 - authMethod - basic ","27.10.2020 13:10:32 - TestRunTask initialized"]}

13:10:46.096 retry condition not satisfied: response.val == response.max
13:10:46.097 sleeping before retry #3
13:10:51.098 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID08458fd0-e1cd-401d-846f-ebef32220b30/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:51.613 response time in milliseconds: 513.84
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:10:51 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"153","max":"154","log":["27.10.2020 13:10:30 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:30 UTC 2020)","27.10.2020 13:10:30 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:30 - Preparing 1 Test Task:","27.10.2020 13:10:30 -  TestTask 1 (5cf243af-24ee-4ea1-8276-5e22d0bc921c)","27.10.2020 13:10:30 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:30 -  with parameters: ","27.10.2020 13:10:30 - etf.testcases = *","27.10.2020 13:10:30 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:30 - Setting state to CREATED","27.10.2020 13:10:30 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:30 - Starting TestRun.08458fd0-e1cd-401d-846f-ebef32220b30 at 2020-10-27T13:10:32Z","27.10.2020 13:10:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:32 - Project Properties: ","27.10.2020 13:10:32 - etf.testcases - * ","27.10.2020 13:10:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","27.10.2020 13:10:32 - username -  ","27.10.2020 13:10:32 - authUser -  ","27.10.2020 13:10:32 - authMethod - basic ","27.10.2020 13:10:32 - TestRunTask initialized"]}

13:10:51.613 retry condition not satisfied: response.val == response.max
13:10:51.613 sleeping before retry #4
13:10:56.615 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID08458fd0-e1cd-401d-846f-ebef32220b30/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:10:57.127 response time in milliseconds: 509.34
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:10:57 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"203","max":"204","log":["27.10.2020 13:10:30 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:10:30 UTC 2020)","27.10.2020 13:10:30 - Resolving Executable Test Suite dependencies","27.10.2020 13:10:30 - Preparing 1 Test Task:","27.10.2020 13:10:30 -  TestTask 1 (5cf243af-24ee-4ea1-8276-5e22d0bc921c)","27.10.2020 13:10:30 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:10:30 -  with parameters: ","27.10.2020 13:10:30 - etf.testcases = *","27.10.2020 13:10:30 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:10:30 - Setting state to CREATED","27.10.2020 13:10:30 - Changed state from CREATED to INITIALIZING","27.10.2020 13:10:30 - Starting TestRun.08458fd0-e1cd-401d-846f-ebef32220b30 at 2020-10-27T13:10:32Z","27.10.2020 13:10:32 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:10:32 - Project Properties: ","27.10.2020 13:10:32 - etf.testcases - * ","27.10.2020 13:10:32 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/rvo/inspire/invasieve-exoten/atom/v1_0/index.xml ","27.10.2020 13:10:32 - username -  ","27.10.2020 13:10:32 - authUser -  ","27.10.2020 13:10:32 - authMethod - basic ","27.10.2020 13:10:32 - TestRunTask initialized","27.10.2020 13:10:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:10:54 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:10:55 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:10:56 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:10:56 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:10:56 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}

13:10:57.127 retry condition not satisfied: response.val == response.max
13:10:57.127 sleeping before retry #5
13:11:02.129 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID08458fd0-e1cd-401d-846f-ebef32220b30/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:04.141 response time in milliseconds: 2009.83
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:11:04 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:11:04.141 retry condition satisfied
* print response 0.000
13:11:04.142 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 30.338
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:67 - 
java.net.SocketTimeoutException: Read timed out
13:11:04.145 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID08458fd0-e1cd-401d-846f-ebef32220b30
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:11:34.480 java.net.SocketTimeoutException: Read timed out, http call failed after 30335 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns/EID08458fd0-e1cd-401d-846f-ebef32220b30
13:11:34.480 http request failed: 
java.net.SocketTimeoutException: Read timed out
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
41.824
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:13:43.585 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 7.747
13:13:43.597 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

13:13:51.330 response time in milliseconds: 6982.24
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:13:50 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:13:47 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/e1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c.json","testRuns":{"TestRun":{"id":"EIDe1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:13:46.722Z","testTasks":{"TestTask":{"id":"EID77d7db1d-b712-422c-b17c-c9a59b12de18","parent":{"ref":"EIDe1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID67f65cc7-d2aa-4b64-abc8-0e81a17262d2"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDe1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID67f65cc7-d2aa-4b64-abc8-0e81a17262d2","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:13:44.058Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:13:45.61Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:13:51.333 [print] EIDe1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:13:51.334 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:13:51.334 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:13:51.334 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/e1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:13:51.334 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDe1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:13:51.335 [print] statuspath TestRuns/EIDe1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c
* print 'progresspath ', progresspath 0.000
13:13:51.335 [print] progresspath  TestRuns/EIDe1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c/progress
Given path progresspath 0.000
When method GET 0.524
13:13:51.336 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:51.859 response time in milliseconds: 523.05
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:13:51 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:13:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:46 UTC 2020)","27.10.2020 13:13:46 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:46 - Preparing 1 Test Task:","27.10.2020 13:13:46 -  TestTask 1 (77d7db1d-b712-422c-b17c-c9a59b12de18)","27.10.2020 13:13:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:46 -  with parameters: ","27.10.2020 13:13:46 - etf.testcases = *","27.10.2020 13:13:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:46 - Setting state to CREATED","27.10.2020 13:13:46 - Changed state from CREATED to INITIALIZING"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:13:51.860 [print] {
  "val": "0",
  "max": "240",
  "log": [
    "27.10.2020 13:13:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:46 UTC 2020)",
    "27.10.2020 13:13:46 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:13:46 - Preparing 1 Test Task:",
    "27.10.2020 13:13:46 -  TestTask 1 (77d7db1d-b712-422c-b17c-c9a59b12de18)",
    "27.10.2020 13:13:46 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:13:46 -  with parameters: ",
    "27.10.2020 13:13:46 - etf.testcases = *",
    "27.10.2020 13:13:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:13:46 - Setting state to CREATED",
    "27.10.2020 13:13:46 - Changed state from CREATED to INITIALIZING"
  ]
}
Given path progresspath 0.000
When method GET 29.600
13:13:51.860 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:52.376 response time in milliseconds: 514.62
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:13:52 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:13:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:46 UTC 2020)","27.10.2020 13:13:46 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:46 - Preparing 1 Test Task:","27.10.2020 13:13:46 -  TestTask 1 (77d7db1d-b712-422c-b17c-c9a59b12de18)","27.10.2020 13:13:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:46 -  with parameters: ","27.10.2020 13:13:46 - etf.testcases = *","27.10.2020 13:13:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:46 - Setting state to CREATED","27.10.2020 13:13:46 - Changed state from CREATED to INITIALIZING"]}

13:13:52.376 retry condition not satisfied: response.val == response.max
13:13:52.376 sleeping before retry #1
13:13:57.377 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:57.889 response time in milliseconds: 511.15
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:13:57 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:13:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:46 UTC 2020)","27.10.2020 13:13:46 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:46 - Preparing 1 Test Task:","27.10.2020 13:13:46 -  TestTask 1 (77d7db1d-b712-422c-b17c-c9a59b12de18)","27.10.2020 13:13:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:46 -  with parameters: ","27.10.2020 13:13:46 - etf.testcases = *","27.10.2020 13:13:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:46 - Setting state to CREATED","27.10.2020 13:13:46 - Changed state from CREATED to INITIALIZING"]}

13:13:57.889 retry condition not satisfied: response.val == response.max
13:13:57.889 sleeping before retry #2
13:14:02.890 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:03.414 response time in milliseconds: 522.52
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:14:03 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["27.10.2020 13:13:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:46 UTC 2020)","27.10.2020 13:13:46 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:46 - Preparing 1 Test Task:","27.10.2020 13:13:46 -  TestTask 1 (77d7db1d-b712-422c-b17c-c9a59b12de18)","27.10.2020 13:13:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:46 -  with parameters: ","27.10.2020 13:13:46 - etf.testcases = *","27.10.2020 13:13:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:46 - Setting state to CREATED","27.10.2020 13:13:46 - Changed state from CREATED to INITIALIZING","27.10.2020 13:13:59 - Starting TestRun.e1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c at 2020-10-27T13:14:01Z","27.10.2020 13:14:01 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:01 - Project Properties: ","27.10.2020 13:14:01 - etf.testcases - * ","27.10.2020 13:14:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:14:01 - username -  ","27.10.2020 13:14:01 - authUser -  ","27.10.2020 13:14:01 - authMethod - basic ","27.10.2020 13:14:01 - TestRunTask initialized"]}

13:14:03.414 retry condition not satisfied: response.val == response.max
13:14:03.414 sleeping before retry #3
13:14:08.415 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:08.938 response time in milliseconds: 522.17
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:14:08 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"69","max":"70","log":["27.10.2020 13:13:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:46 UTC 2020)","27.10.2020 13:13:46 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:46 - Preparing 1 Test Task:","27.10.2020 13:13:46 -  TestTask 1 (77d7db1d-b712-422c-b17c-c9a59b12de18)","27.10.2020 13:13:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:46 -  with parameters: ","27.10.2020 13:13:46 - etf.testcases = *","27.10.2020 13:13:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:46 - Setting state to CREATED","27.10.2020 13:13:46 - Changed state from CREATED to INITIALIZING","27.10.2020 13:13:59 - Starting TestRun.e1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c at 2020-10-27T13:14:01Z","27.10.2020 13:14:01 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:01 - Project Properties: ","27.10.2020 13:14:01 - etf.testcases - * ","27.10.2020 13:14:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:14:01 - username -  ","27.10.2020 13:14:01 - authUser -  ","27.10.2020 13:14:01 - authMethod - basic ","27.10.2020 13:14:01 - TestRunTask initialized","27.10.2020 13:14:05 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:14:05 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:14:07 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027"]}

13:14:08.938 retry condition not satisfied: response.val == response.max
13:14:08.938 sleeping before retry #4
13:14:13.940 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:14.457 response time in milliseconds: 516.46
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:14:14 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["27.10.2020 13:13:46 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:46 UTC 2020)","27.10.2020 13:13:46 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:46 - Preparing 1 Test Task:","27.10.2020 13:13:46 -  TestTask 1 (77d7db1d-b712-422c-b17c-c9a59b12de18)","27.10.2020 13:13:46 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:46 -  with parameters: ","27.10.2020 13:13:46 - etf.testcases = *","27.10.2020 13:13:46 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:46 - Setting state to CREATED","27.10.2020 13:13:46 - Changed state from CREATED to INITIALIZING","27.10.2020 13:13:59 - Starting TestRun.e1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c at 2020-10-27T13:14:01Z","27.10.2020 13:14:01 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:14:01 - Project Properties: ","27.10.2020 13:14:01 - etf.testcases - * ","27.10.2020 13:14:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:14:01 - username -  ","27.10.2020 13:14:01 - authUser -  ","27.10.2020 13:14:01 - authMethod - basic ","27.10.2020 13:14:01 - TestRunTask initialized","27.10.2020 13:14:05 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:14:05 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:14:07 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:14:09 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:14:10 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:14:10 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:14:10 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:14:10 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:14:10 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:14:11 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:14:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:14:11 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:14:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:14:11 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:14:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:14:11 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:14:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:14:11 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:14:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:14:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:14:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:14:11 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:14:11 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:14:11 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:14:12 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:14:12 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:14:13 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:14:13 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:14:13 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:14:13 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:14:14.457 retry condition not satisfied: response.val == response.max
13:14:14.457 sleeping before retry #5
13:14:19.458 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:21.460 response time in milliseconds: 2001.08
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:14:21 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:14:21.460 retry condition satisfied
* print response 0.000
13:14:21.460 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 3.919
13:14:21.461 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDe1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:25.377 response time in milliseconds: 2948.21
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Cache-Control: public, max-age=120
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:14:24 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Last-Modified: Tue, 27 Oct 2020 13:14:18 GMT
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/e1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c.json","testRuns":{"TestRun":{"id":"EIDe1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:13:46.722Z","testTasks":{"TestTask":{"id":"EID77d7db1d-b712-422c-b17c-c9a59b12de18","parent":{"ref":"EIDe1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID67f65cc7-d2aa-4b64-abc8-0e81a17262d2"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EID61f249a7-5450-458a-8ad5-0d17fbf53da2"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDe1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID67f65cc7-d2aa-4b64-abc8-0e81a17262d2","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:13:44.058Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:13:45.61Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EID61f249a7-5450-458a-8ad5-0d17fbf53da2","testObject":{"ref":"EID67f65cc7-d2aa-4b64-abc8-0e81a17262d2"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a31aa45-0175-1000-1852-88fce981fd54","testCaseResults":{"TestCaseResult":[{"id":"EID6a31aa46-0175-1000-96f7-b8aaee0f7478","testStepResults":{"TestStepResult":[{"id":"EID6a31aa46-0175-1000-20fc-882e7414808f","parent":{"ref":"EID6a31aa46-0175-1000-96f7-b8aaee0f7478"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:14:01Z","duration":15,"status":"PASSED"},{"id":"EID6a31aa55-0175-1000-ee4d-a0272144242c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31ab38-0175-1000-79ec-9a3bb3aa9dd1","parent":{"ref":"EID6a31aa55-0175-1000-ee4d-a0272144242c"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:14:01Z","duration":0,"status":"PASSED"},{"id":"EID6a31ab38-0175-1000-1e5f-9f3a8142987e","parent":{"ref":"EID6a31aa55-0175-1000-ee4d-a0272144242c"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:14:01Z","duration":0,"status":"PASSED"},{"id":"EID6a31ab38-0175-1000-0412-b7991e07a871","parent":{"ref":"EID6a31aa55-0175-1000-ee4d-a0272144242c"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:14:01Z","duration":0,"status":"PASSED"},{"id":"EID6a31ab38-0175-1000-c0b2-92c5b6c6f1fd","parent":{"ref":"EID6a31aa55-0175-1000-ee4d-a0272144242c"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:14:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID45069125-3008-4c5e-9cc3-e7d42931f392"},{"ref":"EIDb6746544-382b-44bb-bf5f-7f7448d9acd2"},{"ref":"EID945ae3a8-6241-4786-a6d1-5ef0d4da28eb"}]},"parent":{"ref":"EID6a31aa46-0175-1000-96f7-b8aaee0f7478"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:14:01Z","duration":65,"status":"PASSED"}]},"parent":{"ref":"EID6a31aa45-0175-1000-1852-88fce981fd54"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:14:01Z","duration":252,"status":"PASSED"},{"id":"EID6a31ab42-0175-1000-425d-b12758f40ea6","testStepResults":{"TestStepResult":{"id":"EID6a31ab42-0175-1000-377e-75c6a80a04e0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31ac32-0175-1000-b5d8-ffeacd7a8128","parent":{"ref":"EID6a31ab42-0175-1000-377e-75c6a80a04e0"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:14:01Z","duration":0,"status":"PASSED"},{"id":"EID6a31ac32-0175-1000-1385-9a356de3034b","parent":{"ref":"EID6a31ab42-0175-1000-377e-75c6a80a04e0"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:14:01Z","duration":0,"status":"PASSED"},{"id":"EID6a31ac32-0175-1000-6aab-5c002cdd7117","parent":{"ref":"EID6a31ab42-0175-1000-377e-75c6a80a04e0"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:14:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID925c67c3-95c4-40c9-a753-a7bef6ef30a2"},{"ref":"EID1e940785-4bb1-459d-b128-df106bfaf441"},{"ref":"EID9d1510d6-bc9f-42a8-bc75-098a0cf2f744"}]},"parent":{"ref":"EID6a31ab42-0175-1000-425d-b12758f40ea6"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:14:01Z","duration":104,"status":"PASSED"}},"parent":{"ref":"EID6a31aa45-0175-1000-1852-88fce981fd54"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:14:01Z","duration":240,"status":"PASSED"}]},"parent":{"ref":"EID61f249a7-5450-458a-8ad5-0d17fbf53da2"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:14:01Z","duration":493,"status":"PASSED"},{"id":"EID6a31ac32-0175-1000-05e6-1b0df8e307d1","testCaseResults":{"TestCaseResult":[{"id":"EID6a31ac32-0175-1000-2cf3-4eccfdcc081c","testStepResults":{"TestStepResult":[{"id":"EID6a31ac32-0175-1000-8fc7-dbb06b40443a","parent":{"ref":"EID6a31ac32-0175-1000-2cf3-4eccfdcc081c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:14:01Z","duration":104,"status":"PASSED"},{"id":"EID6a31ac32-0175-1000-329e-347a072bfece","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31ad60-0175-1000-2d1a-a8687d7ed885","parent":{"ref":"EID6a31ac32-0175-1000-329e-347a072bfece"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:14:01Z","duration":0,"status":"PASSED"},{"id":"EID6a31ad60-0175-1000-5829-609ea33ff556","parent":{"ref":"EID6a31ac32-0175-1000-329e-347a072bfece"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:14:01Z","duration":0,"status":"PASSED"},{"id":"EID6a31ad60-0175-1000-1ebd-4c47a6219630","parent":{"ref":"EID6a31ac32-0175-1000-329e-347a072bfece"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:14:01Z","duration":0,"status":"PASSED"},{"id":"EID6a31ad60-0175-1000-d104-5a3df8483254","parent":{"ref":"EID6a31ac32-0175-1000-329e-347a072bfece"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:14:01Z","duration":0,"status":"PASSED"},{"id":"EID6a31ad60-0175-1000-a49f-b03c808d33b6","parent":{"ref":"EID6a31ac32-0175-1000-329e-347a072bfece"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:14:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6518d482-ae75-4192-a5c6-a1da1c24150c"},{"ref":"EIDb74882ce-b503-4ea7-aa02-a92ea40cd7bd"},{"ref":"EIDcbd7e400-f861-4853-b442-361e05fbfb97"}]},"parent":{"ref":"EID6a31ac32-0175-1000-2cf3-4eccfdcc081c"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:14:01Z","duration":62,"status":"PASSED"}]},"parent":{"ref":"EID6a31ac32-0175-1000-05e6-1b0df8e307d1"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:14:01Z","duration":302,"status":"PASSED"},{"id":"EID6a31ad60-0175-1000-0c46-62f32d35ec04","testStepResults":{"TestStepResult":[{"id":"EID6a31ad60-0175-1000-26ff-576028ecb458","attachments":{"attachment":[{"ref":"EID99d63feb-d2c7-4f99-8853-24e5f0a36a43"},{"ref":"EIDad4d1373-a95e-4ffb-988b-ea0680993a39"}]},"parent":{"ref":"EID6a31ad60-0175-1000-0c46-62f32d35ec04"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:14:01Z","duration":194,"status":"PASSED"},{"id":"EID6a31ae8e-0175-1000-aad8-bd68bfe77f9c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31af9c-0175-1000-cffe-cc8c0a8e0820","parent":{"ref":"EID6a31ae8e-0175-1000-aad8-bd68bfe77f9c"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:14:02Z","duration":0,"status":"PASSED"},{"id":"EID6a31af9c-0175-1000-905a-670f98e63af9","parent":{"ref":"EID6a31ae8e-0175-1000-aad8-bd68bfe77f9c"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:14:02Z","duration":0,"status":"PASSED"},{"id":"EID6a31af9c-0175-1000-91cd-d530501a2822","parent":{"ref":"EID6a31ae8e-0175-1000-aad8-bd68bfe77f9c"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:14:02Z","duration":0,"status":"PASSED"},{"id":"EID6a31af9c-0175-1000-1b19-390bad049c79","parent":{"ref":"EID6a31ae8e-0175-1000-aad8-bd68bfe77f9c"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:14:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID68283681-a4ba-4921-9557-ca2b75c16f77"},{"ref":"EID565ab963-3923-40ae-85c6-a42e28f4ed5c"},{"ref":"EIDe8473eb1-5f3e-4e57-aae6-3f13bc061c40"}]},"parent":{"ref":"EID6a31ad60-0175-1000-0c46-62f32d35ec04"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:14:02Z","duration":78,"status":"PASSED"}]},"parent":{"ref":"EID6a31ac32-0175-1000-05e6-1b0df8e307d1"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:14:01Z","duration":572,"status":"PASSED"},{"id":"EID6a31af9c-0175-1000-c2a1-7d64a17c3304","testStepResults":{"TestStepResult":[{"id":"EID6a31af9c-0175-1000-64c7-a47069c62d2a","attachments":{"attachment":[{"ref":"EID1d157192-7763-4b74-b3bf-9193f0251e3e"},{"ref":"EIDd49c9d01-a0fb-40dc-b397-9abbabab54f4"}]},"parent":{"ref":"EID6a31af9c-0175-1000-c2a1-7d64a17c3304"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:14:02Z","duration":134,"status":"PASSED"},{"id":"EID6a31b052-0175-1000-e418-5141c67f4dc1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31b1b2-0175-1000-8455-7daaac685923","parent":{"ref":"EID6a31b052-0175-1000-e418-5141c67f4dc1"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6a31b1b2-0175-1000-f898-576ec7634ca9","parent":{"ref":"EID6a31b052-0175-1000-e418-5141c67f4dc1"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6a31b1b2-0175-1000-44c5-8b421ef5ea32","parent":{"ref":"EID6a31b052-0175-1000-e418-5141c67f4dc1"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6a31b1b2-0175-1000-ebf9-a0f82a2468ab","parent":{"ref":"EID6a31b052-0175-1000-e418-5141c67f4dc1"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6a31b1b2-0175-1000-bc40-cbbef14508b7","parent":{"ref":"EID6a31b052-0175-1000-e418-5141c67f4dc1"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:14:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa13c34a0-8bf0-4832-9b3b-80a2a2167be3"},{"ref":"EID8795163b-9d5d-483f-b0af-efbb561b1c10"},{"ref":"EID82f52dee-c3c7-466c-8b57-4a7a7a0176a4"}]},"parent":{"ref":"EID6a31af9c-0175-1000-c2a1-7d64a17c3304"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:14:02Z","duration":86,"status":"PASSED"}]},"parent":{"ref":"EID6a31ac32-0175-1000-05e6-1b0df8e307d1"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:14:02Z","duration":534,"status":"PASSED"},{"id":"EID6a31b1b2-0175-1000-16a9-8263643284d6","testStepResults":{"TestStepResult":[{"id":"EID6a31b1b2-0175-1000-ed43-a6e78759e6cf","attachments":{"attachment":[{"ref":"EID793e7138-8c37-4eec-94ef-2626d643a268"},{"ref":"EID0497ad06-896d-430c-88c0-c246e3eae05f"}]},"parent":{"ref":"EID6a31b1b2-0175-1000-16a9-8263643284d6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:14:03Z","duration":103,"status":"PASSED"},{"id":"EID6a31b247-0175-1000-209f-ca03b918c81d","parent":{"ref":"EID6a31b1b2-0175-1000-16a9-8263643284d6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:14:03Z","duration":1,"status":"PASSED"},{"id":"EID6a31b248-0175-1000-e0d0-7e33d1a679b4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31b377-0175-1000-7540-878dbf5e8f5a","parent":{"ref":"EID6a31b248-0175-1000-e0d0-7e33d1a679b4"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6a31b377-0175-1000-e756-507a2841e562","parent":{"ref":"EID6a31b248-0175-1000-e0d0-7e33d1a679b4"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6a31b377-0175-1000-d7da-38ed21f6fb95","parent":{"ref":"EID6a31b248-0175-1000-e0d0-7e33d1a679b4"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6a31b377-0175-1000-4db1-64eb26b87e7e","parent":{"ref":"EID6a31b248-0175-1000-e0d0-7e33d1a679b4"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:14:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID73d50034-5c7f-46a8-b808-45455712e0ec"},{"ref":"EID8f9859e7-44c7-4ec4-8db4-95f4c6a11502"},{"ref":"EID5fc8bbe2-13af-447a-843d-71197d878c66"}]},"parent":{"ref":"EID6a31b1b2-0175-1000-16a9-8263643284d6"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:14:03Z","duration":104,"status":"PASSED"},{"id":"EID6a31b377-0175-1000-5319-7052ee24a085","attachments":{"attachment":{"ref":"EIDe67e4d8b-8c24-49d2-8b09-b2b6758e6efb"}},"parent":{"ref":"EID6a31b1b2-0175-1000-16a9-8263643284d6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:14:03Z","duration":2,"status":"PASSED"},{"id":"EID6a31b383-0175-1000-6f97-3141c4bf8673","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31b4a6-0175-1000-e1c8-4790980b1756","parent":{"ref":"EID6a31b383-0175-1000-6f97-3141c4bf8673"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6a31b4a6-0175-1000-b81d-ef38bf2605de","parent":{"ref":"EID6a31b383-0175-1000-6f97-3141c4bf8673"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6a31b4a6-0175-1000-8dc1-34a6a38079ac","parent":{"ref":"EID6a31b383-0175-1000-6f97-3141c4bf8673"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6a31b4a6-0175-1000-9723-953df60e692b","parent":{"ref":"EID6a31b383-0175-1000-6f97-3141c4bf8673"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:14:03Z","duration":0,"status":"PASSED"},{"id":"EID6a31b4a6-0175-1000-f062-139d974d08e7","parent":{"ref":"EID6a31b383-0175-1000-6f97-3141c4bf8673"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:14:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4f40ad7b-b583-4035-9f51-646b794c494c"},{"ref":"EID8c70e134-e2b4-4703-be01-c57367acd7e0"},{"ref":"EID49e516b3-2509-460f-8ad1-339dc6004506"}]},"parent":{"ref":"EID6a31b1b2-0175-1000-16a9-8263643284d6"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:14:03Z","duration":88,"status":"PASSED"}]},"parent":{"ref":"EID6a31ac32-0175-1000-05e6-1b0df8e307d1"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:14:03Z","duration":756,"status":"PASSED"},{"id":"EID6a31b4a6-0175-1000-6e5f-26673812c380","testStepResults":{"TestStepResult":[{"id":"EID6a31b4a6-0175-1000-a745-79941f2785a8","attachments":{"attachment":[{"ref":"EIDb929085b-108b-4ab5-b391-d061b1f3cf6e"},{"ref":"EID81d4dc90-fe87-4b6d-8930-307e3a28530f"}]},"parent":{"ref":"EID6a31b4a6-0175-1000-6e5f-26673812c380"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:14:03Z","duration":199,"status":"PASSED"},{"id":"EID6a31b5b7-0175-1000-e622-8da1afafdbd9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31b6ec-0175-1000-6dd5-a51758a0fb94","parent":{"ref":"EID6a31b5b7-0175-1000-e622-8da1afafdbd9"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:14:04Z","duration":0,"status":"PASSED"},{"id":"EID6a31b6ec-0175-1000-5782-782fdf716873","parent":{"ref":"EID6a31b5b7-0175-1000-e622-8da1afafdbd9"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:14:04Z","duration":1,"status":"PASSED"},{"id":"EID6a31b6ed-0175-1000-b1ad-9fb5911b0557","parent":{"ref":"EID6a31b5b7-0175-1000-e622-8da1afafdbd9"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:14:04Z","duration":0,"status":"PASSED"},{"id":"EID6a31b6ed-0175-1000-1afc-e3537c1c1c6e","parent":{"ref":"EID6a31b5b7-0175-1000-e622-8da1afafdbd9"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:14:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4e4f9b0a-3f03-4c79-ac37-fbf49bd541d9"},{"ref":"EIDd311db45-224d-4538-a26c-3db1074d5ba5"},{"ref":"EID3445fbad-30c0-4df8-a3e8-d1ea72e1d472"}]},"parent":{"ref":"EID6a31b4a6-0175-1000-6e5f-26673812c380"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:14:04Z","duration":117,"status":"PASSED"}]},"parent":{"ref":"EID6a31ac32-0175-1000-05e6-1b0df8e307d1"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:14:03Z","duration":583,"status":"PASSED"},{"id":"EID6a31b6ed-0175-1000-09f2-64d4d30fccec","testStepResults":{"TestStepResult":[{"id":"EID6a31b6ed-0175-1000-970e-514518b86bad","attachments":{"attachment":[{"ref":"EIDf713433b-4fa2-4a26-88e1-4509a1a05f9b"},{"ref":"EIDb4c2bedc-7c3b-4c36-8bb6-0c5df5a1e7f6"}]},"parent":{"ref":"EID6a31b6ed-0175-1000-09f2-64d4d30fccec"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:14:04Z","duration":173,"status":"PASSED"},{"id":"EID6a31b7c7-0175-1000-7217-21c0a7a34c1a","parent":{"ref":"EID6a31b6ed-0175-1000-09f2-64d4d30fccec"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:14:04Z","duration":0,"status":"PASSED"},{"id":"EID6a31b7c7-0175-1000-1cb0-d96c392b2900","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31b8a2-0175-1000-541c-e3034ae99141","parent":{"ref":"EID6a31b7c7-0175-1000-1cb0-d96c392b2900"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:14:04Z","duration":0,"status":"PASSED"},{"id":"EID6a31b8a2-0175-1000-a7bf-87cc1b376285","parent":{"ref":"EID6a31b7c7-0175-1000-1cb0-d96c392b2900"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:14:04Z","duration":1,"status":"PASSED"},{"id":"EID6a31b8a3-0175-1000-ae8f-42f925c60c56","parent":{"ref":"EID6a31b7c7-0175-1000-1cb0-d96c392b2900"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:14:04Z","duration":0,"status":"PASSED"},{"id":"EID6a31b8a3-0175-1000-d9eb-bfbd1d97204a","parent":{"ref":"EID6a31b7c7-0175-1000-1cb0-d96c392b2900"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:14:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID04ad316c-e46e-4f85-bdd7-146eb93863df"},{"ref":"EID78926a6f-0f0f-434a-ae70-dcc8e8aa0143"},{"ref":"EID75686681-ae36-4bb6-bbc7-669ba25c31fd"}]},"parent":{"ref":"EID6a31b6ed-0175-1000-09f2-64d4d30fccec"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:14:04Z","duration":68,"status":"PASSED"},{"id":"EID6a31b8a3-0175-1000-2c84-eda0dc04282b","attachments":{"attachment":{"ref":"EID2bbc6ef2-8213-4d52-8afd-6b8f3e6e049b"}},"parent":{"ref":"EID6a31b6ed-0175-1000-09f2-64d4d30fccec"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:14:04Z","duration":1,"status":"PASSED"},{"id":"EID6a31b8c7-0175-1000-5799-95dcc78ee937","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31ba4b-0175-1000-2304-0db85089b3f3","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a31b8c7-0175-1000-5799-95dcc78ee937"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:14:05Z","duration":17,"status":"FAILED"},{"id":"EID6a31ba5c-0175-1000-99d3-5546db3a322b","parent":{"ref":"EID6a31b8c7-0175-1000-5799-95dcc78ee937"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:14:05Z","duration":0,"status":"PASSED"},{"id":"EID6a31ba5c-0175-1000-b497-f7032087e105","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6a31b8c7-0175-1000-5799-95dcc78ee937"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:14:05Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID2438c10b-70c7-469b-bb12-1118d7c7a4c8"},{"ref":"EID7d19690e-e2a1-44f5-8c77-329543d17716"},{"ref":"EIDd35b8ae8-4359-4519-9d88-410ef43fd6ac"}]},"parent":{"ref":"EID6a31b6ed-0175-1000-09f2-64d4d30fccec"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:14:04Z","duration":317,"status":"FAILED"}]},"parent":{"ref":"EID6a31ac32-0175-1000-05e6-1b0df8e307d1"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:14:04Z","duration":894,"status":"FAILED"},{"id":"EID6a31ba6b-0175-1000-4ed3-a403c00d1b64","testStepResults":{"TestStepResult":[{"id":"EID6a31ba6b-0175-1000-0ae6-a1eab997d8e0","attachments":{"attachment":[{"ref":"EID1bb3b061-97c3-4309-895a-21dfc1fa3129"},{"ref":"EID44fdd76c-ac59-49ab-b162-27348ef79eb6"}]},"parent":{"ref":"EID6a31ba6b-0175-1000-4ed3-a403c00d1b64"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:14:05Z","duration":476,"status":"PASSED"},{"id":"EID6a31bcbc-0175-1000-36a8-fac0c3ea2023","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31bd7e-0175-1000-abe9-cc4f11fc2f6f","parent":{"ref":"EID6a31bcbc-0175-1000-36a8-fac0c3ea2023"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6a31bd7e-0175-1000-b26c-63c1e5f09c8f","parent":{"ref":"EID6a31bcbc-0175-1000-36a8-fac0c3ea2023"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6a31bd7e-0175-1000-8658-d3966e10b58d","parent":{"ref":"EID6a31bcbc-0175-1000-36a8-fac0c3ea2023"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6a31bd7e-0175-1000-d5b0-b515f1134dd9","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a31bcbc-0175-1000-36a8-fac0c3ea2023"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:14:06Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EID497befb6-5279-4b07-bb06-2869f7925981"},{"ref":"EIDd101a63f-4032-457b-97c0-3b399bad4fe3"},{"ref":"EID946c8eba-907e-4ad3-bc2f-05b81504e5aa"}]},"parent":{"ref":"EID6a31ba6b-0175-1000-4ed3-a403c00d1b64"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:14:05Z","duration":48,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a31ac32-0175-1000-05e6-1b0df8e307d1"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:14:05Z","duration":787,"status":"PASSED_MANUAL"},{"id":"EID6a31bd89-0175-1000-d40d-9c0186866fca","testStepResults":{"TestStepResult":{"id":"EID6a31bd89-0175-1000-026e-ba0bdbd430a0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31be9f-0175-1000-6300-194bd8a1b56f","parent":{"ref":"EID6a31bd89-0175-1000-026e-ba0bdbd430a0"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6a31be9f-0175-1000-f305-ffe490756197","parent":{"ref":"EID6a31bd89-0175-1000-026e-ba0bdbd430a0"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6a31be9f-0175-1000-0b19-4c6c388cbbbf","parent":{"ref":"EID6a31bd89-0175-1000-026e-ba0bdbd430a0"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6a31be9f-0175-1000-8b31-39ca33c4e465","parent":{"ref":"EID6a31bd89-0175-1000-026e-ba0bdbd430a0"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:14:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4dc577f5-9553-4040-ad31-995ed4528030"},{"ref":"EID73ef91db-bc9a-4c6a-9d99-cf7550ffa875"},{"ref":"EIDdce8bced-5fc4-4410-b99f-cb547027fa26"}]},"parent":{"ref":"EID6a31bd89-0175-1000-d40d-9c0186866fca"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:14:06Z","duration":87,"status":"PASSED"}},"parent":{"ref":"EID6a31ac32-0175-1000-05e6-1b0df8e307d1"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:14:06Z","duration":278,"status":"PASSED"},{"id":"EID6a31be9f-0175-1000-f9d7-cab6b631117f","testStepResults":{"TestStepResult":{"id":"EID6a31be9f-0175-1000-0348-6fffa2a374cc","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31c036-0175-1000-49cd-222f1b2eceb8","parent":{"ref":"EID6a31be9f-0175-1000-0348-6fffa2a374cc"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6a31c036-0175-1000-a01a-6e597dc4c60c","parent":{"ref":"EID6a31be9f-0175-1000-0348-6fffa2a374cc"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6a31c036-0175-1000-e49c-af1654b07cbb","parent":{"ref":"EID6a31be9f-0175-1000-0348-6fffa2a374cc"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:14:06Z","duration":0,"status":"PASSED"},{"id":"EID6a31c036-0175-1000-804a-25ecaa29d489","parent":{"ref":"EID6a31be9f-0175-1000-0348-6fffa2a374cc"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:14:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2a54106a-a651-46f5-9e15-7cf4b42ed051"},{"ref":"EIDd1ee2aab-2d76-4f38-927f-2670575e1237"},{"ref":"EID69e6c713-b925-4b80-a442-3d978496b0b5"}]},"parent":{"ref":"EID6a31be9f-0175-1000-f9d7-cab6b631117f"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:14:06Z","duration":103,"status":"PASSED"}},"parent":{"ref":"EID6a31ac32-0175-1000-05e6-1b0df8e307d1"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:14:06Z","duration":407,"status":"PASSED"},{"id":"EID6a31c037-0175-1000-9799-b6c3da46fa66","testStepResults":{"TestStepResult":{"id":"EID6a31c037-0175-1000-5db3-f60981bc2dab","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EID414688c1-fcbf-49d4-a23e-0008389eda65"},{"ref":"EIDdeadbeb5-1b8d-4400-b759-944efae4dc5a"},{"ref":"EID99bbc7bc-1b77-40dd-98cf-bbcb17c4fd18"},{"ref":"EID39421092-15e3-4aac-83f5-15a7bdfb3d86"},{"ref":"EID192aaf11-94bf-466f-aabf-9d8df0c26371"},{"ref":"EID64921034-fe53-4150-91b0-26449caf3d32"},{"ref":"EID67f2f74e-2a3d-4ac2-abbc-9e5fee9c0f6c"},{"ref":"EID7516b1a6-e10d-4bca-9f2c-c2c2bf3ea4ab"},{"ref":"EID6621ebc9-8d00-4573-8e22-b7a8406bc089"}]},"parent":{"ref":"EID6a31c037-0175-1000-9799-b6c3da46fa66"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:14:06Z","duration":769,"status":"SKIPPED"}},"parent":{"ref":"EID6a31ac32-0175-1000-05e6-1b0df8e307d1"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:14:06Z","duration":1054,"status":"SKIPPED"},{"id":"EID6a31c47c-0175-1000-46ab-dbb9f3e8e0a4","testStepResults":{"TestStepResult":{"id":"EID6a31c47c-0175-1000-f12a-1068047b5205","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31c585-0175-1000-53fe-3ef5c8e52b39","parent":{"ref":"EID6a31c47c-0175-1000-f12a-1068047b5205"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6a31c585-0175-1000-e016-6ca08e1b95b9","parent":{"ref":"EID6a31c47c-0175-1000-f12a-1068047b5205"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6a31c585-0175-1000-466e-e287885129bf","parent":{"ref":"EID6a31c47c-0175-1000-f12a-1068047b5205"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6a31c585-0175-1000-6183-fedee8082319","parent":{"ref":"EID6a31c47c-0175-1000-f12a-1068047b5205"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7eed3ccd-eb1f-4ec7-869c-d1e855fa141e"},{"ref":"EID50f6bfc0-148a-42eb-968a-5d7b016a0106"},{"ref":"EID77de9f67-cc25-470b-b9b9-257a7139495f"}]},"parent":{"ref":"EID6a31c47c-0175-1000-46ab-dbb9f3e8e0a4"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:14:07Z","duration":71,"status":"PASSED"}},"parent":{"ref":"EID6a31ac32-0175-1000-05e6-1b0df8e307d1"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:14:07Z","duration":265,"status":"PASSED"},{"id":"EID6a31c586-0175-1000-e9f9-21642d75fceb","testStepResults":{"TestStepResult":{"id":"EID6a31c586-0175-1000-b1f8-25d5eab00392","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31c6aa-0175-1000-1daf-507a50422414","parent":{"ref":"EID6a31c586-0175-1000-b1f8-25d5eab00392"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6a31c6aa-0175-1000-c6a0-83f54d2052c5","parent":{"ref":"EID6a31c586-0175-1000-b1f8-25d5eab00392"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6a31c6aa-0175-1000-1f84-dd02cf07def6","parent":{"ref":"EID6a31c586-0175-1000-b1f8-25d5eab00392"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6a31c6aa-0175-1000-b7e8-b7d72d6bfff6","parent":{"ref":"EID6a31c586-0175-1000-b1f8-25d5eab00392"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6a31c6aa-0175-1000-d86b-7c1da41967b2","parent":{"ref":"EID6a31c586-0175-1000-b1f8-25d5eab00392"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6a31c6aa-0175-1000-04ce-a7ff5983c1a9","parent":{"ref":"EID6a31c586-0175-1000-b1f8-25d5eab00392"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID159b1bc7-caac-497a-9285-9a8badf59738"},{"ref":"EID0babdfc2-2701-41a9-9318-da129611d07a"},{"ref":"EIDc14e52bd-b200-4169-93ee-b7c9bf94b131"}]},"parent":{"ref":"EID6a31c586-0175-1000-e9f9-21642d75fceb"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:14:08Z","duration":54,"status":"PASSED"}},"parent":{"ref":"EID6a31ac32-0175-1000-05e6-1b0df8e307d1"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:14:08Z","duration":302,"status":"PASSED"},{"id":"EID6a31c6b4-0175-1000-b85b-3f9ae3604919","testStepResults":{"TestStepResult":{"id":"EID6a31c6b4-0175-1000-0283-55c465271f8a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31c7b4-0175-1000-7306-a4152a1d5529","parent":{"ref":"EID6a31c6b4-0175-1000-0283-55c465271f8a"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6a31c7b4-0175-1000-a251-6b8a40c1b68d","parent":{"ref":"EID6a31c6b4-0175-1000-0283-55c465271f8a"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6a31c7b4-0175-1000-1078-ec4501d2ffd7","parent":{"ref":"EID6a31c6b4-0175-1000-0283-55c465271f8a"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6a31c7b4-0175-1000-c1a1-fa31cc961b55","parent":{"ref":"EID6a31c6b4-0175-1000-0283-55c465271f8a"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6a31c7b4-0175-1000-89ee-5d951f34220e","parent":{"ref":"EID6a31c6b4-0175-1000-0283-55c465271f8a"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6a31c7b4-0175-1000-b88b-19d2edc9fed9","parent":{"ref":"EID6a31c6b4-0175-1000-0283-55c465271f8a"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc665b36d-7f69-4f19-8673-8355157950d0"},{"ref":"EID9922e9d3-7d7d-4030-aefe-72073d8de997"},{"ref":"EIDaa78cb2c-bccf-469b-9cb0-ac254af80fbd"}]},"parent":{"ref":"EID6a31c6b4-0175-1000-b85b-3f9ae3604919"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:14:08Z","duration":93,"status":"PASSED"}},"parent":{"ref":"EID6a31ac32-0175-1000-05e6-1b0df8e307d1"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:14:08Z","duration":256,"status":"PASSED"},{"id":"EID6a31c7b5-0175-1000-a81b-31f28b0d68f7","testStepResults":{"TestStepResult":{"id":"EID6a31c7b5-0175-1000-09db-61a8fdfd7945","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31c8cf-0175-1000-360f-52e7b5bff57b","parent":{"ref":"EID6a31c7b5-0175-1000-09db-61a8fdfd7945"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6a31c8cf-0175-1000-5f50-6b4d34519f1d","parent":{"ref":"EID6a31c7b5-0175-1000-09db-61a8fdfd7945"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6a31c8cf-0175-1000-5832-31e80a47f005","parent":{"ref":"EID6a31c7b5-0175-1000-09db-61a8fdfd7945"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"},{"id":"EID6a31c8cf-0175-1000-3cd5-d5266e60c4a8","parent":{"ref":"EID6a31c7b5-0175-1000-09db-61a8fdfd7945"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:14:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6f435d0c-b8cd-4aa1-a0c6-298d479ed347"},{"ref":"EIDe558820a-07a4-41ad-a7d4-65595e446fa9"},{"ref":"EID25544db5-b73f-4c16-9704-97d1434ab7a2"}]},"parent":{"ref":"EID6a31c7b5-0175-1000-a81b-31f28b0d68f7"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:14:08Z","duration":66,"status":"PASSED"}},"parent":{"ref":"EID6a31ac32-0175-1000-05e6-1b0df8e307d1"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:14:08Z","duration":282,"status":"PASSED"},{"id":"EID6a31c8cf-0175-1000-02b3-51eaa432148c","testStepResults":{"TestStepResult":[{"id":"EID6a31c8cf-0175-1000-a18d-781ebaed138b","attachments":{"attachment":[{"ref":"EID81ca5ae9-af5c-48d3-8e6c-c84e491de825"},{"ref":"EID6267f5ea-7e9b-4266-be84-232ac79f477d"},{"ref":"EID651b2df0-2690-41d6-9225-c19f95f45f26"},{"ref":"EIDc14305b4-47f5-4173-97ac-6a31720a38f0"}]},"parent":{"ref":"EID6a31c8cf-0175-1000-02b3-51eaa432148c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:14:08Z","duration":362,"status":"PASSED"},{"id":"EID6a31ca79-0175-1000-0b81-563c708f7ad0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31cbc7-0175-1000-ac38-c49a4d3056b3","parent":{"ref":"EID6a31ca79-0175-1000-0b81-563c708f7ad0"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6a31cbc7-0175-1000-22a2-aa8fdd271ee3","parent":{"ref":"EID6a31ca79-0175-1000-0b81-563c708f7ad0"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6a31cbc7-0175-1000-05a6-7aa349022078","parent":{"ref":"EID6a31ca79-0175-1000-0b81-563c708f7ad0"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:14:09Z","duration":0,"status":"PASSED"},{"id":"EID6a31cbc7-0175-1000-65e8-1858af18edea","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6a31ca79-0175-1000-0b81-563c708f7ad0"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:14:09Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID393c51d5-379d-44e9-b1df-6685aad0bbca"},{"ref":"EID2f5a2d7f-84cd-49a2-a512-6482e507bf57"},{"ref":"EIDade8f9f0-1b8c-47a0-a45e-891612a9f05b"}]},"parent":{"ref":"EID6a31c8cf-0175-1000-02b3-51eaa432148c"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:14:09Z","duration":202,"status":"FAILED"}]},"parent":{"ref":"EID6a31ac32-0175-1000-05e6-1b0df8e307d1"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:14:08Z","duration":760,"status":"FAILED"},{"id":"EID6a31cbc7-0175-1000-7e47-3167c3b7aeff","testStepResults":{"TestStepResult":{"id":"EID6a31cbc7-0175-1000-2ba2-dd5c131e5b24","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31cd9e-0175-1000-d73e-61e8a5f332df","parent":{"ref":"EID6a31cbc7-0175-1000-2ba2-dd5c131e5b24"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6a31cd9e-0175-1000-b88d-178121d0c12b","parent":{"ref":"EID6a31cbc7-0175-1000-2ba2-dd5c131e5b24"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6a31cd9e-0175-1000-f26c-e8eaf5ce5c06","parent":{"ref":"EID6a31cbc7-0175-1000-2ba2-dd5c131e5b24"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6a31cd9e-0175-1000-a8ac-99e91a1e137a","parent":{"ref":"EID6a31cbc7-0175-1000-2ba2-dd5c131e5b24"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:14:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd3c82a14-273f-44a6-a881-45e9cb0fb610"},{"ref":"EID68118cd7-56a2-44a1-947c-04eb02fb5ac7"},{"ref":"EIDbf06960f-9a65-4c79-809d-9a61f59cfe75"}]},"parent":{"ref":"EID6a31cbc7-0175-1000-7e47-3167c3b7aeff"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:14:09Z","duration":68,"status":"PASSED"}},"parent":{"ref":"EID6a31ac32-0175-1000-05e6-1b0df8e307d1"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:14:09Z","duration":471,"status":"PASSED"},{"id":"EID6a31cd9f-0175-1000-ab4d-3430c12650dd","testStepResults":{"TestStepResult":[{"id":"EID6a31cd9f-0175-1000-fee5-7f456f98a42f","parent":{"ref":"EID6a31cd9f-0175-1000-ab4d-3430c12650dd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6a31cd9f-0175-1000-e348-8eee138d73aa","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31ce6a-0175-1000-c473-0d6571d70210","parent":{"ref":"EID6a31cd9f-0175-1000-e348-8eee138d73aa"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6a31ce6a-0175-1000-0ab0-41756cc99a36","parent":{"ref":"EID6a31cd9f-0175-1000-e348-8eee138d73aa"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6a31ce6a-0175-1000-65d2-be0f01e532d3","parent":{"ref":"EID6a31cd9f-0175-1000-e348-8eee138d73aa"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6a31ce6a-0175-1000-cafc-7832420b9baf","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6a31cd9f-0175-1000-e348-8eee138d73aa"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:14:10Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID139762a9-8816-4c21-ad28-88512b88bca2"},{"ref":"EIDbcb2edf5-36e4-460f-971a-1ee1456a813b"},{"ref":"EID562da5ac-b36a-46cc-b71d-74bd62c2cb98"}]},"parent":{"ref":"EID6a31cd9f-0175-1000-ab4d-3430c12650dd"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:14:10Z","duration":67,"status":"FAILED"}]},"parent":{"ref":"EID6a31ac32-0175-1000-05e6-1b0df8e307d1"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:14:10Z","duration":203,"status":"FAILED"}]},"parent":{"ref":"EID61f249a7-5450-458a-8ad5-0d17fbf53da2"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:14:01Z","duration":8761,"status":"FAILED"},{"id":"EID6a31ce6b-0175-1000-2716-81124318cd99","testCaseResults":{"TestCaseResult":[{"id":"EID6a31ce6b-0175-1000-ca9e-25dc8f7758cf","testStepResults":{"TestStepResult":[{"id":"EID6a31ce6b-0175-1000-0b50-8b98f9adb9bb","parent":{"ref":"EID6a31ce6b-0175-1000-ca9e-25dc8f7758cf"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6a31ce6b-0175-1000-9dd0-54eb1f61a23c","parent":{"ref":"EID6a31ce6b-0175-1000-ca9e-25dc8f7758cf"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:14:10Z","duration":68,"status":"PASSED"},{"id":"EID6a31ce6b-0175-1000-e31c-48c3e3a995c9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31cf21-0175-1000-5da8-9c48531ba132","parent":{"ref":"EID6a31ce6b-0175-1000-e31c-48c3e3a995c9"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6a31cf21-0175-1000-3a6d-3f7393e00acf","parent":{"ref":"EID6a31ce6b-0175-1000-e31c-48c3e3a995c9"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6a31cf21-0175-1000-866d-ab432c79a65e","parent":{"ref":"EID6a31ce6b-0175-1000-e31c-48c3e3a995c9"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:14:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID34c5ef63-6ee6-4fa4-9263-cbfe27e4f496"},{"ref":"EID6d90c92e-e6dc-412d-9745-2a215f28b9a7"},{"ref":"EID2525f40c-4034-4ec5-8cf7-23c12f0ac181"}]},"parent":{"ref":"EID6a31ce6b-0175-1000-ca9e-25dc8f7758cf"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:14:10Z","duration":50,"status":"PASSED"},{"id":"EID6a31cf21-0175-1000-f706-016583d28fda","attachments":{"attachment":{"ref":"EIDf2b91965-62c9-4d9b-9e4f-e56bd913de79"}},"parent":{"ref":"EID6a31ce6b-0175-1000-ca9e-25dc8f7758cf"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6a31cf2e-0175-1000-5336-20c981bd830d","parent":{"ref":"EID6a31ce6b-0175-1000-ca9e-25dc8f7758cf"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:14:10Z","duration":37,"status":"PASSED"}]},"parent":{"ref":"EID6a31ce6b-0175-1000-2716-81124318cd99"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:14:10Z","duration":233,"status":"PASSED"},{"id":"EID6a31cf54-0175-1000-6486-778343ca61ba","testStepResults":{"TestStepResult":[{"id":"EID6a31cf54-0175-1000-ee41-21d6756ad086","parent":{"ref":"EID6a31cf54-0175-1000-6486-778343ca61ba"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:14:10Z","duration":104,"status":"PASSED"},{"id":"EID6a31cf54-0175-1000-7a22-1f750133b308","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31cfba-0175-1000-4e9d-6327f30dc9b3","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a31cf54-0175-1000-7a22-1f750133b308"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:14:10Z","duration":12,"status":"FAILED"},{"id":"EID6a31cfc7-0175-1000-7e04-0e7d662d586a","parent":{"ref":"EID6a31cf54-0175-1000-7a22-1f750133b308"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6a31cfc7-0175-1000-43ca-9a3567639b06","parent":{"ref":"EID6a31cf54-0175-1000-7a22-1f750133b308"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6a31cfc7-0175-1000-046f-cd82fab07515","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6a31cf54-0175-1000-7a22-1f750133b308"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:14:10Z","duration":0,"status":"FAILED"},{"id":"EID6a31cfc7-0175-1000-fa4c-895da7dd4c99","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6a31cf54-0175-1000-7a22-1f750133b308"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:14:10Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID2872eef9-e561-4f74-b37a-0a9ffd1db889"},{"ref":"EID22323128-a75a-4569-b24a-240251253c2b"},{"ref":"EIDfa67c88d-bea2-4a1f-a9db-86a05c54953d"}]},"parent":{"ref":"EID6a31cf54-0175-1000-6486-778343ca61ba"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:14:10Z","duration":28,"status":"FAILED"}]},"parent":{"ref":"EID6a31ce6b-0175-1000-2716-81124318cd99"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:14:10Z","duration":115,"status":"FAILED"},{"id":"EID6a31cfc7-0175-1000-320b-626e53e7eb93","testStepResults":{"TestStepResult":{"id":"EID6a31cfc7-0175-1000-9fe6-1b62e164aa97","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31d050-0175-1000-42b0-1ab5298796c6","parent":{"ref":"EID6a31cfc7-0175-1000-9fe6-1b62e164aa97"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:14:10Z","duration":0,"status":"PASSED"},{"id":"EID6a31d050-0175-1000-dea6-4218f2dccfda","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a31cfc7-0175-1000-9fe6-1b62e164aa97"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:14:10Z","duration":12,"status":"FAILED"},{"id":"EID6a31d05c-0175-1000-95e4-eb35c76f8f2c","parent":{"ref":"EID6a31cfc7-0175-1000-9fe6-1b62e164aa97"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:14:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc4f462cc-6cba-4021-b8af-8e66927c5a47"},{"ref":"EID1af5d4c0-4007-4168-857d-57970675e235"},{"ref":"EID00a04dd7-484a-4a28-98c7-e2bde9be32d9"}]},"parent":{"ref":"EID6a31cfc7-0175-1000-320b-626e53e7eb93"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:14:10Z","duration":77,"status":"FAILED"}},"parent":{"ref":"EID6a31ce6b-0175-1000-2716-81124318cd99"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:14:10Z","duration":149,"status":"FAILED"},{"id":"EID6a31d05d-0175-1000-c257-8c5b334e36d5","testStepResults":{"TestStepResult":{"id":"EID6a31d05d-0175-1000-f0fe-7945b3e80063","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31d0bf-0175-1000-8f7e-a73dd84874b4","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a31d05d-0175-1000-f0fe-7945b3e80063"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"FAILED"},{"id":"EID6a31d0bf-0175-1000-a20e-2107fc8652f0","parent":{"ref":"EID6a31d05d-0175-1000-f0fe-7945b3e80063"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"PASSED"},{"id":"EID6a31d0bf-0175-1000-dd23-3e87ed0202c1","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a31d05d-0175-1000-f0fe-7945b3e80063"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:14:11Z","duration":20,"status":"FAILED"},{"id":"EID6a31d0d3-0175-1000-a78a-8d01a594ae3b","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6a31d05d-0175-1000-f0fe-7945b3e80063"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDf47ac08d-2bb7-498a-bf97-f2444bb22ff5"},{"ref":"EID012e78c1-32ef-47d3-a5c5-c259f8517989"},{"ref":"EID9ec23784-d449-42df-8a7f-b43d690de86e"}]},"parent":{"ref":"EID6a31d05d-0175-1000-c257-8c5b334e36d5"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:14:10Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6a31ce6b-0175-1000-2716-81124318cd99"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:14:10Z","duration":119,"status":"FAILED"},{"id":"EID6a31d0d4-0175-1000-5661-f060a060ba09","testStepResults":{"TestStepResult":{"id":"EID6a31d0d4-0175-1000-bc31-b2ecade116dd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31d14e-0175-1000-4d7d-484a159be53f","parent":{"ref":"EID6a31d0d4-0175-1000-bc31-b2ecade116dd"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"PASSED"},{"id":"EID6a31d14e-0175-1000-fe4d-49cbfb69ad1e","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a31d0d4-0175-1000-bc31-b2ecade116dd"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:14:11Z","duration":47,"status":"FAILED"},{"id":"EID6a31d17d-0175-1000-5b0e-f54f72d30cdf","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6a31d0d4-0175-1000-bc31-b2ecade116dd"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID31d1346b-e387-422b-a956-f4501ad95aee"},{"ref":"EID7bafbe6e-b21c-45b4-9ba4-6f7547e2da12"},{"ref":"EIDb4206eec-6124-476b-af28-a9873f1bda8f"}]},"parent":{"ref":"EID6a31d0d4-0175-1000-5661-f060a060ba09"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:14:11Z","duration":31,"status":"FAILED"}},"parent":{"ref":"EID6a31ce6b-0175-1000-2716-81124318cd99"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:14:11Z","duration":169,"status":"FAILED"},{"id":"EID6a31d17d-0175-1000-0a80-0d3f18afcfb9","testStepResults":{"TestStepResult":{"id":"EID6a31d17d-0175-1000-b059-af77a102e196","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31d1d6-0175-1000-8dd3-6217b6d426e1","parent":{"ref":"EID6a31d17d-0175-1000-b059-af77a102e196"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"PASSED"},{"id":"EID6a31d1d6-0175-1000-4ecf-8083b373e8e0","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a31d17d-0175-1000-b059-af77a102e196"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:14:11Z","duration":32,"status":"FAILED"},{"id":"EID6a31d1f6-0175-1000-1e22-302e7a39db88","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a31d17d-0175-1000-b059-af77a102e196"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID0fba13e0-d899-436d-9db8-89ac9c609035"},{"ref":"EID11fc0813-959e-465c-ac32-f7b329ceaf98"},{"ref":"EID2480d5b8-4309-4d4e-b25b-a3c0335db56b"}]},"parent":{"ref":"EID6a31d17d-0175-1000-0a80-0d3f18afcfb9"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:14:11Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6a31ce6b-0175-1000-2716-81124318cd99"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:14:11Z","duration":121,"status":"FAILED"},{"id":"EID6a31d1f6-0175-1000-b7e7-63d8c054cff3","testStepResults":{"TestStepResult":{"id":"EID6a31d1f6-0175-1000-3c77-05713e8f7ede","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31d284-0175-1000-ca98-71b4c2ec88db","parent":{"ref":"EID6a31d1f6-0175-1000-3c77-05713e8f7ede"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"PASSED"},{"id":"EID6a31d284-0175-1000-bfc0-d63e10006617","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a31d1f6-0175-1000-3c77-05713e8f7ede"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:14:11Z","duration":11,"status":"FAILED"},{"id":"EID6a31d28f-0175-1000-c680-09a9f7ee95e5","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6a31d1f6-0175-1000-3c77-05713e8f7ede"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"FAILED"},{"id":"EID6a31d28f-0175-1000-18a2-eef3ea397e71","parent":{"ref":"EID6a31d1f6-0175-1000-3c77-05713e8f7ede"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"PASSED"},{"id":"EID6a31d28f-0175-1000-e31b-b047b83e2741","parent":{"ref":"EID6a31d1f6-0175-1000-3c77-05713e8f7ede"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID79717458-6634-4d40-8e4d-192a1cf58cd2"},{"ref":"EID84a0d3d0-ba4d-46bf-bf0c-9bf4024c93f7"},{"ref":"EID04a416e0-b3ea-405d-9fea-f3b8be2a860a"}]},"parent":{"ref":"EID6a31d1f6-0175-1000-b7e7-63d8c054cff3"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:14:11Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6a31ce6b-0175-1000-2716-81124318cd99"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:14:11Z","duration":153,"status":"FAILED"},{"id":"EID6a31d28f-0175-1000-4e59-eac77f18dd75","testStepResults":{"TestStepResult":{"id":"EID6a31d28f-0175-1000-9ad6-941abc12eee2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31d2e5-0175-1000-b9f8-c3d2f68f917c","parent":{"ref":"EID6a31d28f-0175-1000-9ad6-941abc12eee2"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"PASSED"},{"id":"EID6a31d2e5-0175-1000-f135-edd6a23ccea9","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a31d28f-0175-1000-9ad6-941abc12eee2"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:14:11Z","duration":11,"status":"FAILED"},{"id":"EID6a31d2f0-0175-1000-2dde-5073abb17674","parent":{"ref":"EID6a31d28f-0175-1000-9ad6-941abc12eee2"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdb660174-a9ff-416d-8eb6-798eae6eb843"},{"ref":"EIDc3634734-59b1-4c9c-bfef-29005bb0bdee"},{"ref":"EID5e2179fc-e91c-425f-b7e5-e2d193bc3153"}]},"parent":{"ref":"EID6a31d28f-0175-1000-4e59-eac77f18dd75"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:14:11Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6a31ce6b-0175-1000-2716-81124318cd99"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:14:11Z","duration":107,"status":"FAILED"},{"id":"EID6a31d2fa-0175-1000-486e-afd1b371c4c1","testStepResults":{"TestStepResult":{"id":"EID6a31d2fa-0175-1000-c474-c1d4486712e4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31d37e-0175-1000-3062-38b0e263ba4c","parent":{"ref":"EID6a31d2fa-0175-1000-c474-c1d4486712e4"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"PASSED"},{"id":"EID6a31d37e-0175-1000-3851-f7c575f1c12c","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a31d2fa-0175-1000-c474-c1d4486712e4"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:14:11Z","duration":11,"status":"FAILED"},{"id":"EID6a31d389-0175-1000-4ea6-fd65a512183f","parent":{"ref":"EID6a31d2fa-0175-1000-c474-c1d4486712e4"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDccefffc6-f22a-4872-b07d-3daea73f4eb8"},{"ref":"EIDff59ed87-adbc-4deb-a8c4-0c807b447b86"},{"ref":"EIDf0937015-ebda-4810-a390-615539883aa3"}]},"parent":{"ref":"EID6a31d2fa-0175-1000-486e-afd1b371c4c1"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:14:11Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6a31ce6b-0175-1000-2716-81124318cd99"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:14:11Z","duration":143,"status":"FAILED"},{"id":"EID6a31d389-0175-1000-b1e8-bdd054b2a911","testStepResults":{"TestStepResult":{"id":"EID6a31d389-0175-1000-a01d-5e593ca54689","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31d402-0175-1000-0168-458c85a94d79","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a31d389-0175-1000-a01d-5e593ca54689"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:14:11Z","duration":12,"status":"FAILED"},{"id":"EID6a31d40e-0175-1000-dfe0-1be48560797a","parent":{"ref":"EID6a31d389-0175-1000-a01d-5e593ca54689"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"PASSED"},{"id":"EID6a31d40e-0175-1000-7768-72343c26b272","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a31d389-0175-1000-a01d-5e593ca54689"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"FAILED"},{"id":"EID6a31d40e-0175-1000-8863-1e054a187162","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6a31d389-0175-1000-a01d-5e593ca54689"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:14:11Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDbe28b06a-507c-4b23-8a89-76d169d10f69"},{"ref":"EIDf9211d91-cd9c-40f3-95ce-b3d7e6f44a78"},{"ref":"EIDdf80af39-c92e-4ba2-ba7b-8d1c9ef004cc"}]},"parent":{"ref":"EID6a31d389-0175-1000-b1e8-bdd054b2a911"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:14:11Z","duration":31,"status":"FAILED"}},"parent":{"ref":"EID6a31ce6b-0175-1000-2716-81124318cd99"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:14:11Z","duration":133,"status":"FAILED"},{"id":"EID6a31d40e-0175-1000-01d6-c9744a7e5f78","testStepResults":{"TestStepResult":{"id":"EID6a31d40e-0175-1000-518a-834e0c641078","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31d49d-0175-1000-f581-1d82a94ec1f7","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a31d40e-0175-1000-518a-834e0c641078"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:14:11Z","duration":13,"status":"FAILED"},{"id":"EID6a31d4aa-0175-1000-1caf-2b2016a5eafe","parent":{"ref":"EID6a31d40e-0175-1000-518a-834e0c641078"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:14:12Z","duration":0,"status":"PASSED"},{"id":"EID6a31d4aa-0175-1000-6cd8-44749a8eb40e","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a31d40e-0175-1000-518a-834e0c641078"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:14:12Z","duration":0,"status":"FAILED"},{"id":"EID6a31d4aa-0175-1000-3d25-2f17bd5c35a1","parent":{"ref":"EID6a31d40e-0175-1000-518a-834e0c641078"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:14:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa3541977-6b27-444f-a2c9-e08cf74c76f2"},{"ref":"EIDeba8d8d0-d828-43f3-94a6-58049a1f80e8"},{"ref":"EID0009e4e7-8b38-4a9c-9e57-94dd27f31d1c"}]},"parent":{"ref":"EID6a31d40e-0175-1000-01d6-c9744a7e5f78"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:14:11Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6a31ce6b-0175-1000-2716-81124318cd99"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:14:11Z","duration":156,"status":"FAILED"},{"id":"EID6a31d4aa-0175-1000-6356-70d148262b95","testStepResults":{"TestStepResult":[{"id":"EID6a31d4aa-0175-1000-fc2b-ffc7d416b625","parent":{"ref":"EID6a31d4aa-0175-1000-6356-70d148262b95"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:14:12Z","duration":0,"status":"PASSED"},{"id":"EID6a31d4aa-0175-1000-8799-ff60e5b45561","parent":{"ref":"EID6a31d4aa-0175-1000-6356-70d148262b95"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:14:12Z","duration":166,"status":"PASSED"},{"id":"EID6a31d4aa-0175-1000-1177-18aa4e489a41","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31d5b6-0175-1000-0dfe-ce49be85a0c6","parent":{"ref":"EID6a31d4aa-0175-1000-1177-18aa4e489a41"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:14:12Z","duration":0,"status":"PASSED"},{"id":"EID6a31d5b6-0175-1000-b8f9-7f50b72658c7","parent":{"ref":"EID6a31d4aa-0175-1000-1177-18aa4e489a41"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:14:12Z","duration":0,"status":"PASSED"},{"id":"EID6a31d5b6-0175-1000-d78d-715ac7e07f5c","parent":{"ref":"EID6a31d4aa-0175-1000-1177-18aa4e489a41"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:14:12Z","duration":0,"status":"PASSED"},{"id":"EID6a31d5b6-0175-1000-b28d-81dfec1e0108","parent":{"ref":"EID6a31d4aa-0175-1000-1177-18aa4e489a41"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:14:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf418e956-ce04-4df2-b837-750e75e74866"},{"ref":"EID1a24f784-2595-4bf1-8252-ca9c80a4a2b9"},{"ref":"EIDc9d9d87b-78eb-4186-94f8-af7a57804749"}]},"parent":{"ref":"EID6a31d4aa-0175-1000-6356-70d148262b95"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:14:12Z","duration":89,"status":"PASSED"},{"id":"EID6a31d5b6-0175-1000-d6b8-d7a8e4f7dd06","attachments":{"attachment":{"ref":"EIDf4a80fdd-c864-4fa6-8e74-5c9f7abc5208"}},"parent":{"ref":"EID6a31d4aa-0175-1000-6356-70d148262b95"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:14:12Z","duration":3,"status":"PASSED"},{"id":"EID6a31d608-0175-1000-23b5-68c0457a9c75","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31d6f7-0175-1000-61d8-365ae13e9430","parent":{"ref":"EID6a31d608-0175-1000-23b5-68c0457a9c75"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:14:12Z","duration":0,"status":"PASSED"},{"id":"EID6a31d6f7-0175-1000-4e49-0f8ceea98689","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a31d608-0175-1000-23b5-68c0457a9c75"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:14:12Z","duration":50,"status":"FAILED"},{"id":"EID6a31d729-0175-1000-d3d4-4cc09fc76257","parent":{"ref":"EID6a31d608-0175-1000-23b5-68c0457a9c75"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:14:12Z","duration":0,"status":"PASSED"},{"id":"EID6a31d729-0175-1000-d3af-994f95a2dee6","parent":{"ref":"EID6a31d608-0175-1000-23b5-68c0457a9c75"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:14:12Z","duration":0,"status":"PASSED"},{"id":"EID6a31d729-0175-1000-835c-55ab3f1120ce","parent":{"ref":"EID6a31d608-0175-1000-23b5-68c0457a9c75"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:14:12Z","duration":0,"status":"PASSED"},{"id":"EID6a31d729-0175-1000-ba83-b3f32d6479be","parent":{"ref":"EID6a31d608-0175-1000-23b5-68c0457a9c75"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:14:12Z","duration":0,"status":"PASSED"},{"id":"EID6a31d729-0175-1000-5968-39f8205745be","parent":{"ref":"EID6a31d608-0175-1000-23b5-68c0457a9c75"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:14:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6cac0a82-5e13-4d08-b169-cfb57ee04382"},{"ref":"EID9f9b6a8f-73f1-4cf8-8844-9d1cd0309dd6"},{"ref":"EID0241f22c-1655-4dd2-85dc-dab9beccfb0f"}]},"parent":{"ref":"EID6a31d4aa-0175-1000-6356-70d148262b95"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:14:12Z","duration":29,"status":"FAILED"}]},"parent":{"ref":"EID6a31ce6b-0175-1000-2716-81124318cd99"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:14:12Z","duration":639,"status":"FAILED"},{"id":"EID6a31d729-0175-1000-4774-1ef14480f274","testStepResults":{"TestStepResult":[{"id":"EID6a31d729-0175-1000-9e12-d86d4c7af16d","parent":{"ref":"EID6a31d729-0175-1000-4774-1ef14480f274"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:14:12Z","duration":0,"status":"PASSED"},{"id":"EID6a31d729-0175-1000-8919-694c4cbac482","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31d86c-0175-1000-7830-76c687190bc3","parent":{"ref":"EID6a31d729-0175-1000-8919-694c4cbac482"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:14:12Z","duration":0,"status":"PASSED"},{"id":"EID6a31d86c-0175-1000-0495-1ac42dbd8e9c","parent":{"ref":"EID6a31d729-0175-1000-8919-694c4cbac482"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:14:12Z","duration":0,"status":"PASSED"},{"id":"EID6a31d86c-0175-1000-f5b2-b01236a6360a","parent":{"ref":"EID6a31d729-0175-1000-8919-694c4cbac482"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:14:12Z","duration":0,"status":"PASSED"},{"id":"EID6a31d86c-0175-1000-7d5d-bc450985e416","parent":{"ref":"EID6a31d729-0175-1000-8919-694c4cbac482"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:14:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9dc79ff3-de0e-4a2b-af51-da347a70b7d9"},{"ref":"EID2291c60b-776b-40e6-9a7b-e54bb9ef5aca"},{"ref":"EID49e500e9-d502-4ac6-9698-7400e3912d0c"}]},"parent":{"ref":"EID6a31d729-0175-1000-4774-1ef14480f274"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:14:12Z","duration":148,"status":"PASSED"},{"id":"EID6a31d86c-0175-1000-b22c-743ad6b194f5","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a31d87e-0175-1000-ff79-4148bbb8c98d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31d9b0-0175-1000-b7da-b3d4336c4e5c","parent":{"ref":"EID6a31d87e-0175-1000-ff79-4148bbb8c98d"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6a31d9b0-0175-1000-d2ef-ccda8c0960b9","parent":{"ref":"EID6a31d87e-0175-1000-ff79-4148bbb8c98d"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6a31d9b0-0175-1000-1d7d-1bbff16e619b","parent":{"ref":"EID6a31d87e-0175-1000-ff79-4148bbb8c98d"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe0540315-31aa-49c2-a56b-4139e89eff72"},{"ref":"EID48cfc01c-e1dc-422a-836a-d66ea61aa93e"},{"ref":"EID061ebee0-294f-4dd8-822b-9b451df1e6b1"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:14:12Z","duration":147,"status":"PASSED"},{"id":"EID6a31d9b2-0175-1000-f008-b85f7e8c4c9e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31daa1-0175-1000-d078-3cd4a30a821e","parent":{"ref":"EID6a31d9b2-0175-1000-f008-b85f7e8c4c9e"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6a31daa1-0175-1000-aef8-6fc24ebe87ec","parent":{"ref":"EID6a31d9b2-0175-1000-f008-b85f7e8c4c9e"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6a31daa1-0175-1000-b469-c538ecbcc52a","parent":{"ref":"EID6a31d9b2-0175-1000-f008-b85f7e8c4c9e"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6d49641d-7d07-4fac-9918-7b20e26ca142"},{"ref":"EID16539f50-f071-49ce-a9ac-998ac371035b"},{"ref":"EID2b47ab13-4ec9-4fed-acb3-b42ec43bc987"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:14:13Z","duration":158,"status":"PASSED"},{"id":"EID6a31daa3-0175-1000-0d79-0d8bef3ae5e9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31db38-0175-1000-c9cb-37f123389514","parent":{"ref":"EID6a31daa3-0175-1000-0d79-0d8bef3ae5e9"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6a31db38-0175-1000-f193-230e5ffcf598","parent":{"ref":"EID6a31daa3-0175-1000-0d79-0d8bef3ae5e9"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6a31db38-0175-1000-181a-3f333a75d91a","parent":{"ref":"EID6a31daa3-0175-1000-0d79-0d8bef3ae5e9"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID70f22160-5e8b-4006-8809-3213714cf118"},{"ref":"EIDeb287f3f-febd-4507-a561-c360f335c5f5"},{"ref":"EID5ee81769-3bbc-4429-99e6-9bbb367297fe"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:14:13Z","duration":41,"status":"PASSED"}]},"parent":{"ref":"EID6a31d729-0175-1000-4774-1ef14480f274"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:14:12Z","duration":717,"status":"PASSED"},{"id":"EID6a31db39-0175-1000-50de-73a0472a5082","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31db99-0175-1000-9add-ece3ebfbb6e3","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a31db39-0175-1000-50de-73a0472a5082"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:14:13Z","duration":33,"status":"FAILED"},{"id":"EID6a31dbba-0175-1000-35c8-267dbebe719d","parent":{"ref":"EID6a31db39-0175-1000-50de-73a0472a5082"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6a31dbba-0175-1000-3dd9-5b76e91f1a64","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a31db39-0175-1000-50de-73a0472a5082"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"FAILED"},{"id":"EID6a31dbba-0175-1000-7a5d-589059334b6a","parent":{"ref":"EID6a31db39-0175-1000-50de-73a0472a5082"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4d2a4995-186c-4f19-b3f7-c86514dd9983"},{"ref":"EIDe75f3327-fd93-4e97-b578-dcc4ec111baa"},{"ref":"EIDbe730b22-d49c-49a4-a513-09033b0d7196"}]},"parent":{"ref":"EID6a31d729-0175-1000-4774-1ef14480f274"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:14:13Z","duration":31,"status":"FAILED"}]},"parent":{"ref":"EID6a31ce6b-0175-1000-2716-81124318cd99"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:14:12Z","duration":1169,"status":"FAILED"},{"id":"EID6a31dbba-0175-1000-314f-447d625c18fb","testStepResults":{"TestStepResult":{"id":"EID6a31dbc5-0175-1000-abe1-390b1fa63a9f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a31dc2b-0175-1000-b221-7c2f9ff23a25","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a31dbc5-0175-1000-abe1-390b1fa63a9f"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:14:13Z","duration":10,"status":"FAILED"},{"id":"EID6a31dc35-0175-1000-26e5-9352b0c22940","parent":{"ref":"EID6a31dbc5-0175-1000-abe1-390b1fa63a9f"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"PASSED"},{"id":"EID6a31dc35-0175-1000-b2c1-e84d9c8d329a","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a31dbc5-0175-1000-abe1-390b1fa63a9f"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"FAILED"},{"id":"EID6a31dc35-0175-1000-a3ba-96f666ece98a","parent":{"ref":"EID6a31dbc5-0175-1000-abe1-390b1fa63a9f"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0c4ba9a5-de48-4b05-a9a6-4fa744d6f13a"},{"ref":"EIDb0a2ca25-2403-4cb8-8c7e-33e57d90893f"},{"ref":"EID49ecec9b-b746-4da2-9409-ce3e319a576b"}]},"parent":{"ref":"EID6a31dbba-0175-1000-314f-447d625c18fb"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:14:13Z","duration":32,"status":"FAILED"}},"parent":{"ref":"EID6a31ce6b-0175-1000-2716-81124318cd99"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:14:13Z","duration":123,"status":"FAILED"}]},"parent":{"ref":"EID61f249a7-5450-458a-8ad5-0d17fbf53da2"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:14:10Z","duration":3530,"status":"FAILED"},{"id":"EID6a31dc35-0175-1000-5e5b-0b2ed8ec13d2","testCaseResults":{"TestCaseResult":[{"id":"EID6a31dc35-0175-1000-cefe-aadb5134db11","testStepResults":{"TestStepResult":{"id":"EID6a31dc35-0175-1000-0d8d-ac18fb4d6fca","parent":{"ref":"EID6a31dc35-0175-1000-cefe-aadb5134db11"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:14:13Z","duration":558,"status":"SKIPPED"}},"parent":{"ref":"EID6a31dc35-0175-1000-5e5b-0b2ed8ec13d2"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"SKIPPED"},{"id":"EID6a31dc36-0175-1000-437b-bfba09913e2c","testStepResults":{"TestStepResult":{"id":"EID6a31dc36-0175-1000-e2f0-30d2c8937507","parent":{"ref":"EID6a31dc36-0175-1000-437b-bfba09913e2c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:14:13Z","duration":558,"status":"SKIPPED"}},"parent":{"ref":"EID6a31dc35-0175-1000-5e5b-0b2ed8ec13d2"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"SKIPPED"},{"id":"EID6a31dc46-0175-1000-5b62-d5cd9f49d990","testStepResults":{"TestStepResult":{"id":"EID6a31dc46-0175-1000-a331-7c77c2bf46db","parent":{"ref":"EID6a31dc46-0175-1000-5b62-d5cd9f49d990"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:14:13Z","duration":558,"status":"SKIPPED"}},"parent":{"ref":"EID6a31dc35-0175-1000-5e5b-0b2ed8ec13d2"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"SKIPPED"},{"id":"EID6a31dc46-0175-1000-d2cd-a9c95280d63a","testStepResults":{"TestStepResult":{"id":"EID6a31dc46-0175-1000-d88a-678c3c9315e6","parent":{"ref":"EID6a31dc46-0175-1000-d2cd-a9c95280d63a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:14:13Z","duration":558,"status":"SKIPPED"}},"parent":{"ref":"EID6a31dc35-0175-1000-5e5b-0b2ed8ec13d2"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:14:13Z","duration":1,"status":"SKIPPED"},{"id":"EID6a31dc47-0175-1000-d779-bd07f823f592","testStepResults":{"TestStepResult":{"id":"EID6a31dc47-0175-1000-3846-2554611ebcdf","parent":{"ref":"EID6a31dc47-0175-1000-d779-bd07f823f592"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:14:13Z","duration":558,"status":"SKIPPED"}},"parent":{"ref":"EID6a31dc35-0175-1000-5e5b-0b2ed8ec13d2"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"SKIPPED"},{"id":"EID6a31dc47-0175-1000-112f-2d082a3885cd","testStepResults":{"TestStepResult":{"id":"EID6a31dc47-0175-1000-74db-2a60eff2e594","parent":{"ref":"EID6a31dc47-0175-1000-112f-2d082a3885cd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:14:13Z","duration":558,"status":"SKIPPED"}},"parent":{"ref":"EID6a31dc35-0175-1000-5e5b-0b2ed8ec13d2"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"SKIPPED"},{"id":"EID6a31dc47-0175-1000-4e79-0e1729c7b892","testStepResults":{"TestStepResult":{"id":"EID6a31dc47-0175-1000-dc93-686deff2fa2f","parent":{"ref":"EID6a31dc47-0175-1000-4e79-0e1729c7b892"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:14:13Z","duration":558,"status":"SKIPPED"}},"parent":{"ref":"EID6a31dc35-0175-1000-5e5b-0b2ed8ec13d2"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:14:13Z","duration":0,"status":"SKIPPED"}]},"parent":{"ref":"EID61f249a7-5450-458a-8ad5-0d17fbf53da2"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:14:13Z","duration":18,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"Message","id":"EIDb4c2bedc-7c3b-4c36-8bb6-0c5df5a1e7f6","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDb4c2bedc-7c3b-4c36-8bb6-0c5df5a1e7f6"}},{"type":"Message","id":"EID7516b1a6-e10d-4bca-9f2c-c2c2bf3ea4ab","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID7516b1a6-e10d-4bca-9f2c-c2c2bf3ea4ab"}},{"type":"GetParameter","id":"EID061ebee0-294f-4dd8-822b-9b451df1e6b1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EIDe8473eb1-5f3e-4e57-aae6-3f13bc061c40","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID2438c10b-70c7-469b-bb12-1118d7c7a4c8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDbe730b22-d49c-49a4-a513-09033b0d7196","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID3445fbad-30c0-4df8-a3e8-d1ea72e1d472","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID7d19690e-e2a1-44f5-8c77-329543d17716","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID7d19690e-e2a1-44f5-8c77-329543d17716"}},{"type":"ServiceEndpoint","id":"EID6518d482-ae75-4192-a5c6-a1da1c24150c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID25544db5-b73f-4c16-9704-97d1434ab7a2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDfa67c88d-bea2-4a1f-a9db-86a05c54953d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID49e516b3-2509-460f-8ad1-339dc6004506","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID6cac0a82-5e13-4d08-b169-cfb57ee04382","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EIDf713433b-4fa2-4a26-88e1-4509a1a05f9b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDf713433b-4fa2-4a26-88e1-4509a1a05f9b"}},{"type":"Message","id":"EID81d4dc90-fe87-4b6d-8930-307e3a28530f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID81d4dc90-fe87-4b6d-8930-307e3a28530f"}},{"type":"ServiceEndpoint","id":"EID73d50034-5c7f-46a8-b808-45455712e0ec","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDc9d9d87b-78eb-4186-94f8-af7a57804749","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID34c5ef63-6ee6-4fa4-9263-cbfe27e4f496","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDb0a2ca25-2403-4cb8-8c7e-33e57d90893f","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDb0a2ca25-2403-4cb8-8c7e-33e57d90893f"}},{"type":"GetParameter","id":"EIDf0937015-ebda-4810-a390-615539883aa3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID4dc577f5-9553-4040-ad31-995ed4528030","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID945ae3a8-6241-4786-a6d1-5ef0d4da28eb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID6d90c92e-e6dc-412d-9745-2a215f28b9a7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID6d90c92e-e6dc-412d-9745-2a215f28b9a7"}},{"type":"Message","id":"EIDf2b91965-62c9-4d9b-9e4f-e56bd913de79","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDf2b91965-62c9-4d9b-9e4f-e56bd913de79"}},{"type":"GetParameter","id":"EID49ecec9b-b746-4da2-9409-ce3e319a576b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDb4206eec-6124-476b-af28-a9873f1bda8f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID77de9f67-cc25-470b-b9b9-257a7139495f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDe558820a-07a4-41ad-a7d4-65595e446fa9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDe558820a-07a4-41ad-a7d4-65595e446fa9"}},{"type":"LogFile","id":"EID983b17ce-e551-4248-aadc-5575fa6d71f9","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID983b17ce-e551-4248-aadc-5575fa6d71f9"}},{"type":"ServiceResponse","id":"EID50f6bfc0-148a-42eb-968a-5d7b016a0106","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID50f6bfc0-148a-42eb-968a-5d7b016a0106"}},{"type":"ServiceResponse","id":"EID0babdfc2-2701-41a9-9318-da129611d07a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID0babdfc2-2701-41a9-9318-da129611d07a"}},{"type":"ServiceResponse","id":"EID8c70e134-e2b4-4703-be01-c57367acd7e0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID8c70e134-e2b4-4703-be01-c57367acd7e0"}},{"type":"ServiceEndpoint","id":"EID9dc79ff3-de0e-4a2b-af51-da347a70b7d9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EIDdf80af39-c92e-4ba2-ba7b-8d1c9ef004cc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EIDd49c9d01-a0fb-40dc-b397-9abbabab54f4","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDd49c9d01-a0fb-40dc-b397-9abbabab54f4"}},{"type":"Message","id":"EIDe67e4d8b-8c24-49d2-8b09-b2b6758e6efb","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDe67e4d8b-8c24-49d2-8b09-b2b6758e6efb"}},{"type":"Error","id":"EID326126f6-85f2-41e5-bffe-bcd7cf825830","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID326126f6-85f2-41e5-bffe-bcd7cf825830"}},{"type":"ServiceResponse","id":"EIDb74882ce-b503-4ea7-aa02-a92ea40cd7bd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDb74882ce-b503-4ea7-aa02-a92ea40cd7bd"}},{"type":"ServiceEndpoint","id":"EID70f22160-5e8b-4006-8809-3213714cf118","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EIDd1ee2aab-2d76-4f38-927f-2670575e1237","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDd1ee2aab-2d76-4f38-927f-2670575e1237"}},{"type":"ServiceEndpoint","id":"EID6f435d0c-b8cd-4aa1-a0c6-298d479ed347","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID16539f50-f071-49ce-a9ac-998ac371035b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID16539f50-f071-49ce-a9ac-998ac371035b"}},{"type":"ServiceResponse","id":"EIDd311db45-224d-4538-a26c-3db1074d5ba5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDd311db45-224d-4538-a26c-3db1074d5ba5"}},{"type":"Message","id":"EIDc14305b4-47f5-4173-97ac-6a31720a38f0","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDc14305b4-47f5-4173-97ac-6a31720a38f0"}},{"type":"ServiceEndpoint","id":"EID0c4ba9a5-de48-4b05-a9a6-4fa744d6f13a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDb6746544-382b-44bb-bf5f-7f7448d9acd2","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDb6746544-382b-44bb-bf5f-7f7448d9acd2"}},{"type":"ServiceResponse","id":"EID11fc0813-959e-465c-ac32-f7b329ceaf98","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID11fc0813-959e-465c-ac32-f7b329ceaf98"}},{"type":"GetParameter","id":"EID49e500e9-d502-4ac6-9698-7400e3912d0c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EIDc3634734-59b1-4c9c-bfef-29005bb0bdee","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDc3634734-59b1-4c9c-bfef-29005bb0bdee"}},{"type":"ServiceResponse","id":"EID9f9b6a8f-73f1-4cf8-8844-9d1cd0309dd6","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID9f9b6a8f-73f1-4cf8-8844-9d1cd0309dd6"}},{"type":"ServiceResponse","id":"EIDd101a63f-4032-457b-97c0-3b399bad4fe3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDd101a63f-4032-457b-97c0-3b399bad4fe3"}},{"type":"ServiceEndpoint","id":"EID925c67c3-95c4-40c9-a753-a7bef6ef30a2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDb929085b-108b-4ab5-b391-d061b1f3cf6e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDb929085b-108b-4ab5-b391-d061b1f3cf6e"}},{"type":"GetParameter","id":"EID0241f22c-1655-4dd2-85dc-dab9beccfb0f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID7eed3ccd-eb1f-4ec7-869c-d1e855fa141e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID2291c60b-776b-40e6-9a7b-e54bb9ef5aca","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID2291c60b-776b-40e6-9a7b-e54bb9ef5aca"}},{"type":"GetParameter","id":"EID9d1510d6-bc9f-42a8-bc75-098a0cf2f744","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID2872eef9-e561-4f74-b37a-0a9ffd1db889","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID5e2179fc-e91c-425f-b7e5-e2d193bc3153","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID0fba13e0-d899-436d-9db8-89ac9c609035","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID9ec23784-d449-42df-8a7f-b43d690de86e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID99d63feb-d2c7-4f99-8853-24e5f0a36a43","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID99d63feb-d2c7-4f99-8853-24e5f0a36a43"}},{"type":"ServiceEndpoint","id":"EID04ad316c-e46e-4f85-bdd7-146eb93863df","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDc4f462cc-6cba-4021-b8af-8e66927c5a47","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID0497ad06-896d-430c-88c0-c246e3eae05f","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID0497ad06-896d-430c-88c0-c246e3eae05f"}},{"type":"GetParameter","id":"EID75686681-ae36-4bb6-bbc7-669ba25c31fd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID0009e4e7-8b38-4a9c-9e57-94dd27f31d1c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID84a0d3d0-ba4d-46bf-bf0c-9bf4024c93f7","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID84a0d3d0-ba4d-46bf-bf0c-9bf4024c93f7"}},{"type":"Error","id":"EID100ffb66-8dd5-45a8-9f04-d5c682db63ae","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID100ffb66-8dd5-45a8-9f04-d5c682db63ae"}},{"type":"ServiceEndpoint","id":"EID159b1bc7-caac-497a-9285-9a8badf59738","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDd3c82a14-273f-44a6-a881-45e9cb0fb610","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDa13c34a0-8bf0-4832-9b3b-80a2a2167be3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID3705feb6-e24a-4cea-83dd-b24ea6c0b86e","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID3705feb6-e24a-4cea-83dd-b24ea6c0b86e"}},{"type":"Message","id":"EIDdeadbeb5-1b8d-4400-b759-944efae4dc5a","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDdeadbeb5-1b8d-4400-b759-944efae4dc5a"}},{"type":"ServiceResponse","id":"EID7bafbe6e-b21c-45b4-9ba4-6f7547e2da12","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID7bafbe6e-b21c-45b4-9ba4-6f7547e2da12"}},{"type":"ServiceEndpoint","id":"EIDbe28b06a-507c-4b23-8a89-76d169d10f69","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDcbd7e400-f861-4853-b442-361e05fbfb97","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID82f52dee-c3c7-466c-8b57-4a7a7a0176a4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID8f9859e7-44c7-4ec4-8db4-95f4c6a11502","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID8f9859e7-44c7-4ec4-8db4-95f4c6a11502"}},{"type":"Message","id":"EIDf4a80fdd-c864-4fa6-8e74-5c9f7abc5208","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDf4a80fdd-c864-4fa6-8e74-5c9f7abc5208"}},{"type":"ServiceEndpoint","id":"EID139762a9-8816-4c21-ad28-88512b88bca2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID414688c1-fcbf-49d4-a23e-0008389eda65","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID414688c1-fcbf-49d4-a23e-0008389eda65"}},{"type":"Message","id":"EID2bbc6ef2-8213-4d52-8afd-6b8f3e6e049b","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID2bbc6ef2-8213-4d52-8afd-6b8f3e6e049b"}},{"type":"GetParameter","id":"EIDaa78cb2c-bccf-469b-9cb0-ac254af80fbd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDe75f3327-fd93-4e97-b578-dcc4ec111baa","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDe75f3327-fd93-4e97-b578-dcc4ec111baa"}},{"type":"Message","id":"EID651b2df0-2690-41d6-9225-c19f95f45f26","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID651b2df0-2690-41d6-9225-c19f95f45f26"}},{"type":"GetParameter","id":"EID00a04dd7-484a-4a28-98c7-e2bde9be32d9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Error","id":"EIDef05cc78-e69a-4bf9-8968-c1c53764fae1","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDef05cc78-e69a-4bf9-8968-c1c53764fae1"}},{"type":"ServiceEndpoint","id":"EIDe0540315-31aa-49c2-a56b-4139e89eff72","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EID2f5a2d7f-84cd-49a2-a512-6482e507bf57","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID2f5a2d7f-84cd-49a2-a512-6482e507bf57"}},{"type":"ServiceEndpoint","id":"EID4f40ad7b-b583-4035-9f51-646b794c494c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"Message","id":"EIDad4d1373-a95e-4ffb-988b-ea0680993a39","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDad4d1373-a95e-4ffb-988b-ea0680993a39"}},{"type":"GetParameter","id":"EIDd35b8ae8-4359-4519-9d88-410ef43fd6ac","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Error","id":"EID903036ee-810f-41d8-835a-b92f1dcbeabb","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID903036ee-810f-41d8-835a-b92f1dcbeabb"}},{"type":"ServiceEndpoint","id":"EID45069125-3008-4c5e-9cc3-e7d42931f392","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID64921034-fe53-4150-91b0-26449caf3d32","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID64921034-fe53-4150-91b0-26449caf3d32"}},{"type":"ServiceEndpoint","id":"EIDdb660174-a9ff-416d-8eb6-798eae6eb843","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID4e4f9b0a-3f03-4c79-ac37-fbf49bd541d9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID9922e9d3-7d7d-4030-aefe-72073d8de997","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID9922e9d3-7d7d-4030-aefe-72073d8de997"}},{"type":"ServiceEndpoint","id":"EID393c51d5-379d-44e9-b1df-6685aad0bbca","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID39421092-15e3-4aac-83f5-15a7bdfb3d86","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID39421092-15e3-4aac-83f5-15a7bdfb3d86"}},{"type":"Message","id":"EID1d157192-7763-4b74-b3bf-9193f0251e3e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID1d157192-7763-4b74-b3bf-9193f0251e3e"}},{"type":"ServiceResponse","id":"EID8795163b-9d5d-483f-b0af-efbb561b1c10","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID8795163b-9d5d-483f-b0af-efbb561b1c10"}},{"type":"GetParameter","id":"EID562da5ac-b36a-46cc-b71d-74bd62c2cb98","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID5fc8bbe2-13af-447a-843d-71197d878c66","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID6267f5ea-7e9b-4266-be84-232ac79f477d","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID6267f5ea-7e9b-4266-be84-232ac79f477d"}},{"type":"Error","id":"EIDcf053582-a69c-4e8a-bac5-71181558d804","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDcf053582-a69c-4e8a-bac5-71181558d804"}},{"type":"GetParameter","id":"EID69e6c713-b925-4b80-a442-3d978496b0b5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDb60aaac5-bf39-425a-8eb0-6c23c2c2c5eb","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDb60aaac5-bf39-425a-8eb0-6c23c2c2c5eb"}},{"type":"ServiceEndpoint","id":"EIDa3541977-6b27-444f-a2c9-e08cf74c76f2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID67f2f74e-2a3d-4ac2-abbc-9e5fee9c0f6c","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID67f2f74e-2a3d-4ac2-abbc-9e5fee9c0f6c"}},{"type":"ServiceEndpoint","id":"EID79717458-6634-4d40-8e4d-192a1cf58cd2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID2480d5b8-4309-4d4e-b25b-a3c0335db56b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID2b47ab13-4ec9-4fed-acb3-b42ec43bc987","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Error","id":"EID6801ed00-e2b9-475b-9e8b-03365a3b2321","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID6801ed00-e2b9-475b-9e8b-03365a3b2321"}},{"type":"Error","id":"EID53cce6f2-8911-430f-a642-da764758fd64","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID53cce6f2-8911-430f-a642-da764758fd64"}},{"type":"ServiceEndpoint","id":"EIDc665b36d-7f69-4f19-8673-8355157950d0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID78926a6f-0f0f-434a-ae70-dcc8e8aa0143","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID78926a6f-0f0f-434a-ae70-dcc8e8aa0143"}},{"type":"ServiceResponse","id":"EID73ef91db-bc9a-4c6a-9d99-cf7550ffa875","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID73ef91db-bc9a-4c6a-9d99-cf7550ffa875"}},{"type":"GetParameter","id":"EID2525f40c-4034-4ec5-8cf7-23c12f0ac181","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID5ee81769-3bbc-4429-99e6-9bbb367297fe","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EID012e78c1-32ef-47d3-a5c5-c259f8517989","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID012e78c1-32ef-47d3-a5c5-c259f8517989"}},{"type":"GetParameter","id":"EIDade8f9f0-1b8c-47a0-a45e-891612a9f05b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDdce8bced-5fc4-4410-b99f-cb547027fa26","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID6621ebc9-8d00-4573-8e22-b7a8406bc089","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID6621ebc9-8d00-4573-8e22-b7a8406bc089"}},{"type":"ServiceEndpoint","id":"EID6d49641d-7d07-4fac-9918-7b20e26ca142","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Error","id":"EID971e2f87-2eac-4a4c-b68e-fa05f5271053","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID971e2f87-2eac-4a4c-b68e-fa05f5271053"}},{"type":"Message","id":"EID99bbc7bc-1b77-40dd-98cf-bbcb17c4fd18","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID99bbc7bc-1b77-40dd-98cf-bbcb17c4fd18"}},{"type":"Message","id":"EID81ca5ae9-af5c-48d3-8e6c-c84e491de825","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID81ca5ae9-af5c-48d3-8e6c-c84e491de825"}},{"type":"ServiceResponse","id":"EID565ab963-3923-40ae-85c6-a42e28f4ed5c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID565ab963-3923-40ae-85c6-a42e28f4ed5c"}},{"type":"Error","id":"EIDd3754dbc-7d22-466c-b511-53d0fba1d237","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDd3754dbc-7d22-466c-b511-53d0fba1d237"}},{"type":"ServiceResponse","id":"EID1e940785-4bb1-459d-b128-df106bfaf441","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID1e940785-4bb1-459d-b128-df106bfaf441"}},{"type":"ServiceEndpoint","id":"EID68283681-a4ba-4921-9557-ca2b75c16f77","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID3cdf18f7-dd64-4e75-9456-7aa50b6047dc","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID3cdf18f7-dd64-4e75-9456-7aa50b6047dc"}},{"type":"ServiceResponse","id":"EIDeba8d8d0-d828-43f3-94a6-58049a1f80e8","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDeba8d8d0-d828-43f3-94a6-58049a1f80e8"}},{"type":"ServiceResponse","id":"EID1a24f784-2595-4bf1-8252-ca9c80a4a2b9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID1a24f784-2595-4bf1-8252-ca9c80a4a2b9"}},{"type":"Message","id":"EID44fdd76c-ac59-49ab-b162-27348ef79eb6","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID44fdd76c-ac59-49ab-b162-27348ef79eb6"}},{"type":"Message","id":"EID192aaf11-94bf-466f-aabf-9d8df0c26371","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID192aaf11-94bf-466f-aabf-9d8df0c26371"}},{"type":"ServiceEndpoint","id":"EIDf418e956-ce04-4df2-b837-750e75e74866","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID5e141b41-d00c-4b53-8962-1828a0275b25","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID5e141b41-d00c-4b53-8962-1828a0275b25"}},{"type":"ServiceResponse","id":"EID48cfc01c-e1dc-422a-836a-d66ea61aa93e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID48cfc01c-e1dc-422a-836a-d66ea61aa93e"}},{"type":"Error","id":"EID0212e82f-d1b0-465f-a580-2b37773c9334","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID0212e82f-d1b0-465f-a580-2b37773c9334"}},{"type":"GetParameter","id":"EIDbf06960f-9a65-4c79-809d-9a61f59cfe75","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID497befb6-5279-4b07-bb06-2869f7925981","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID4d2a4995-186c-4f19-b3f7-c86514dd9983","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDccefffc6-f22a-4872-b07d-3daea73f4eb8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDbcb2edf5-36e4-460f-971a-1ee1456a813b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDbcb2edf5-36e4-460f-971a-1ee1456a813b"}},{"type":"ServiceResponse","id":"EIDff59ed87-adbc-4deb-a8c4-0c807b447b86","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDff59ed87-adbc-4deb-a8c4-0c807b447b86"}},{"type":"Message","id":"EID793e7138-8c37-4eec-94ef-2626d643a268","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID793e7138-8c37-4eec-94ef-2626d643a268"}},{"type":"ServiceEndpoint","id":"EID31d1346b-e387-422b-a956-f4501ad95aee","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDf9211d91-cd9c-40f3-95ce-b3d7e6f44a78","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDf9211d91-cd9c-40f3-95ce-b3d7e6f44a78"}},{"type":"GetParameter","id":"EID04a416e0-b3ea-405d-9fea-f3b8be2a860a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID68118cd7-56a2-44a1-947c-04eb02fb5ac7","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID68118cd7-56a2-44a1-947c-04eb02fb5ac7"}},{"type":"ServiceResponse","id":"EID22323128-a75a-4569-b24a-240251253c2b","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID22323128-a75a-4569-b24a-240251253c2b"}},{"type":"ServiceEndpoint","id":"EIDf47ac08d-2bb7-498a-bf97-f2444bb22ff5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDeb287f3f-febd-4507-a561-c360f335c5f5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EIDeb287f3f-febd-4507-a561-c360f335c5f5"}},{"type":"Message","id":"EID1bb3b061-97c3-4309-895a-21dfc1fa3129","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID1bb3b061-97c3-4309-895a-21dfc1fa3129"}},{"type":"GetParameter","id":"EID946c8eba-907e-4ad3-bc2f-05b81504e5aa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID2a54106a-a651-46f5-9e15-7cf4b42ed051","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID1af5d4c0-4007-4168-857d-57970675e235","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EID61f249a7-5450-458a-8ad5-0d17fbf53da2/Attachments/EID1af5d4c0-4007-4168-857d-57970675e235"}},{"type":"GetParameter","id":"EIDc14e52bd-b200-4169-93ee-b7c9bf94b131","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:14:01Z","duration":12843,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.009
13:14:25.390 [print] EIDe1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:14:25.391 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:14:25.391 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:14:25.391 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:14:25.391 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/e1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:14:25.391 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/e1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:14:25.391 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDe1dc7cf5-9b7b-4ab9-b1b6-49eab5d2fc9c/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.005
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.005
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.001
13:14:25.405 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.003
13:14:25.410 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
13:14:25.410 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1:44.171
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:16:53.437 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 9.322
13:16:53.438 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}

13:17:02.758 response time in milliseconds: 8554.77
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:17:01 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:16:59 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/2fa8d99b-359b-4bbd-b9fa-c3c6f539207b.json","testRuns":{"TestRun":{"id":"EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:16:58.378Z","testTasks":{"TestTask":{"id":"EID6c83d6df-ad67-4162-b1cb-ed939f69ffa7","parent":{"ref":"EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDe84d2a58-fd85-46ab-abc4-0e67ab87fc56"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDe84d2a58-fd85-46ab-abc4-0e67ab87fc56","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:16:53.876Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:16:55.794Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:17:02.761 [print] EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:17:02.761 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:17:02.761 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:17:02.761 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/2fa8d99b-359b-4bbd-b9fa-c3c6f539207b.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:17:02.761 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:17:02.762 [print] statuspath TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b
* print 'progresspath ', progresspath 0.000
13:17:02.762 [print] progresspath  TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/progress
Given path progresspath 0.000
When method GET 0.528
13:17:02.763 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:03.290 response time in milliseconds: 525.57
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:17:03 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["27.10.2020 13:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:58 UTC 2020)","27.10.2020 13:16:58 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:58 - Preparing 1 Test Task:","27.10.2020 13:16:58 -  TestTask 1 (6c83d6df-ad67-4162-b1cb-ed939f69ffa7)","27.10.2020 13:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:58 -  with parameters: ","27.10.2020 13:16:58 - etf.testcases = *","27.10.2020 13:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:58 - Setting state to CREATED","27.10.2020 13:16:58 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:59 - Starting TestRun.2fa8d99b-359b-4bbd-b9fa-c3c6f539207b at 2020-10-27T13:17:01Z","27.10.2020 13:17:01 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:01 - Project Properties: ","27.10.2020 13:17:01 - etf.testcases - * ","27.10.2020 13:17:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:17:01 - username -  ","27.10.2020 13:17:01 - authUser -  ","27.10.2020 13:17:01 - authMethod - basic ","27.10.2020 13:17:01 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.001
13:17:03.292 [print] {
  "val": "16",
  "max": "17",
  "log": [
    "27.10.2020 13:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:58 UTC 2020)",
    "27.10.2020 13:16:58 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:16:58 - Preparing 1 Test Task:",
    "27.10.2020 13:16:58 -  TestTask 1 (6c83d6df-ad67-4162-b1cb-ed939f69ffa7)",
    "27.10.2020 13:16:58 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:16:58 -  with parameters: ",
    "27.10.2020 13:16:58 - etf.testcases = *",
    "27.10.2020 13:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:16:58 - Setting state to CREATED",
    "27.10.2020 13:16:58 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:16:59 - Starting TestRun.2fa8d99b-359b-4bbd-b9fa-c3c6f539207b at 2020-10-27T13:17:01Z",
    "27.10.2020 13:17:01 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:17:01 - Project Properties: ",
    "27.10.2020 13:17:01 - etf.testcases - * ",
    "27.10.2020 13:17:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ",
    "27.10.2020 13:17:01 - username -  ",
    "27.10.2020 13:17:01 - authUser -  ",
    "27.10.2020 13:17:01 - authMethod - basic ",
    "27.10.2020 13:17:01 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 1:30.491
13:17:03.292 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:03.804 response time in milliseconds: 507.60
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:17:03 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["27.10.2020 13:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:58 UTC 2020)","27.10.2020 13:16:58 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:58 - Preparing 1 Test Task:","27.10.2020 13:16:58 -  TestTask 1 (6c83d6df-ad67-4162-b1cb-ed939f69ffa7)","27.10.2020 13:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:58 -  with parameters: ","27.10.2020 13:16:58 - etf.testcases = *","27.10.2020 13:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:58 - Setting state to CREATED","27.10.2020 13:16:58 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:59 - Starting TestRun.2fa8d99b-359b-4bbd-b9fa-c3c6f539207b at 2020-10-27T13:17:01Z","27.10.2020 13:17:01 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:01 - Project Properties: ","27.10.2020 13:17:01 - etf.testcases - * ","27.10.2020 13:17:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:17:01 - username -  ","27.10.2020 13:17:01 - authUser -  ","27.10.2020 13:17:01 - authMethod - basic ","27.10.2020 13:17:01 - TestRunTask initialized"]}

13:17:03.805 retry condition not satisfied: response.val == response.max
13:17:03.805 sleeping before retry #1
13:17:08.806 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:09.332 response time in milliseconds: 525.25
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:17:09 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"53","max":"54","log":["27.10.2020 13:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:58 UTC 2020)","27.10.2020 13:16:58 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:58 - Preparing 1 Test Task:","27.10.2020 13:16:58 -  TestTask 1 (6c83d6df-ad67-4162-b1cb-ed939f69ffa7)","27.10.2020 13:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:58 -  with parameters: ","27.10.2020 13:16:58 - etf.testcases = *","27.10.2020 13:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:58 - Setting state to CREATED","27.10.2020 13:16:58 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:59 - Starting TestRun.2fa8d99b-359b-4bbd-b9fa-c3c6f539207b at 2020-10-27T13:17:01Z","27.10.2020 13:17:01 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:01 - Project Properties: ","27.10.2020 13:17:01 - etf.testcases - * ","27.10.2020 13:17:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:17:01 - username -  ","27.10.2020 13:17:01 - authUser -  ","27.10.2020 13:17:01 - authMethod - basic ","27.10.2020 13:17:01 - TestRunTask initialized"]}

13:17:09.333 retry condition not satisfied: response.val == response.max
13:17:09.333 sleeping before retry #2
13:17:14.334 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:14.854 response time in milliseconds: 520.26
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:17:14 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"164","max":"165","log":["27.10.2020 13:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:58 UTC 2020)","27.10.2020 13:16:58 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:58 - Preparing 1 Test Task:","27.10.2020 13:16:58 -  TestTask 1 (6c83d6df-ad67-4162-b1cb-ed939f69ffa7)","27.10.2020 13:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:58 -  with parameters: ","27.10.2020 13:16:58 - etf.testcases = *","27.10.2020 13:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:58 - Setting state to CREATED","27.10.2020 13:16:58 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:59 - Starting TestRun.2fa8d99b-359b-4bbd-b9fa-c3c6f539207b at 2020-10-27T13:17:01Z","27.10.2020 13:17:01 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:01 - Project Properties: ","27.10.2020 13:17:01 - etf.testcases - * ","27.10.2020 13:17:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:17:01 - username -  ","27.10.2020 13:17:01 - authUser -  ","27.10.2020 13:17:01 - authMethod - basic ","27.10.2020 13:17:01 - TestRunTask initialized","27.10.2020 13:17:09 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:17:14.855 retry condition not satisfied: response.val == response.max
13:17:14.855 sleeping before retry #3
13:17:19.856 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:20.357 response time in milliseconds: 500.29
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:17:20 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:58 UTC 2020)","27.10.2020 13:16:58 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:58 - Preparing 1 Test Task:","27.10.2020 13:16:58 -  TestTask 1 (6c83d6df-ad67-4162-b1cb-ed939f69ffa7)","27.10.2020 13:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:58 -  with parameters: ","27.10.2020 13:16:58 - etf.testcases = *","27.10.2020 13:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:58 - Setting state to CREATED","27.10.2020 13:16:58 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:59 - Starting TestRun.2fa8d99b-359b-4bbd-b9fa-c3c6f539207b at 2020-10-27T13:17:01Z","27.10.2020 13:17:01 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:01 - Project Properties: ","27.10.2020 13:17:01 - etf.testcases - * ","27.10.2020 13:17:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:17:01 - username -  ","27.10.2020 13:17:01 - authUser -  ","27.10.2020 13:17:01 - authMethod - basic ","27.10.2020 13:17:01 - TestRunTask initialized","27.10.2020 13:17:09 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:17:20.357 retry condition not satisfied: response.val == response.max
13:17:20.357 sleeping before retry #4
13:17:25.358 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:25.890 response time in milliseconds: 529.50
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:17:25 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:58 UTC 2020)","27.10.2020 13:16:58 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:58 - Preparing 1 Test Task:","27.10.2020 13:16:58 -  TestTask 1 (6c83d6df-ad67-4162-b1cb-ed939f69ffa7)","27.10.2020 13:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:58 -  with parameters: ","27.10.2020 13:16:58 - etf.testcases = *","27.10.2020 13:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:58 - Setting state to CREATED","27.10.2020 13:16:58 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:59 - Starting TestRun.2fa8d99b-359b-4bbd-b9fa-c3c6f539207b at 2020-10-27T13:17:01Z","27.10.2020 13:17:01 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:01 - Project Properties: ","27.10.2020 13:17:01 - etf.testcases - * ","27.10.2020 13:17:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:17:01 - username -  ","27.10.2020 13:17:01 - authUser -  ","27.10.2020 13:17:01 - authMethod - basic ","27.10.2020 13:17:01 - TestRunTask initialized","27.10.2020 13:17:09 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:17:25.890 retry condition not satisfied: response.val == response.max
13:17:25.890 sleeping before retry #5
13:17:30.891 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:31.412 response time in milliseconds: 519.75
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:17:31 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:58 UTC 2020)","27.10.2020 13:16:58 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:58 - Preparing 1 Test Task:","27.10.2020 13:16:58 -  TestTask 1 (6c83d6df-ad67-4162-b1cb-ed939f69ffa7)","27.10.2020 13:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:58 -  with parameters: ","27.10.2020 13:16:58 - etf.testcases = *","27.10.2020 13:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:58 - Setting state to CREATED","27.10.2020 13:16:58 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:59 - Starting TestRun.2fa8d99b-359b-4bbd-b9fa-c3c6f539207b at 2020-10-27T13:17:01Z","27.10.2020 13:17:01 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:01 - Project Properties: ","27.10.2020 13:17:01 - etf.testcases - * ","27.10.2020 13:17:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:17:01 - username -  ","27.10.2020 13:17:01 - authUser -  ","27.10.2020 13:17:01 - authMethod - basic ","27.10.2020 13:17:01 - TestRunTask initialized","27.10.2020 13:17:09 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:17:31.412 retry condition not satisfied: response.val == response.max
13:17:31.412 sleeping before retry #6
13:17:36.413 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:36.983 response time in milliseconds: 561.73
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:17:36 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:58 UTC 2020)","27.10.2020 13:16:58 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:58 - Preparing 1 Test Task:","27.10.2020 13:16:58 -  TestTask 1 (6c83d6df-ad67-4162-b1cb-ed939f69ffa7)","27.10.2020 13:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:58 -  with parameters: ","27.10.2020 13:16:58 - etf.testcases = *","27.10.2020 13:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:58 - Setting state to CREATED","27.10.2020 13:16:58 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:59 - Starting TestRun.2fa8d99b-359b-4bbd-b9fa-c3c6f539207b at 2020-10-27T13:17:01Z","27.10.2020 13:17:01 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:01 - Project Properties: ","27.10.2020 13:17:01 - etf.testcases - * ","27.10.2020 13:17:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:17:01 - username -  ","27.10.2020 13:17:01 - authUser -  ","27.10.2020 13:17:01 - authMethod - basic ","27.10.2020 13:17:01 - TestRunTask initialized","27.10.2020 13:17:09 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:17:36.983 retry condition not satisfied: response.val == response.max
13:17:36.983 sleeping before retry #7
13:17:41.984 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:42.491 response time in milliseconds: 506.15
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Tue, 27 Oct 2020 13:17:42 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:58 UTC 2020)","27.10.2020 13:16:58 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:58 - Preparing 1 Test Task:","27.10.2020 13:16:58 -  TestTask 1 (6c83d6df-ad67-4162-b1cb-ed939f69ffa7)","27.10.2020 13:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:58 -  with parameters: ","27.10.2020 13:16:58 - etf.testcases = *","27.10.2020 13:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:58 - Setting state to CREATED","27.10.2020 13:16:58 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:59 - Starting TestRun.2fa8d99b-359b-4bbd-b9fa-c3c6f539207b at 2020-10-27T13:17:01Z","27.10.2020 13:17:01 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:01 - Project Properties: ","27.10.2020 13:17:01 - etf.testcases - * ","27.10.2020 13:17:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:17:01 - username -  ","27.10.2020 13:17:01 - authUser -  ","27.10.2020 13:17:01 - authMethod - basic ","27.10.2020 13:17:01 - TestRunTask initialized","27.10.2020 13:17:09 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:17:42.491 retry condition not satisfied: response.val == response.max
13:17:42.491 sleeping before retry #8
13:17:47.492 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:48.127 response time in milliseconds: 634.56
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Tue, 27 Oct 2020 13:17:48 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:58 UTC 2020)","27.10.2020 13:16:58 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:58 - Preparing 1 Test Task:","27.10.2020 13:16:58 -  TestTask 1 (6c83d6df-ad67-4162-b1cb-ed939f69ffa7)","27.10.2020 13:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:58 -  with parameters: ","27.10.2020 13:16:58 - etf.testcases = *","27.10.2020 13:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:58 - Setting state to CREATED","27.10.2020 13:16:58 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:59 - Starting TestRun.2fa8d99b-359b-4bbd-b9fa-c3c6f539207b at 2020-10-27T13:17:01Z","27.10.2020 13:17:01 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:01 - Project Properties: ","27.10.2020 13:17:01 - etf.testcases - * ","27.10.2020 13:17:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:17:01 - username -  ","27.10.2020 13:17:01 - authUser -  ","27.10.2020 13:17:01 - authMethod - basic ","27.10.2020 13:17:01 - TestRunTask initialized","27.10.2020 13:17:09 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:17:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:17:48.127 retry condition not satisfied: response.val == response.max
13:17:48.127 sleeping before retry #9
13:17:53.128 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:53.643 response time in milliseconds: 507.93
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Tue, 27 Oct 2020 13:17:53 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:58 UTC 2020)","27.10.2020 13:16:58 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:58 - Preparing 1 Test Task:","27.10.2020 13:16:58 -  TestTask 1 (6c83d6df-ad67-4162-b1cb-ed939f69ffa7)","27.10.2020 13:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:58 -  with parameters: ","27.10.2020 13:16:58 - etf.testcases = *","27.10.2020 13:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:58 - Setting state to CREATED","27.10.2020 13:16:58 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:59 - Starting TestRun.2fa8d99b-359b-4bbd-b9fa-c3c6f539207b at 2020-10-27T13:17:01Z","27.10.2020 13:17:01 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:01 - Project Properties: ","27.10.2020 13:17:01 - etf.testcases - * ","27.10.2020 13:17:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:17:01 - username -  ","27.10.2020 13:17:01 - authUser -  ","27.10.2020 13:17:01 - authMethod - basic ","27.10.2020 13:17:01 - TestRunTask initialized","27.10.2020 13:17:09 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:17:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:17:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:17:53.643 retry condition not satisfied: response.val == response.max
13:17:53.643 sleeping before retry #10
13:17:58.644 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:17:59.157 response time in milliseconds: 512.53
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Tue, 27 Oct 2020 13:17:59 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:58 UTC 2020)","27.10.2020 13:16:58 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:58 - Preparing 1 Test Task:","27.10.2020 13:16:58 -  TestTask 1 (6c83d6df-ad67-4162-b1cb-ed939f69ffa7)","27.10.2020 13:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:58 -  with parameters: ","27.10.2020 13:16:58 - etf.testcases = *","27.10.2020 13:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:58 - Setting state to CREATED","27.10.2020 13:16:58 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:59 - Starting TestRun.2fa8d99b-359b-4bbd-b9fa-c3c6f539207b at 2020-10-27T13:17:01Z","27.10.2020 13:17:01 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:01 - Project Properties: ","27.10.2020 13:17:01 - etf.testcases - * ","27.10.2020 13:17:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:17:01 - username -  ","27.10.2020 13:17:01 - authUser -  ","27.10.2020 13:17:01 - authMethod - basic ","27.10.2020 13:17:01 - TestRunTask initialized","27.10.2020 13:17:09 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:17:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:17:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:17:59.159 retry condition not satisfied: response.val == response.max
13:17:59.159 sleeping before retry #11
13:18:04.160 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:04.678 response time in milliseconds: 517.47
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Tue, 27 Oct 2020 13:18:04 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:58 UTC 2020)","27.10.2020 13:16:58 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:58 - Preparing 1 Test Task:","27.10.2020 13:16:58 -  TestTask 1 (6c83d6df-ad67-4162-b1cb-ed939f69ffa7)","27.10.2020 13:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:58 -  with parameters: ","27.10.2020 13:16:58 - etf.testcases = *","27.10.2020 13:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:58 - Setting state to CREATED","27.10.2020 13:16:58 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:59 - Starting TestRun.2fa8d99b-359b-4bbd-b9fa-c3c6f539207b at 2020-10-27T13:17:01Z","27.10.2020 13:17:01 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:01 - Project Properties: ","27.10.2020 13:17:01 - etf.testcases - * ","27.10.2020 13:17:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:17:01 - username -  ","27.10.2020 13:17:01 - authUser -  ","27.10.2020 13:17:01 - authMethod - basic ","27.10.2020 13:17:01 - TestRunTask initialized","27.10.2020 13:17:09 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:17:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:17:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:18:04.678 retry condition not satisfied: response.val == response.max
13:18:04.678 sleeping before retry #12
13:18:09.679 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:10.186 response time in milliseconds: 506.38
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Tue, 27 Oct 2020 13:18:10 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:58 UTC 2020)","27.10.2020 13:16:58 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:58 - Preparing 1 Test Task:","27.10.2020 13:16:58 -  TestTask 1 (6c83d6df-ad67-4162-b1cb-ed939f69ffa7)","27.10.2020 13:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:58 -  with parameters: ","27.10.2020 13:16:58 - etf.testcases = *","27.10.2020 13:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:58 - Setting state to CREATED","27.10.2020 13:16:58 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:59 - Starting TestRun.2fa8d99b-359b-4bbd-b9fa-c3c6f539207b at 2020-10-27T13:17:01Z","27.10.2020 13:17:01 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:01 - Project Properties: ","27.10.2020 13:17:01 - etf.testcases - * ","27.10.2020 13:17:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:17:01 - username -  ","27.10.2020 13:17:01 - authUser -  ","27.10.2020 13:17:01 - authMethod - basic ","27.10.2020 13:17:01 - TestRunTask initialized","27.10.2020 13:17:09 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:17:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:17:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:18:10.186 retry condition not satisfied: response.val == response.max
13:18:10.186 sleeping before retry #13
13:18:15.187 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:15.705 response time in milliseconds: 517.38
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Tue, 27 Oct 2020 13:18:15 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:58 UTC 2020)","27.10.2020 13:16:58 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:58 - Preparing 1 Test Task:","27.10.2020 13:16:58 -  TestTask 1 (6c83d6df-ad67-4162-b1cb-ed939f69ffa7)","27.10.2020 13:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:58 -  with parameters: ","27.10.2020 13:16:58 - etf.testcases = *","27.10.2020 13:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:58 - Setting state to CREATED","27.10.2020 13:16:58 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:59 - Starting TestRun.2fa8d99b-359b-4bbd-b9fa-c3c6f539207b at 2020-10-27T13:17:01Z","27.10.2020 13:17:01 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:01 - Project Properties: ","27.10.2020 13:17:01 - etf.testcases - * ","27.10.2020 13:17:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:17:01 - username -  ","27.10.2020 13:17:01 - authUser -  ","27.10.2020 13:17:01 - authMethod - basic ","27.10.2020 13:17:01 - TestRunTask initialized","27.10.2020 13:17:09 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:17:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:17:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:18:15.705 retry condition not satisfied: response.val == response.max
13:18:15.705 sleeping before retry #14
13:18:20.706 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:21.230 response time in milliseconds: 523.17
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Tue, 27 Oct 2020 13:18:21 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:58 UTC 2020)","27.10.2020 13:16:58 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:58 - Preparing 1 Test Task:","27.10.2020 13:16:58 -  TestTask 1 (6c83d6df-ad67-4162-b1cb-ed939f69ffa7)","27.10.2020 13:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:58 -  with parameters: ","27.10.2020 13:16:58 - etf.testcases = *","27.10.2020 13:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:58 - Setting state to CREATED","27.10.2020 13:16:58 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:59 - Starting TestRun.2fa8d99b-359b-4bbd-b9fa-c3c6f539207b at 2020-10-27T13:17:01Z","27.10.2020 13:17:01 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:01 - Project Properties: ","27.10.2020 13:17:01 - etf.testcases - * ","27.10.2020 13:17:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:17:01 - username -  ","27.10.2020 13:17:01 - authUser -  ","27.10.2020 13:17:01 - authMethod - basic ","27.10.2020 13:17:01 - TestRunTask initialized","27.10.2020 13:17:09 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:17:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:17:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:18:20 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:18:21.230 retry condition not satisfied: response.val == response.max
13:18:21.230 sleeping before retry #15
13:18:26.231 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/progress
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:26.739 response time in milliseconds: 508.11
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Tue, 27 Oct 2020 13:18:26 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"val":"195","max":"196","log":["27.10.2020 13:16:58 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:58 UTC 2020)","27.10.2020 13:16:58 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:58 - Preparing 1 Test Task:","27.10.2020 13:16:58 -  TestTask 1 (6c83d6df-ad67-4162-b1cb-ed939f69ffa7)","27.10.2020 13:16:58 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:58 -  with parameters: ","27.10.2020 13:16:58 - etf.testcases = *","27.10.2020 13:16:58 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:58 - Setting state to CREATED","27.10.2020 13:16:58 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:59 - Starting TestRun.2fa8d99b-359b-4bbd-b9fa-c3c6f539207b at 2020-10-27T13:17:01Z","27.10.2020 13:17:01 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:17:01 - Project Properties: ","27.10.2020 13:17:01 - etf.testcases - * ","27.10.2020 13:17:01 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:17:01 - username -  ","27.10.2020 13:17:01 - authUser -  ","27.10.2020 13:17:01 - authMethod - basic ","27.10.2020 13:17:01 - TestRunTask initialized","27.10.2020 13:17:09 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:17:11 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:17:47 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:17:50 ERROR Exception occurred in Test Step: java.lang.NullPointerException","27.10.2020 13:18:20 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:18:26.740 retry condition not satisfied: response.val == response.max
13:18:26.740 sleeping before retry #16
13:18:31.740 request:
19 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/progress
19 > Accept-Encoding: gzip,deflate
19 > Connection: Keep-Alive
19 > Host: inspire.ec.europa.eu
19 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:33.783 response time in milliseconds: 2041.63
19 < 200
19 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
19 < Connection: Keep-Alive
19 < Content-Type: application/json;charset=UTF-8
19 < Date: Tue, 27 Oct 2020 13:18:33 GMT
19 < Keep-Alive: timeout=3, max=100
19 < Server: nginx/1.16.1
19 < Vary: Origin
19 < X-Frame-Options: SAMEORIGIN
19 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:18:33.783 retry condition satisfied
* print response 0.000
13:18:33.783 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 3.779
13:18:33.784 request:
20 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b
20 > Accept-Encoding: gzip,deflate
20 > Connection: Keep-Alive
20 > Host: inspire.ec.europa.eu
20 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:37.551 response time in milliseconds: 2677.02
20 < 200
20 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
20 < Cache-Control: public, max-age=120
20 < Connection: Keep-Alive
20 < Content-Type: application/json;charset=UTF-8
20 < Date: Tue, 27 Oct 2020 13:18:36 GMT
20 < Keep-Alive: timeout=3, max=100
20 < Last-Modified: Tue, 27 Oct 2020 13:18:32 GMT
20 < Server: nginx/1.16.1
20 < Vary: Origin
20 < X-Frame-Options: SAMEORIGIN
20 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/2fa8d99b-359b-4bbd-b9fa-c3c6f539207b.json","testRuns":{"TestRun":{"id":"EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:16:58.378Z","testTasks":{"TestTask":{"id":"EID6c83d6df-ad67-4162-b1cb-ed939f69ffa7","parent":{"ref":"EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EIDe84d2a58-fd85-46ab-abc4-0e67ab87fc56"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EIDf80b73fd-9147-441c-8c4e-6adf6ec61606"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EIDe84d2a58-fd85-46ab-abc4-0e67ab87fc56","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:16:53.876Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:16:55.794Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EIDf80b73fd-9147-441c-8c4e-6adf6ec61606","testObject":{"ref":"EIDe84d2a58-fd85-46ab-abc4-0e67ab87fc56"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a346947-0175-1000-5c67-6775f3b62817","testCaseResults":{"TestCaseResult":[{"id":"EID6a346947-0175-1000-3631-ee50eb8daf74","testStepResults":{"TestStepResult":[{"id":"EID6a346947-0175-1000-d3d8-396cb6ca585f","parent":{"ref":"EID6a346947-0175-1000-3631-ee50eb8daf74"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:17:01Z","duration":18,"status":"PASSED"},{"id":"EID6a34695a-0175-1000-e961-daa847f7893d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a346a48-0175-1000-ff50-0a0e89e42001","parent":{"ref":"EID6a34695a-0175-1000-e961-daa847f7893d"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:17:01Z","duration":0,"status":"PASSED"},{"id":"EID6a346a48-0175-1000-da66-68573ae012a0","parent":{"ref":"EID6a34695a-0175-1000-e961-daa847f7893d"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:17:01Z","duration":0,"status":"PASSED"},{"id":"EID6a346a48-0175-1000-8267-b1ddb923c2bd","parent":{"ref":"EID6a34695a-0175-1000-e961-daa847f7893d"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:17:01Z","duration":0,"status":"PASSED"},{"id":"EID6a346a48-0175-1000-1524-f6e5a3b20db7","parent":{"ref":"EID6a34695a-0175-1000-e961-daa847f7893d"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:17:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc534c834-3ca0-4f19-96ca-4f057a12373a"},{"ref":"EIDd2d3aa38-b434-4235-988d-095db0d39a8c"},{"ref":"EID77e09c0f-a4c8-4c2d-9a90-9eb185391170"}]},"parent":{"ref":"EID6a346947-0175-1000-3631-ee50eb8daf74"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:17:01Z","duration":144,"status":"PASSED"}]},"parent":{"ref":"EID6a346947-0175-1000-5c67-6775f3b62817"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:17:01Z","duration":257,"status":"PASSED"},{"id":"EID6a346a48-0175-1000-1e7a-2f26454d6a81","testStepResults":{"TestStepResult":{"id":"EID6a346a48-0175-1000-1c16-41e91f2788e7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a346be6-0175-1000-6623-b14ebe7e7232","parent":{"ref":"EID6a346a48-0175-1000-1c16-41e91f2788e7"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:17:01Z","duration":0,"status":"PASSED"},{"id":"EID6a346be6-0175-1000-cd53-4e71aa113144","parent":{"ref":"EID6a346a48-0175-1000-1c16-41e91f2788e7"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:17:01Z","duration":0,"status":"PASSED"},{"id":"EID6a346be6-0175-1000-cc55-857306a618ab","parent":{"ref":"EID6a346a48-0175-1000-1c16-41e91f2788e7"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:17:01Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDaa0258f3-cc73-4b06-9366-355ef5158c0c"},{"ref":"EID8644be4b-4897-4924-9dda-9313290208a1"},{"ref":"EID7e6cc716-62ec-4d91-a3f4-77047b8423f2"}]},"parent":{"ref":"EID6a346a48-0175-1000-1e7a-2f26454d6a81"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:17:01Z","duration":302,"status":"PASSED"}},"parent":{"ref":"EID6a346947-0175-1000-5c67-6775f3b62817"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:17:01Z","duration":431,"status":"PASSED"}]},"parent":{"ref":"EIDf80b73fd-9147-441c-8c4e-6adf6ec61606"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:17:01Z","duration":688,"status":"PASSED"},{"id":"EID6a346bf7-0175-1000-207f-3bc60d55e734","testCaseResults":{"TestCaseResult":[{"id":"EID6a346bf7-0175-1000-7ee3-b82fa6a7e005","testStepResults":{"TestStepResult":[{"id":"EID6a346bf7-0175-1000-12b0-eb51aa447952","parent":{"ref":"EID6a346bf7-0175-1000-7ee3-b82fa6a7e005"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:17:01Z","duration":288,"status":"PASSED"},{"id":"EID6a346bf7-0175-1000-d56a-80be32ae1d18","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a346d1b-0175-1000-503a-b3df7b8ba994","parent":{"ref":"EID6a346bf7-0175-1000-d56a-80be32ae1d18"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:17:02Z","duration":0,"status":"PASSED"},{"id":"EID6a346d1b-0175-1000-84b6-c9429d977b42","parent":{"ref":"EID6a346bf7-0175-1000-d56a-80be32ae1d18"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:17:02Z","duration":0,"status":"PASSED"},{"id":"EID6a346d1b-0175-1000-8f5d-9403cdcae0af","parent":{"ref":"EID6a346bf7-0175-1000-d56a-80be32ae1d18"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:17:02Z","duration":0,"status":"PASSED"},{"id":"EID6a346d1b-0175-1000-4dbe-686528d27866","parent":{"ref":"EID6a346bf7-0175-1000-d56a-80be32ae1d18"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:17:02Z","duration":0,"status":"PASSED"},{"id":"EID6a346d1b-0175-1000-add8-97db84f033b9","parent":{"ref":"EID6a346bf7-0175-1000-d56a-80be32ae1d18"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:17:02Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID034c2069-6dff-4bfa-927c-39b164af784c"},{"ref":"EIDff8daa89-75dc-4c80-bd2c-d66cdbaf8895"},{"ref":"EID7400e828-e329-479e-8353-7924e5fd9ce7"}]},"parent":{"ref":"EID6a346bf7-0175-1000-7ee3-b82fa6a7e005"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:17:01Z","duration":99,"status":"PASSED"}]},"parent":{"ref":"EID6a346bf7-0175-1000-207f-3bc60d55e734"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:17:01Z","duration":292,"status":"PASSED"},{"id":"EID6a346d1b-0175-1000-6ae9-e020f1a61d37","testStepResults":{"TestStepResult":[{"id":"EID6a346d1b-0175-1000-051c-65f8cfbea010","attachments":{"attachment":[{"ref":"EID21de36b9-e903-4996-a995-145c100b4a76"},{"ref":"EIDdbf64ed0-fa6a-4549-8ab1-8cd8c8b8b8d3"}]},"parent":{"ref":"EID6a346d1b-0175-1000-6ae9-e020f1a61d37"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:17:02Z","duration":612,"status":"PASSED"},{"id":"EID6a346fc5-0175-1000-883a-b5d9971775b6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a347148-0175-1000-c8f6-27982b21a17a","parent":{"ref":"EID6a346fc5-0175-1000-883a-b5d9971775b6"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:17:03Z","duration":0,"status":"PASSED"},{"id":"EID6a347148-0175-1000-e7f6-b7b5788f8df9","parent":{"ref":"EID6a346fc5-0175-1000-883a-b5d9971775b6"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:17:03Z","duration":0,"status":"PASSED"},{"id":"EID6a347148-0175-1000-d204-401529a1868d","parent":{"ref":"EID6a346fc5-0175-1000-883a-b5d9971775b6"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:17:03Z","duration":0,"status":"PASSED"},{"id":"EID6a347148-0175-1000-5731-c323055df72d","parent":{"ref":"EID6a346fc5-0175-1000-883a-b5d9971775b6"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:17:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID30887bb0-2424-43f6-8d8c-47756ea0f295"},{"ref":"EID2e4337d3-15d1-4491-867e-8320c42935fe"},{"ref":"EID7db3bdff-c5e3-4650-ac68-45504a68f9ce"}]},"parent":{"ref":"EID6a346d1b-0175-1000-6ae9-e020f1a61d37"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:17:02Z","duration":186,"status":"PASSED"}]},"parent":{"ref":"EID6a346bf7-0175-1000-207f-3bc60d55e734"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:17:02Z","duration":1069,"status":"PASSED"},{"id":"EID6a347149-0175-1000-d37a-87a0da9e2751","testStepResults":{"TestStepResult":[{"id":"EID6a347149-0175-1000-7914-e0be2c7018dd","attachments":{"attachment":[{"ref":"EID908baf4a-34cc-4bba-af2b-04c8fe3e45b5"},{"ref":"EID352331f3-d5fc-4d6d-aa54-b86170759fb3"}]},"parent":{"ref":"EID6a347149-0175-1000-d37a-87a0da9e2751"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:17:03Z","duration":297,"status":"PASSED"},{"id":"EID6a3472a5-0175-1000-81e2-fd310f2be223","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34738e-0175-1000-7e5a-c9596255d273","parent":{"ref":"EID6a3472a5-0175-1000-81e2-fd310f2be223"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:17:03Z","duration":0,"status":"PASSED"},{"id":"EID6a34738e-0175-1000-a9e3-23b961c902db","parent":{"ref":"EID6a3472a5-0175-1000-81e2-fd310f2be223"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:17:03Z","duration":0,"status":"PASSED"},{"id":"EID6a34738e-0175-1000-b567-2850de3030ff","parent":{"ref":"EID6a3472a5-0175-1000-81e2-fd310f2be223"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:17:03Z","duration":0,"status":"PASSED"},{"id":"EID6a34738e-0175-1000-21dd-7e9880dff831","parent":{"ref":"EID6a3472a5-0175-1000-81e2-fd310f2be223"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:17:03Z","duration":0,"status":"PASSED"},{"id":"EID6a34738e-0175-1000-2fdf-2f2894af3d37","parent":{"ref":"EID6a3472a5-0175-1000-81e2-fd310f2be223"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:17:03Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2a24c715-f1cd-4439-9867-d22e07dc4b54"},{"ref":"EIDa7420b62-47d3-4edc-84fe-de1bc9f2c486"},{"ref":"EID387c82f3-b38a-405b-9ccd-2fb846c8a62c"}]},"parent":{"ref":"EID6a347149-0175-1000-d37a-87a0da9e2751"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:17:03Z","duration":65,"status":"PASSED"}]},"parent":{"ref":"EID6a346bf7-0175-1000-207f-3bc60d55e734"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:17:03Z","duration":581,"status":"PASSED"},{"id":"EID6a34738e-0175-1000-12c9-e1571c6cfb5c","testStepResults":{"TestStepResult":[{"id":"EID6a347398-0175-1000-89ff-4e56571025be","attachments":{"attachment":[{"ref":"EID68f070c6-cf1b-440d-bed5-bd827ecc8837"},{"ref":"EID6920ac5b-9f29-462c-acfc-4cb78bbe0046"}]},"parent":{"ref":"EID6a34738e-0175-1000-12c9-e1571c6cfb5c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:17:03Z","duration":355,"status":"PASSED"},{"id":"EID6a34752f-0175-1000-7316-868f33640dfb","parent":{"ref":"EID6a34738e-0175-1000-12c9-e1571c6cfb5c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:17:04Z","duration":0,"status":"PASSED"},{"id":"EID6a347530-0175-1000-4753-2756135d49a8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3477f4-0175-1000-150f-2226afde7238","parent":{"ref":"EID6a347530-0175-1000-4753-2756135d49a8"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:17:04Z","duration":0,"status":"PASSED"},{"id":"EID6a3477f4-0175-1000-2532-0c060745e73e","parent":{"ref":"EID6a347530-0175-1000-4753-2756135d49a8"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:17:04Z","duration":0,"status":"PASSED"},{"id":"EID6a3477f4-0175-1000-2866-62c607e5012b","parent":{"ref":"EID6a347530-0175-1000-4753-2756135d49a8"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:17:04Z","duration":0,"status":"PASSED"},{"id":"EID6a3477f4-0175-1000-b6b3-9f354ffb72fd","parent":{"ref":"EID6a347530-0175-1000-4753-2756135d49a8"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:17:04Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5a193c48-859a-4764-bf7b-c4ed17cc7470"},{"ref":"EID892dbd3c-9e43-4531-8b35-944727f76dfe"},{"ref":"EID70adbe45-7c0b-4058-82d6-87050173cef5"}]},"parent":{"ref":"EID6a34738e-0175-1000-12c9-e1571c6cfb5c"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:17:04Z","duration":504,"status":"PASSED"},{"id":"EID6a3477f4-0175-1000-0751-9686561f037b","attachments":{"attachment":{"ref":"EIDf7916c12-8e55-4e66-8f3e-793b5ec08032"}},"parent":{"ref":"EID6a34738e-0175-1000-12c9-e1571c6cfb5c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:17:04Z","duration":1,"status":"PASSED"},{"id":"EID6a347836-0175-1000-ecf5-6a736bdedae4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3478fd-0175-1000-126d-66e75803704b","parent":{"ref":"EID6a347836-0175-1000-ecf5-6a736bdedae4"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:17:05Z","duration":0,"status":"PASSED"},{"id":"EID6a3478fd-0175-1000-42c3-7d2f4ea839ef","parent":{"ref":"EID6a347836-0175-1000-ecf5-6a736bdedae4"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:17:05Z","duration":0,"status":"PASSED"},{"id":"EID6a3478fd-0175-1000-e69d-e00760a4b652","parent":{"ref":"EID6a347836-0175-1000-ecf5-6a736bdedae4"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:17:05Z","duration":0,"status":"PASSED"},{"id":"EID6a3478fd-0175-1000-d943-68ffaa57bfde","parent":{"ref":"EID6a347836-0175-1000-ecf5-6a736bdedae4"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:17:05Z","duration":0,"status":"PASSED"},{"id":"EID6a3478fd-0175-1000-7c8b-370f660d734b","parent":{"ref":"EID6a347836-0175-1000-ecf5-6a736bdedae4"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:17:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID748fd004-86d5-46eb-9661-cad53ae78a17"},{"ref":"EIDaefa5672-4912-4c7a-ab4c-dae400750680"},{"ref":"EID26ec4d17-a22a-4248-911a-e0682dfad7c6"}]},"parent":{"ref":"EID6a34738e-0175-1000-12c9-e1571c6cfb5c"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:17:04Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6a346bf7-0175-1000-207f-3bc60d55e734"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:17:03Z","duration":1391,"status":"PASSED"},{"id":"EID6a3478fe-0175-1000-3d62-2f421ee6d13a","testStepResults":{"TestStepResult":[{"id":"EID6a3478fe-0175-1000-9580-03f04da6bd90","attachments":{"attachment":[{"ref":"EID61a78c90-afc0-4cb0-854b-5e916c45e3e0"},{"ref":"EIDa617b446-3b2b-46a9-a47e-bdc7c1fe88eb"}]},"parent":{"ref":"EID6a3478fe-0175-1000-3d62-2f421ee6d13a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:17:05Z","duration":370,"status":"PASSED"},{"id":"EID6a347a9e-0175-1000-f0ba-f3e57c9ca399","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a347bf1-0175-1000-0484-e24ed886e401","parent":{"ref":"EID6a347a9e-0175-1000-f0ba-f3e57c9ca399"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:17:05Z","duration":0,"status":"PASSED"},{"id":"EID6a347bf1-0175-1000-65b5-89810959da20","parent":{"ref":"EID6a347a9e-0175-1000-f0ba-f3e57c9ca399"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:17:05Z","duration":0,"status":"PASSED"},{"id":"EID6a347bf1-0175-1000-dfe0-adbc8511c82a","parent":{"ref":"EID6a347a9e-0175-1000-f0ba-f3e57c9ca399"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:17:05Z","duration":0,"status":"PASSED"},{"id":"EID6a347bf1-0175-1000-72f9-2aac6c62e649","parent":{"ref":"EID6a347a9e-0175-1000-f0ba-f3e57c9ca399"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:17:05Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID95c440bb-5772-43ac-bf6a-5731a0ed6ad7"},{"ref":"EIDdcdebf73-081e-4f7d-9c2c-3d0e254ffb75"},{"ref":"EID27fe6289-7a1e-458b-b975-75f657aff7e0"}]},"parent":{"ref":"EID6a3478fe-0175-1000-3d62-2f421ee6d13a"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:17:05Z","duration":231,"status":"PASSED"}]},"parent":{"ref":"EID6a346bf7-0175-1000-207f-3bc60d55e734"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:17:05Z","duration":756,"status":"PASSED"},{"id":"EID6a347bf2-0175-1000-e5e3-cd2b464236a4","testStepResults":{"TestStepResult":[{"id":"EID6a347bf2-0175-1000-7740-f48f2e6930e5","attachments":{"attachment":[{"ref":"EID5b254ce0-3c4e-42c6-96eb-ac76cc841904"},{"ref":"EID7c2bda75-3183-4849-8cd9-81badf109497"}]},"parent":{"ref":"EID6a347bf2-0175-1000-e5e3-cd2b464236a4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:17:05Z","duration":129,"status":"PASSED"},{"id":"EID6a347cc5-0175-1000-8358-419b9485e1bb","parent":{"ref":"EID6a347bf2-0175-1000-e5e3-cd2b464236a4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:17:06Z","duration":0,"status":"PASSED"},{"id":"EID6a347cc5-0175-1000-7164-f6b6890f4f64","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a347df0-0175-1000-0957-6c1c7e8be251","parent":{"ref":"EID6a347cc5-0175-1000-7164-f6b6890f4f64"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:17:06Z","duration":0,"status":"PASSED"},{"id":"EID6a347df0-0175-1000-3a43-ec280224c954","parent":{"ref":"EID6a347cc5-0175-1000-7164-f6b6890f4f64"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:17:06Z","duration":0,"status":"PASSED"},{"id":"EID6a347df0-0175-1000-06e1-beef8bffe301","parent":{"ref":"EID6a347cc5-0175-1000-7164-f6b6890f4f64"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:17:06Z","duration":0,"status":"PASSED"},{"id":"EID6a347df0-0175-1000-3466-f1b8379a3227","parent":{"ref":"EID6a347cc5-0175-1000-7164-f6b6890f4f64"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:17:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5306828a-d75b-431d-90c1-f1daffba2e1d"},{"ref":"EIDd937ceec-8e53-4674-90e6-018c15a0a60b"},{"ref":"EID85abe5bb-773c-4295-9aca-d71d7bdf3905"}]},"parent":{"ref":"EID6a347bf2-0175-1000-e5e3-cd2b464236a4"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:17:06Z","duration":169,"status":"PASSED"},{"id":"EID6a347df0-0175-1000-27a3-ce0e672a5987","attachments":{"attachment":{"ref":"EIDd6d35608-aac1-4d90-99a7-353b25cf6235"}},"parent":{"ref":"EID6a347bf2-0175-1000-e5e3-cd2b464236a4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:17:06Z","duration":2,"status":"PASSED"},{"id":"EID6a347e22-0175-1000-18f9-cd9889f69b38","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a347ee6-0175-1000-e017-72ceef10725e","parent":{"ref":"EID6a347e22-0175-1000-18f9-cd9889f69b38"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:17:06Z","duration":0,"status":"PASSED"},{"id":"EID6a347ee6-0175-1000-d047-9c367823a210","parent":{"ref":"EID6a347e22-0175-1000-18f9-cd9889f69b38"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:17:06Z","duration":0,"status":"PASSED"},{"id":"EID6a347ee6-0175-1000-f6e6-f6e2003492aa","parent":{"ref":"EID6a347e22-0175-1000-18f9-cd9889f69b38"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:17:06Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa183b130-64ac-42cd-bd17-bf75b91eea6a"},{"ref":"EIDee2c9636-ea18-48ac-b3f5-94b4eb939906"},{"ref":"EID00ed9b2e-62c5-4847-abe3-8e45fe70f60c"}]},"parent":{"ref":"EID6a347bf2-0175-1000-e5e3-cd2b464236a4"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:17:06Z","duration":129,"status":"PASSED"},{"id":"EID6a347ee6-0175-1000-5694-f64280f59ee4","attachments":{"attachment":{"ref":"EIDf23167e5-0525-482b-ad85-eeea9bfee3a2"}},"parent":{"ref":"EID6a347bf2-0175-1000-e5e3-cd2b464236a4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-27T13:17:06Z","duration":0,"status":"PASSED"},{"id":"EID6a347ef3-0175-1000-3f63-7a8388c29458","attachments":{"attachment":{"ref":"EIDe24a9b6f-7704-465f-85c2-5c10c6e16119"}},"parent":{"ref":"EID6a347bf2-0175-1000-e5e3-cd2b464236a4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-27T13:17:06Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6a346bf7-0175-1000-207f-3bc60d55e734"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:17:05Z","duration":780,"status":"PASSED"},{"id":"EID6a347f07-0175-1000-ba2d-e40f0129b762","testStepResults":{"TestStepResult":[{"id":"EID6a347f07-0175-1000-a83f-09ed5c012083","attachments":{"attachment":[{"ref":"EID99682ee2-5eb8-4e16-bfa2-d8edba69f595"},{"ref":"EID1180b166-3fb1-44cd-a48b-5b804a08bbce"}]},"parent":{"ref":"EID6a347f07-0175-1000-ba2d-e40f0129b762"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:17:06Z","duration":517,"status":"PASSED"},{"id":"EID6a348136-0175-1000-060f-321b8febd9ac","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3482a1-0175-1000-dfce-160d5293cc19","parent":{"ref":"EID6a348136-0175-1000-060f-321b8febd9ac"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:17:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3482a1-0175-1000-02f7-faefdc92e3a4","parent":{"ref":"EID6a348136-0175-1000-060f-321b8febd9ac"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:17:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3482a1-0175-1000-f31b-44781fafdabe","parent":{"ref":"EID6a348136-0175-1000-060f-321b8febd9ac"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:17:07Z","duration":0,"status":"PASSED"},{"id":"EID6a3482a1-0175-1000-c829-7a2c96617a6a","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a348136-0175-1000-060f-321b8febd9ac"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:17:07Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EIDbf47ce99-5b56-405b-9a1b-0f744fc6e38f"},{"ref":"EID173572d6-4d24-4bb0-89c8-c5651465b376"},{"ref":"EID11e02d62-d465-4de2-ba32-d1874ba5ac57"}]},"parent":{"ref":"EID6a347f07-0175-1000-ba2d-e40f0129b762"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:17:07Z","duration":235,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a346bf7-0175-1000-207f-3bc60d55e734"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:17:06Z","duration":922,"status":"PASSED_MANUAL"},{"id":"EID6a3482a1-0175-1000-6253-ca9c891fcbef","testStepResults":{"TestStepResult":{"id":"EID6a3482a1-0175-1000-1ae8-7cdec6fe5622","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34840f-0175-1000-8ac1-c83e6f10166a","parent":{"ref":"EID6a3482a1-0175-1000-1ae8-7cdec6fe5622"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:17:07Z","duration":0,"status":"PASSED"},{"id":"EID6a34840f-0175-1000-2935-03149a3f05fa","parent":{"ref":"EID6a3482a1-0175-1000-1ae8-7cdec6fe5622"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:17:07Z","duration":0,"status":"PASSED"},{"id":"EID6a34840f-0175-1000-0fed-551bfb61b5cd","parent":{"ref":"EID6a3482a1-0175-1000-1ae8-7cdec6fe5622"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:17:07Z","duration":0,"status":"PASSED"},{"id":"EID6a34840f-0175-1000-a661-e6b26e0c706a","parent":{"ref":"EID6a3482a1-0175-1000-1ae8-7cdec6fe5622"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:17:07Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5dfeee09-5f88-44b9-b707-bab464f1591a"},{"ref":"EIDdc3ae4fd-0186-4590-a370-10f9f3252381"},{"ref":"EID8165c899-0030-4dea-8ac6-825d52016a34"}]},"parent":{"ref":"EID6a3482a1-0175-1000-6253-ca9c891fcbef"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:17:07Z","duration":189,"status":"PASSED"}},"parent":{"ref":"EID6a346bf7-0175-1000-207f-3bc60d55e734"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:17:07Z","duration":367,"status":"PASSED"},{"id":"EID6a348410-0175-1000-21d4-35f0fce56e7d","testStepResults":{"TestStepResult":{"id":"EID6a348410-0175-1000-307f-9b8453d893be","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3485d2-0175-1000-58b3-6ca19bacebc9","parent":{"ref":"EID6a348410-0175-1000-307f-9b8453d893be"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:17:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3485d2-0175-1000-f92a-5c94ce914ad1","parent":{"ref":"EID6a348410-0175-1000-307f-9b8453d893be"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:17:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3485d2-0175-1000-0edd-17b456cd1c4e","parent":{"ref":"EID6a348410-0175-1000-307f-9b8453d893be"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:17:08Z","duration":0,"status":"PASSED"},{"id":"EID6a3485d2-0175-1000-547d-5ac174741a1a","parent":{"ref":"EID6a348410-0175-1000-307f-9b8453d893be"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:17:08Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc2961652-7d2f-4425-9682-b612482bcf6c"},{"ref":"EIDaa282c8d-5fdb-4b2c-a3c5-f001ff2d32eb"},{"ref":"EID62decfac-a85c-4c90-ae2c-f696ed6242dc"}]},"parent":{"ref":"EID6a348410-0175-1000-21d4-35f0fce56e7d"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:17:07Z","duration":308,"status":"PASSED"}},"parent":{"ref":"EID6a346bf7-0175-1000-207f-3bc60d55e734"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:17:07Z","duration":451,"status":"PASSED"},{"id":"EID6a3485d3-0175-1000-09c8-54ff5bbf709c","testStepResults":{"TestStepResult":[{"id":"EID6a3485d3-0175-1000-42f1-c0885fe348ec","attachments":{"attachment":[{"ref":"EID410faa79-ce75-4907-bfcd-9d130e9b80d5"},{"ref":"EID8a590b02-3047-41f5-971d-9766712874ea"},{"ref":"EIDeef14561-ec8e-436f-9abc-9115154e1e8f"},{"ref":"EID394f2397-4b83-406b-b97e-a9f9e84b1049"},{"ref":"EID13a3c60e-c515-4d6d-9098-702e0a456895"},{"ref":"EID43ca58fd-30d4-442d-a6ef-3c44a2d3fb83"},{"ref":"EID3bf6a37c-7008-4fa0-b409-ca2722962bd3"},{"ref":"EID6533a482-0b22-44a2-8f96-36ba76c4fb1e"},{"ref":"EID1a25813e-743c-4d11-8c6d-ffbbd221b46a"},{"ref":"EIDa1d6bfc8-49bb-47ec-a6db-231c128e9063"},{"ref":"EIDcb8ff353-dc02-40c8-aedc-dc10049eff17"},{"ref":"EID4f0cade2-5be5-4b77-ad3d-e7180a1dfa1f"}]},"parent":{"ref":"EID6a3485d3-0175-1000-09c8-54ff5bbf709c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:17:08Z","duration":641,"status":"PASSED"},{"id":"EID6a348962-0175-1000-3c30-1ba26a45e019","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a348a6f-0175-1000-9009-9f24b59ccaf9","parent":{"ref":"EID6a348962-0175-1000-3c30-1ba26a45e019"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-27T13:17:09Z","duration":0,"status":"PASSED"},{"id":"EID6a348a6f-0175-1000-fef1-4137678fd825","parent":{"ref":"EID6a348962-0175-1000-3c30-1ba26a45e019"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-27T13:17:09Z","duration":0,"status":"PASSED"},{"id":"EID6a348a6f-0175-1000-5514-18df6db7be17","parent":{"ref":"EID6a348962-0175-1000-3c30-1ba26a45e019"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-27T13:17:09Z","duration":0,"status":"PASSED"},{"id":"EID6a348a6f-0175-1000-4ca7-1e45ae9c797f","messages":{"message":{"ref":"TR.incorrectFeedSelfReference","translationArguments":{"argument":[{"token":"actual","$":"http://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"},{"token":"element","$":"/atom:feed/atom:link with @rel='self'"},{"token":"expected","$":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href"}]}}},"parent":{"ref":"EID6a348962-0175-1000-3c30-1ba26a45e019"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-27T13:17:09Z","duration":0,"status":"FAILED"},{"id":"EID6a348a6f-0175-1000-c659-5c9e77d58046","parent":{"ref":"EID6a348962-0175-1000-3c30-1ba26a45e019"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-27T13:17:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDde4ca725-730b-4a05-95a8-316bfdb8a684"},{"ref":"EID1eaeb98d-6b72-4f1a-aa8f-6665024d3fec"},{"ref":"EID207f0b70-e1ae-468b-abb7-375453ec6a63"}]},"parent":{"ref":"EID6a3485d3-0175-1000-09c8-54ff5bbf709c"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-27T13:17:09Z","duration":71,"status":"FAILED"}]},"parent":{"ref":"EID6a346bf7-0175-1000-207f-3bc60d55e734"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:17:08Z","duration":1180,"status":"FAILED"},{"id":"EID6a348a6f-0175-1000-0809-85fde4b8c7e6","testStepResults":{"TestStepResult":{"id":"EID6a348a6f-0175-1000-2ed2-46bffe3fa1f1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a348b6c-0175-1000-c606-052155beb003","parent":{"ref":"EID6a348a6f-0175-1000-2ed2-46bffe3fa1f1"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:17:09Z","duration":0,"status":"PASSED"},{"id":"EID6a348b6c-0175-1000-fc78-bb2d377c3874","parent":{"ref":"EID6a348a6f-0175-1000-2ed2-46bffe3fa1f1"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:17:09Z","duration":0,"status":"PASSED"},{"id":"EID6a348b6c-0175-1000-d5b9-9c4076a40785","parent":{"ref":"EID6a348a6f-0175-1000-2ed2-46bffe3fa1f1"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:17:09Z","duration":0,"status":"PASSED"},{"id":"EID6a348b6c-0175-1000-2a7b-0ca7e67654de","parent":{"ref":"EID6a348a6f-0175-1000-2ed2-46bffe3fa1f1"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:17:09Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID06ca9043-23c3-4e96-9315-d9ee2d50f673"},{"ref":"EID5e26287a-8205-495b-a1d4-e696c2c73e7c"},{"ref":"EID6f2234a0-a358-42c2-92c4-f44f2aad0c7e"}]},"parent":{"ref":"EID6a348a6f-0175-1000-0809-85fde4b8c7e6"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:17:09Z","duration":67,"status":"PASSED"}},"parent":{"ref":"EID6a346bf7-0175-1000-207f-3bc60d55e734"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:17:09Z","duration":253,"status":"PASSED"},{"id":"EID6a348b6c-0175-1000-a10f-69286436eb8d","testStepResults":{"TestStepResult":{"id":"EID6a348b6c-0175-1000-306e-056866f0a2f7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a348c47-0175-1000-041b-f39be9d7214d","parent":{"ref":"EID6a348b6c-0175-1000-306e-056866f0a2f7"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:17:10Z","duration":0,"status":"PASSED"},{"id":"EID6a348c47-0175-1000-bb3e-64e73ad47484","parent":{"ref":"EID6a348b6c-0175-1000-306e-056866f0a2f7"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:17:10Z","duration":0,"status":"PASSED"},{"id":"EID6a348c47-0175-1000-d694-114296d25ceb","parent":{"ref":"EID6a348b6c-0175-1000-306e-056866f0a2f7"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:17:10Z","duration":0,"status":"PASSED"},{"id":"EID6a348c47-0175-1000-bf5b-e6f94d4fbcc9","parent":{"ref":"EID6a348b6c-0175-1000-306e-056866f0a2f7"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:17:10Z","duration":0,"status":"PASSED"},{"id":"EID6a348c47-0175-1000-c539-94e2930392aa","parent":{"ref":"EID6a348b6c-0175-1000-306e-056866f0a2f7"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:17:10Z","duration":0,"status":"PASSED"},{"id":"EID6a348c47-0175-1000-28a5-281f1ed8c04e","parent":{"ref":"EID6a348b6c-0175-1000-306e-056866f0a2f7"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:17:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1ab03d00-ab70-44dd-adc2-c8ca44d55a56"},{"ref":"EIDaa6d2edb-04ee-4e36-bb97-9765b5f16425"},{"ref":"EID93f44e78-fd44-43fe-94d8-e25c87c80362"}]},"parent":{"ref":"EID6a348b6c-0175-1000-a10f-69286436eb8d"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:17:09Z","duration":58,"status":"PASSED"}},"parent":{"ref":"EID6a346bf7-0175-1000-207f-3bc60d55e734"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:17:09Z","duration":230,"status":"PASSED"},{"id":"EID6a348c52-0175-1000-6007-3cce8ab3b64b","testStepResults":{"TestStepResult":{"id":"EID6a348c52-0175-1000-5d3c-fb1c61567ce6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a348d9a-0175-1000-4088-949e20bc8cb1","parent":{"ref":"EID6a348c52-0175-1000-5d3c-fb1c61567ce6"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:17:10Z","duration":0,"status":"PASSED"},{"id":"EID6a348d9a-0175-1000-99e7-03c912190dec","parent":{"ref":"EID6a348c52-0175-1000-5d3c-fb1c61567ce6"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:17:10Z","duration":0,"status":"PASSED"},{"id":"EID6a348d9a-0175-1000-a961-be1cb2d473c3","parent":{"ref":"EID6a348c52-0175-1000-5d3c-fb1c61567ce6"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:17:10Z","duration":0,"status":"PASSED"},{"id":"EID6a348d9a-0175-1000-9a12-ab25383d90d0","parent":{"ref":"EID6a348c52-0175-1000-5d3c-fb1c61567ce6"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:17:10Z","duration":0,"status":"PASSED"},{"id":"EID6a348d9a-0175-1000-77d6-5585d8f44495","parent":{"ref":"EID6a348c52-0175-1000-5d3c-fb1c61567ce6"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:17:10Z","duration":0,"status":"PASSED"},{"id":"EID6a348d9a-0175-1000-1098-c0b03dcd4dd1","parent":{"ref":"EID6a348c52-0175-1000-5d3c-fb1c61567ce6"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:17:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID90261181-8e9a-4f38-a898-ed3a8f04d331"},{"ref":"EID2f9828fc-949a-4dc7-b8fc-530de0bb8707"},{"ref":"EIDffd7cbdc-9c58-4975-b304-dd3955701add"}]},"parent":{"ref":"EID6a348c52-0175-1000-6007-3cce8ab3b64b"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:17:10Z","duration":98,"status":"PASSED"}},"parent":{"ref":"EID6a346bf7-0175-1000-207f-3bc60d55e734"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:17:10Z","duration":328,"status":"PASSED"},{"id":"EID6a348d9a-0175-1000-a15d-e4f14436b3ca","testStepResults":{"TestStepResult":{"id":"EID6a348d9a-0175-1000-d1a1-5cf788a0290b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a348e9e-0175-1000-6547-9b0a7da2d433","parent":{"ref":"EID6a348d9a-0175-1000-d1a1-5cf788a0290b"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:17:10Z","duration":0,"status":"PASSED"},{"id":"EID6a348e9e-0175-1000-a76c-d972f2069fb4","parent":{"ref":"EID6a348d9a-0175-1000-d1a1-5cf788a0290b"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:17:10Z","duration":0,"status":"PASSED"},{"id":"EID6a348e9e-0175-1000-6c56-390368499fbc","parent":{"ref":"EID6a348d9a-0175-1000-d1a1-5cf788a0290b"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:17:10Z","duration":0,"status":"PASSED"},{"id":"EID6a348e9e-0175-1000-2c13-f18ef1bfd5a2","parent":{"ref":"EID6a348d9a-0175-1000-d1a1-5cf788a0290b"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:17:10Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6406e918-9387-40f9-b2bc-4f117ed44694"},{"ref":"EIDfa01e73f-b888-4ccf-a6bb-8d8404189b46"},{"ref":"EID7ae8384a-0679-4e17-bcb5-3d2aee52e768"}]},"parent":{"ref":"EID6a348d9a-0175-1000-a15d-e4f14436b3ca"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:17:10Z","duration":43,"status":"PASSED"}},"parent":{"ref":"EID6a346bf7-0175-1000-207f-3bc60d55e734"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:17:10Z","duration":260,"status":"PASSED"},{"id":"EID6a348e9e-0175-1000-1158-6bcc5e38aa87","testStepResults":{"TestStepResult":[{"id":"EID6a348e9e-0175-1000-8700-610776047710","attachments":{"attachment":[{"ref":"EIDe109989d-5266-4bfd-a095-2a32c9346571"},{"ref":"EIDe62a3fa9-06e5-41c7-ba88-6d19bf281606"},{"ref":"EIDdd1f93ed-9a26-4c71-8b97-a06a54462a5e"},{"ref":"EID5e9a68f9-def6-4d82-b084-69d2cc9af030"}]},"parent":{"ref":"EID6a348e9e-0175-1000-1158-6bcc5e38aa87"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:17:10Z","duration":567,"status":"PASSED"},{"id":"EID6a34910e-0175-1000-3d51-0480b3426459","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3491ab-0175-1000-0720-93782fb772a0","parent":{"ref":"EID6a34910e-0175-1000-3d51-0480b3426459"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3491ab-0175-1000-9305-c4246dbe8c35","parent":{"ref":"EID6a34910e-0175-1000-3d51-0480b3426459"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3491ab-0175-1000-87ee-39328b59cfa3","parent":{"ref":"EID6a34910e-0175-1000-3d51-0480b3426459"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3491ab-0175-1000-0002-ae8c126bba46","parent":{"ref":"EID6a34910e-0175-1000-3d51-0480b3426459"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:17:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdd57df58-ac64-420f-a6ef-73d451b571e8"},{"ref":"EID5f2e29e0-230f-4c2d-bb10-ca7906cb9278"},{"ref":"EID3267c961-ad7f-46ab-a563-b2ff7d633baa"}]},"parent":{"ref":"EID6a348e9e-0175-1000-1158-6bcc5e38aa87"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:17:11Z","duration":53,"status":"PASSED"}]},"parent":{"ref":"EID6a346bf7-0175-1000-207f-3bc60d55e734"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:17:10Z","duration":781,"status":"PASSED"},{"id":"EID6a3491ab-0175-1000-b888-d554256f2498","testStepResults":{"TestStepResult":{"id":"EID6a3491ab-0175-1000-478b-189b8fc52401","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a349256-0175-1000-66a2-991287d471f2","parent":{"ref":"EID6a3491ab-0175-1000-478b-189b8fc52401"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6a349256-0175-1000-4dd0-e5b624adfe8a","parent":{"ref":"EID6a3491ab-0175-1000-478b-189b8fc52401"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6a349256-0175-1000-1c0f-2059ad63651e","parent":{"ref":"EID6a3491ab-0175-1000-478b-189b8fc52401"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6a349256-0175-1000-125d-a871b0862357","parent":{"ref":"EID6a3491ab-0175-1000-478b-189b8fc52401"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:17:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0deb91af-2d7f-4b0d-95d0-f3252f34a7de"},{"ref":"EIDe0e90755-174f-4b5d-b38c-54d83d19dbfb"},{"ref":"EIDdfe1aa8e-2a67-495d-b688-133f513469ae"}]},"parent":{"ref":"EID6a3491ab-0175-1000-b888-d554256f2498"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:17:11Z","duration":43,"status":"PASSED"}},"parent":{"ref":"EID6a346bf7-0175-1000-207f-3bc60d55e734"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:17:11Z","duration":171,"status":"PASSED"},{"id":"EID6a349256-0175-1000-c2a8-e395b65847c4","testStepResults":{"TestStepResult":[{"id":"EID6a349257-0175-1000-9f20-9a8a35d1db13","parent":{"ref":"EID6a349256-0175-1000-c2a8-e395b65847c4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6a349257-0175-1000-c83b-72d172911f4c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3492e5-0175-1000-214f-a018a6d8f2c4","parent":{"ref":"EID6a349257-0175-1000-c83b-72d172911f4c"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3492e5-0175-1000-e06d-cdffc320c0a3","parent":{"ref":"EID6a349257-0175-1000-c83b-72d172911f4c"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3492e5-0175-1000-c978-ca03e33f7f2f","parent":{"ref":"EID6a349257-0175-1000-c83b-72d172911f4c"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3492e5-0175-1000-1689-6e992b18dc3e","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6a349257-0175-1000-c83b-72d172911f4c"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:17:11Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDf11bf969-bb2a-44af-87c7-160e9534d849"},{"ref":"EIDdfaf7980-d695-43ce-ba18-8d6d2f71e3c4"},{"ref":"EIDcae48b50-7c9d-412c-a0b7-6f27ce868af0"}]},"parent":{"ref":"EID6a349256-0175-1000-c2a8-e395b65847c4"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:17:11Z","duration":45,"status":"FAILED"}]},"parent":{"ref":"EID6a346bf7-0175-1000-207f-3bc60d55e734"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:17:11Z","duration":143,"status":"FAILED"}]},"parent":{"ref":"EIDf80b73fd-9147-441c-8c4e-6adf6ec61606"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:17:01Z","duration":9966,"status":"FAILED"},{"id":"EID6a3492e6-0175-1000-8405-0bb850dcf27a","testCaseResults":{"TestCaseResult":[{"id":"EID6a3492e6-0175-1000-49af-d669541a465e","testStepResults":{"TestStepResult":[{"id":"EID6a3492e6-0175-1000-a244-1814c73c6813","parent":{"ref":"EID6a3492e6-0175-1000-49af-d669541a465e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:17:11Z","duration":60,"status":"PASSED"},{"id":"EID6a349323-0175-1000-64d9-b7a36e6aff96","parent":{"ref":"EID6a3492e6-0175-1000-49af-d669541a465e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:17:11Z","duration":43,"status":"PASSED"},{"id":"EID6a349323-0175-1000-e124-99a8d67b4ad0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3493a5-0175-1000-f618-0a3a9245c18a","parent":{"ref":"EID6a349323-0175-1000-e124-99a8d67b4ad0"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3493a5-0175-1000-0d3b-3a2165e9b958","parent":{"ref":"EID6a349323-0175-1000-e124-99a8d67b4ad0"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3493a5-0175-1000-1740-a274090f13f8","parent":{"ref":"EID6a349323-0175-1000-e124-99a8d67b4ad0"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:17:11Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID688010aa-50ab-4f8c-8f28-f6c5e56505d4"},{"ref":"EID796dcf69-d2e8-41bf-b39f-f9a5203093a8"},{"ref":"EID4b443837-4b46-44fd-9df3-ee2778487979"}]},"parent":{"ref":"EID6a3492e6-0175-1000-49af-d669541a465e"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:17:11Z","duration":48,"status":"PASSED"},{"id":"EID6a3493a5-0175-1000-b6ee-2cfb7f224cc0","attachments":{"attachment":{"ref":"EID6c03c2a1-481f-4f37-9a87-f8df1c2f27bb"}},"parent":{"ref":"EID6a3492e6-0175-1000-49af-d669541a465e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:17:11Z","duration":0,"status":"PASSED"},{"id":"EID6a3493b0-0175-1000-9ab5-1cb755582dfc","parent":{"ref":"EID6a3492e6-0175-1000-49af-d669541a465e"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:17:11Z","duration":11,"status":"PASSED"}]},"parent":{"ref":"EID6a3492e6-0175-1000-8405-0bb850dcf27a"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:17:11Z","duration":213,"status":"PASSED"},{"id":"EID6a3493bc-0175-1000-d4c2-317ffd852578","testStepResults":{"TestStepResult":[{"id":"EID6a3493bc-0175-1000-ea8c-32a72058278f","parent":{"ref":"EID6a3493bc-0175-1000-d4c2-317ffd852578"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:17:11Z","duration":288,"status":"PASSED"},{"id":"EID6a3493bc-0175-1000-e021-3ff1125c6268","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3493f9-0175-1000-1c52-cd70d7083f50","parent":{"ref":"EID6a3493bc-0175-1000-e021-3ff1125c6268"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3493f9-0175-1000-69c2-55ffc9ae6655","parent":{"ref":"EID6a3493bc-0175-1000-e021-3ff1125c6268"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3493f9-0175-1000-191b-6967b0983887","parent":{"ref":"EID6a3493bc-0175-1000-e021-3ff1125c6268"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3493f9-0175-1000-895d-16814d248f8a","parent":{"ref":"EID6a3493bc-0175-1000-e021-3ff1125c6268"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3493f9-0175-1000-e5e7-9ed04fbc1566","parent":{"ref":"EID6a3493bc-0175-1000-e021-3ff1125c6268"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc7c945d6-a361-4a97-9899-fb4548a46f6b"},{"ref":"EID0ac31f31-1519-4576-b24e-2e2ba9f7abcf"},{"ref":"EID3a747eff-3c04-4260-bb75-910dd7245157"}]},"parent":{"ref":"EID6a3493bc-0175-1000-d4c2-317ffd852578"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:17:11Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6a3492e6-0175-1000-8405-0bb850dcf27a"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:17:11Z","duration":61,"status":"PASSED"},{"id":"EID6a3493f9-0175-1000-0fcb-3060bfb345b3","testStepResults":{"TestStepResult":[{"id":"EID6a3493fa-0175-1000-ace0-e3f8f0a4b191","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34945c-0175-1000-5e64-c0d5901a820b","parent":{"ref":"EID6a3493fa-0175-1000-ace0-e3f8f0a4b191"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a34945c-0175-1000-1192-dc8ea28900df","parent":{"ref":"EID6a3493fa-0175-1000-ace0-e3f8f0a4b191"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a34945c-0175-1000-0984-24d7c82435b9","parent":{"ref":"EID6a3493fa-0175-1000-ace0-e3f8f0a4b191"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID84bbd094-311f-40a7-bd65-d409452d1078"},{"ref":"EIDd93f9ba6-b153-4e4d-a544-ba756cd245a1"},{"ref":"EIDaf0a5497-eca6-4708-aa81-56cd154af569"}]},"parent":{"ref":"EID6a3493f9-0175-1000-0fcb-3060bfb345b3"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:17:12Z","duration":1,"status":"PASSED"},{"id":"EID6a349465-0175-1000-1aaa-ca2fedbdf662","attachments":{"attachment":{"ref":"EID9c3d2e79-c91f-4fab-b566-5521c816e09a"}},"parent":{"ref":"EID6a3493f9-0175-1000-0fcb-3060bfb345b3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-27T13:17:12Z","duration":1,"status":"PASSED"},{"id":"EID6a349475-0175-1000-79f0-edce8cf83277","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3494d7-0175-1000-e7e4-f23f4ab757a4","parent":{"ref":"EID6a349475-0175-1000-79f0-edce8cf83277"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3494d7-0175-1000-10b8-ed8d00337975","parent":{"ref":"EID6a349475-0175-1000-79f0-edce8cf83277"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3494d7-0175-1000-ec0a-0cf7432c0033","parent":{"ref":"EID6a349475-0175-1000-79f0-edce8cf83277"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3494d7-0175-1000-8df9-8d7d63eb147c","parent":{"ref":"EID6a349475-0175-1000-79f0-edce8cf83277"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3494d7-0175-1000-366c-11c3113c5960","parent":{"ref":"EID6a349475-0175-1000-79f0-edce8cf83277"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDff90d670-ea69-4d69-8116-14b61bf2c3ac"},{"ref":"EIDac7eb91f-5cc6-40bd-95d6-5e061e68afb6"},{"ref":"EIDaf441914-6fd6-4451-9b3f-85488c1a1747"}]},"parent":{"ref":"EID6a3493f9-0175-1000-0fcb-3060bfb345b3"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-27T13:17:12Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6a3492e6-0175-1000-8405-0bb850dcf27a"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:17:12Z","duration":222,"status":"PASSED"},{"id":"EID6a3494d8-0175-1000-c48a-e51b9ba0dd55","testStepResults":{"TestStepResult":[{"id":"EID6a3494d8-0175-1000-ce72-f4cb29220a43","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34953f-0175-1000-cda1-43a953b2d76a","parent":{"ref":"EID6a3494d8-0175-1000-ce72-f4cb29220a43"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a34953f-0175-1000-63bf-29d1acdc2401","parent":{"ref":"EID6a3494d8-0175-1000-ce72-f4cb29220a43"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a34953f-0175-1000-bf91-21179633ffae","parent":{"ref":"EID6a3494d8-0175-1000-ce72-f4cb29220a43"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a34953f-0175-1000-d771-003e36bb4e50","parent":{"ref":"EID6a3494d8-0175-1000-ce72-f4cb29220a43"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID05e9e7f9-dee5-470e-bacf-22213565d7d9"},{"ref":"EIDff27510b-a271-48f3-aea9-a2a98b02bf23"},{"ref":"EID0250cf47-f09a-4476-aa20-c44feab0698b"}]},"parent":{"ref":"EID6a3494d8-0175-1000-c48a-e51b9ba0dd55"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:17:12Z","duration":1,"status":"PASSED"},{"id":"EID6a34953f-0175-1000-5d2c-aa4ad9a7b6ba","attachments":{"attachment":{"ref":"EID1f09d4a9-9457-4c4d-8782-5fcc78580da9"}},"parent":{"ref":"EID6a3494d8-0175-1000-c48a-e51b9ba0dd55"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-27T13:17:12Z","duration":1,"status":"PASSED"},{"id":"EID6a34956f-0175-1000-f481-2c7853e5b83b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a349595-0175-1000-b6f1-5c8382072938","parent":{"ref":"EID6a34956f-0175-1000-f481-2c7853e5b83b"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a349595-0175-1000-2f08-12761b22d122","parent":{"ref":"EID6a34956f-0175-1000-f481-2c7853e5b83b"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID43764ca3-72f5-47f7-bddf-ae0b1b395e0b"},{"ref":"EID680398d8-8575-4f43-981a-dead3adc790f"}]},"parent":{"ref":"EID6a3494d8-0175-1000-c48a-e51b9ba0dd55"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-27T13:17:12Z","duration":33,"status":"PASSED"},{"id":"EID6a349595-0175-1000-6faf-6413e10a5a84","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3495da-0175-1000-6a16-a59572bb0e05","parent":{"ref":"EID6a349595-0175-1000-6faf-6413e10a5a84"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3495da-0175-1000-5abb-b2586624b58f","parent":{"ref":"EID6a349595-0175-1000-6faf-6413e10a5a84"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3495da-0175-1000-9a9c-f1ab42383f01","parent":{"ref":"EID6a349595-0175-1000-6faf-6413e10a5a84"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3495da-0175-1000-c558-fee56b3f4807","parent":{"ref":"EID6a349595-0175-1000-6faf-6413e10a5a84"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID731db45c-ae8d-4aa4-87fa-069d641987e0"},{"ref":"EID6075f206-649d-48f1-b274-35a161403542"},{"ref":"EID18bf2e5b-9b2b-4302-b6b5-6f64a7f392d9"}]},"parent":{"ref":"EID6a3494d8-0175-1000-c48a-e51b9ba0dd55"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-27T13:17:12Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6a3492e6-0175-1000-8405-0bb850dcf27a"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:17:12Z","duration":258,"status":"PASSED"},{"id":"EID6a3495da-0175-1000-0107-a15c2e973919","testStepResults":{"TestStepResult":{"id":"EID6a3495da-0175-1000-af13-2801cf390bb4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34962b-0175-1000-93ff-15abd143d839","parent":{"ref":"EID6a3495da-0175-1000-af13-2801cf390bb4"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a34962b-0175-1000-f08b-a655ecd7e225","parent":{"ref":"EID6a3495da-0175-1000-af13-2801cf390bb4"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a34962b-0175-1000-da47-e2d618449d78","parent":{"ref":"EID6a3495da-0175-1000-af13-2801cf390bb4"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3d325fed-c76c-42df-9bd1-e9eb61fa48b1"},{"ref":"EID11fed8c3-38d6-40ea-9718-1a55d1579931"},{"ref":"EID9a2dde07-074a-4532-ba5e-66c4af3203b1"}]},"parent":{"ref":"EID6a3495da-0175-1000-0107-a15c2e973919"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:17:12Z","duration":1,"status":"PASSED"}},"parent":{"ref":"EID6a3492e6-0175-1000-8405-0bb850dcf27a"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:17:12Z","duration":81,"status":"PASSED"},{"id":"EID6a34962b-0175-1000-3ced-07e1ea5b268b","testStepResults":{"TestStepResult":{"id":"EID6a34962b-0175-1000-b16d-c65aa88b6d9d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a349667-0175-1000-a326-a630758af9e4","parent":{"ref":"EID6a34962b-0175-1000-b16d-c65aa88b6d9d"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a349667-0175-1000-87df-6a5d76b533e4","parent":{"ref":"EID6a34962b-0175-1000-b16d-c65aa88b6d9d"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a349667-0175-1000-c871-0bcbc02dad5b","parent":{"ref":"EID6a34962b-0175-1000-b16d-c65aa88b6d9d"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc4804ab9-9a2b-4cc6-9104-e07fd6ebb8fb"},{"ref":"EIDd8eb6a18-72e1-4086-9736-9f6b90c90170"},{"ref":"EID7be98c4f-99e4-4f39-a26c-fcc19156cc2a"}]},"parent":{"ref":"EID6a34962b-0175-1000-3ced-07e1ea5b268b"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:17:12Z","duration":2,"status":"PASSED"}},"parent":{"ref":"EID6a3492e6-0175-1000-8405-0bb850dcf27a"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:17:12Z","duration":70,"status":"PASSED"},{"id":"EID6a349671-0175-1000-24b2-8a2c1eda6d01","testStepResults":{"TestStepResult":{"id":"EID6a349671-0175-1000-48ae-bcf29b7eeeee","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3496d2-0175-1000-caad-4c20ddaede65","parent":{"ref":"EID6a349671-0175-1000-48ae-bcf29b7eeeee"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3496d2-0175-1000-3244-578a6cda9c51","parent":{"ref":"EID6a349671-0175-1000-48ae-bcf29b7eeeee"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3496d2-0175-1000-00aa-e4aafc4efdbf","parent":{"ref":"EID6a349671-0175-1000-48ae-bcf29b7eeeee"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3496d2-0175-1000-5d3e-3e510c876011","parent":{"ref":"EID6a349671-0175-1000-48ae-bcf29b7eeeee"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a3496d2-0175-1000-8c3e-d6a658fdccc5","parent":{"ref":"EID6a349671-0175-1000-48ae-bcf29b7eeeee"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdd62011f-a806-4bf1-a3b7-68c43737b0ad"},{"ref":"EID52f84285-9557-486c-8de0-4f76df1dc733"},{"ref":"EID48589eb2-6efe-44b5-837c-ad1ae0cdd63e"}]},"parent":{"ref":"EID6a349671-0175-1000-24b2-8a2c1eda6d01"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:17:12Z","duration":1,"status":"PASSED"}},"parent":{"ref":"EID6a3492e6-0175-1000-8405-0bb850dcf27a"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:17:12Z","duration":97,"status":"PASSED"},{"id":"EID6a3496d2-0175-1000-c849-43587fab7cfc","testStepResults":{"TestStepResult":{"id":"EID6a3496d2-0175-1000-c5db-64f2d1fe2d33","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a349735-0175-1000-4467-05b09a386bc0","parent":{"ref":"EID6a3496d2-0175-1000-c5db-64f2d1fe2d33"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a349736-0175-1000-c4f5-094450def114","parent":{"ref":"EID6a3496d2-0175-1000-c5db-64f2d1fe2d33"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a349736-0175-1000-919d-f66583402ed2","parent":{"ref":"EID6a3496d2-0175-1000-c5db-64f2d1fe2d33"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc435f2e1-4be3-42cd-a30e-8cdecc907d64"},{"ref":"EIDdc06d523-2159-4065-8985-f6691a5b379c"},{"ref":"EID5ce955a4-da0b-4236-9c84-7c9e924e67d9"}]},"parent":{"ref":"EID6a3496d2-0175-1000-c849-43587fab7cfc"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:17:12Z","duration":1,"status":"PASSED"}},"parent":{"ref":"EID6a3492e6-0175-1000-8405-0bb850dcf27a"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:17:12Z","duration":100,"status":"PASSED"},{"id":"EID6a349736-0175-1000-6fe6-04372c412b3f","testStepResults":{"TestStepResult":{"id":"EID6a349736-0175-1000-de70-38ac8ff18091","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34978b-0175-1000-0bf2-5aa670948424","parent":{"ref":"EID6a349736-0175-1000-de70-38ac8ff18091"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a34978b-0175-1000-10e3-d15a0da63faa","parent":{"ref":"EID6a349736-0175-1000-de70-38ac8ff18091"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"},{"id":"EID6a34978b-0175-1000-defd-d43c45bd96c8","parent":{"ref":"EID6a349736-0175-1000-de70-38ac8ff18091"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:17:12Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0967264b-33a5-46cc-96f1-de73aad94e29"},{"ref":"EID9a74d857-86a5-43d0-abe0-0a164dc3642a"},{"ref":"EID1538fa2c-0586-4d46-9ffd-3f7e975a5a5e"}]},"parent":{"ref":"EID6a349736-0175-1000-6fe6-04372c412b3f"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:17:12Z","duration":1,"status":"PASSED"}},"parent":{"ref":"EID6a3492e6-0175-1000-8405-0bb850dcf27a"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:17:12Z","duration":85,"status":"PASSED"},{"id":"EID6a34978b-0175-1000-bd99-d9942441bdbd","testStepResults":{"TestStepResult":{"id":"EID6a34978b-0175-1000-038a-cf4c44569a0d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a349827-0175-1000-8f19-a8ca9dd2d441","parent":{"ref":"EID6a34978b-0175-1000-038a-cf4c44569a0d"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6a349827-0175-1000-01b1-fddcd17ada37","parent":{"ref":"EID6a34978b-0175-1000-038a-cf4c44569a0d"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6a349827-0175-1000-a850-29e8e147e3a4","parent":{"ref":"EID6a34978b-0175-1000-038a-cf4c44569a0d"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6a349827-0175-1000-b230-6008f811c6ab","parent":{"ref":"EID6a34978b-0175-1000-038a-cf4c44569a0d"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:17:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3080dbbf-1fed-4a4c-9e7d-3505a5d190ce"},{"ref":"EID2df09918-7216-4dc2-bfff-27c68d16c166"},{"ref":"EIDd3847936-f515-4748-9292-da0d6a8429b6"}]},"parent":{"ref":"EID6a34978b-0175-1000-bd99-d9942441bdbd"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:17:12Z","duration":1,"status":"PASSED"}},"parent":{"ref":"EID6a3492e6-0175-1000-8405-0bb850dcf27a"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:17:12Z","duration":156,"status":"PASSED"},{"id":"EID6a349827-0175-1000-4092-cfc6fa4120b5","testStepResults":{"TestStepResult":{"id":"EID6a349830-0175-1000-94aa-0f862a9697f8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a349892-0175-1000-0878-dce1f1efd446","parent":{"ref":"EID6a349830-0175-1000-94aa-0f862a9697f8"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6a349892-0175-1000-1d15-b0849ca5d21b","parent":{"ref":"EID6a349830-0175-1000-94aa-0f862a9697f8"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6a349892-0175-1000-7cd4-f24dbab7710c","parent":{"ref":"EID6a349830-0175-1000-94aa-0f862a9697f8"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6a349892-0175-1000-a72d-9bb9b86a26fe","parent":{"ref":"EID6a349830-0175-1000-94aa-0f862a9697f8"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:17:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID77441005-3697-4ca9-ab58-3b754e990964"},{"ref":"EID003e125d-55ae-4f78-b564-cd274aa5edb9"},{"ref":"EIDa8548ebb-4daa-4fc2-8396-757dd08a8628"}]},"parent":{"ref":"EID6a349827-0175-1000-4092-cfc6fa4120b5"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:17:13Z","duration":1,"status":"PASSED"}},"parent":{"ref":"EID6a3492e6-0175-1000-8405-0bb850dcf27a"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:17:13Z","duration":107,"status":"PASSED"},{"id":"EID6a349892-0175-1000-0344-19e95c2fa3ca","testStepResults":{"TestStepResult":[{"id":"EID6a349892-0175-1000-2701-15ba9d967d42","parent":{"ref":"EID6a349892-0175-1000-0344-19e95c2fa3ca"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6a349892-0175-1000-d166-bfd42574c1ae","parent":{"ref":"EID6a349892-0175-1000-0344-19e95c2fa3ca"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:17:13Z","duration":387,"status":"PASSED"},{"id":"EID6a349892-0175-1000-5491-278d9e331f3d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3499c8-0175-1000-382b-4f1f52a638fb","parent":{"ref":"EID6a349892-0175-1000-5491-278d9e331f3d"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3499c8-0175-1000-cb09-ec7b9d605646","parent":{"ref":"EID6a349892-0175-1000-5491-278d9e331f3d"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3499c8-0175-1000-eed9-65c28e48e7e7","parent":{"ref":"EID6a349892-0175-1000-5491-278d9e331f3d"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6a3499c8-0175-1000-4be2-692add90f62f","parent":{"ref":"EID6a349892-0175-1000-5491-278d9e331f3d"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:17:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID39fc98f3-0db4-4ffa-afa3-fc1266ba17c8"},{"ref":"EIDa99ba08b-fedf-4ddf-8a66-df06be6eff82"},{"ref":"EIDa68cdaf9-5b40-4c04-86d3-11b1003a9c91"}]},"parent":{"ref":"EID6a349892-0175-1000-0344-19e95c2fa3ca"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:17:13Z","duration":56,"status":"PASSED"},{"id":"EID6a3499c8-0175-1000-9107-d3d3f23d7dc6","attachments":{"attachment":{"ref":"EID4db475bb-20dc-4514-a883-ea35de627805"}},"parent":{"ref":"EID6a349892-0175-1000-0344-19e95c2fa3ca"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:17:13Z","duration":34,"status":"PASSED"},{"id":"EID6a3499f6-0175-1000-483a-3feac2e39d12","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a349a6b-0175-1000-4e96-d9f5f4594a67","parent":{"ref":"EID6a3499f6-0175-1000-483a-3feac2e39d12"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6a349a6b-0175-1000-d06d-d64eeb69ab50","parent":{"ref":"EID6a3499f6-0175-1000-483a-3feac2e39d12"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6a349a6b-0175-1000-206b-5b0ff2b21fbd","parent":{"ref":"EID6a3499f6-0175-1000-483a-3feac2e39d12"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6a349a6b-0175-1000-b84e-bfff9e9737d6","parent":{"ref":"EID6a3499f6-0175-1000-483a-3feac2e39d12"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6a349a6b-0175-1000-f73e-f53fb19429c1","parent":{"ref":"EID6a3499f6-0175-1000-483a-3feac2e39d12"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6a349a6b-0175-1000-d6f7-82cd570784a2","parent":{"ref":"EID6a3499f6-0175-1000-483a-3feac2e39d12"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6a349a6b-0175-1000-c6a4-360e0b22e097","parent":{"ref":"EID6a3499f6-0175-1000-483a-3feac2e39d12"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:17:13Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID149ecb27-7d27-45c9-b54f-36e1aaee6f7f"},{"ref":"EID07649cbb-6e60-4d40-a28f-6a91a219aa89"},{"ref":"EID43038f3d-6bc6-46e9-b092-bda726b2dd83"}]},"parent":{"ref":"EID6a349892-0175-1000-0344-19e95c2fa3ca"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:17:13Z","duration":2,"status":"PASSED"}]},"parent":{"ref":"EID6a3492e6-0175-1000-8405-0bb850dcf27a"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:17:13Z","duration":473,"status":"PASSED"},{"id":"EID6a349a6c-0175-1000-d90f-08053275b785","testStepResults":{"TestStepResult":[{"id":"EID6a349a6c-0175-1000-f49d-5de2ad1478ef","parent":{"ref":"EID6a349a6c-0175-1000-d90f-08053275b785"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:17:13Z","duration":0,"status":"PASSED"},{"id":"EID6a349a6c-0175-1000-c4c1-4f078b81db2a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a349bd7-0175-1000-3917-66bb0e0976ad","parent":{"ref":"EID6a349a6c-0175-1000-c4c1-4f078b81db2a"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6a349bd7-0175-1000-84f8-351b53d66c56","parent":{"ref":"EID6a349a6c-0175-1000-c4c1-4f078b81db2a"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6a349bd7-0175-1000-ef82-4218a7f845cc","parent":{"ref":"EID6a349a6c-0175-1000-c4c1-4f078b81db2a"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6a349bd7-0175-1000-1eb8-667be3c2f771","parent":{"ref":"EID6a349a6c-0175-1000-c4c1-4f078b81db2a"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1183d1a2-54cb-40bf-9e54-0f5fcaf3a19b"},{"ref":"EID3c227425-0314-404d-8e83-d90e2cf594f4"},{"ref":"EID040331d5-7273-4502-bbca-e32c4088e771"}]},"parent":{"ref":"EID6a349a6c-0175-1000-d90f-08053275b785"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:17:13Z","duration":149,"status":"PASSED"},{"id":"EID6a349be0-0175-1000-12da-823b0a3efd7f","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a349bf1-0175-1000-6ddb-68c4d92fa6b8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a349c6f-0175-1000-2a84-37d054e977d3","parent":{"ref":"EID6a349bf1-0175-1000-6ddb-68c4d92fa6b8"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6a349c6f-0175-1000-02d2-1c38c8a0d865","parent":{"ref":"EID6a349bf1-0175-1000-6ddb-68c4d92fa6b8"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6a349c6f-0175-1000-0bdf-52ec0d7c40ec","parent":{"ref":"EID6a349bf1-0175-1000-6ddb-68c4d92fa6b8"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8cddb2ca-9ebd-43ce-aa52-487712b96b47"},{"ref":"EIDd8e45875-7c30-4a66-9d6e-47452a4e0b1f"},{"ref":"EID5342714f-8df7-4548-8e5b-a46710ad80c6"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:17:14Z","duration":39,"status":"PASSED"},{"id":"EID6a349c71-0175-1000-e977-eeedf884cf16","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a349cf7-0175-1000-6a19-0058c9962636","parent":{"ref":"EID6a349c71-0175-1000-e977-eeedf884cf16"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6a349cf7-0175-1000-8a16-07a2197e51e7","parent":{"ref":"EID6a349c71-0175-1000-e977-eeedf884cf16"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6a349cf7-0175-1000-8acf-43623e57d393","parent":{"ref":"EID6a349c71-0175-1000-e977-eeedf884cf16"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4d896288-e564-4ff8-9eee-b119c4a15319"},{"ref":"EID056a90ab-fa4d-4633-8d0d-f36a12c6a734"},{"ref":"EID9564335f-57a3-450e-ae86-898e043b2b0b"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:17:14Z","duration":39,"status":"PASSED"},{"id":"EID6a349cf8-0175-1000-bf2e-faedcb72ab63","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a349d56-0175-1000-7be6-9424e5f83980","parent":{"ref":"EID6a349cf8-0175-1000-bf2e-faedcb72ab63"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6a349d56-0175-1000-bda3-bc4c2c715f97","parent":{"ref":"EID6a349cf8-0175-1000-bf2e-faedcb72ab63"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6a349d56-0175-1000-8c69-e32a73e6280c","parent":{"ref":"EID6a349cf8-0175-1000-bf2e-faedcb72ab63"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDada69f5a-1389-4035-8a06-f1b24a36e4aa"},{"ref":"EIDa93b34d8-000a-4461-a716-efad6be80973"},{"ref":"EID77f7046e-47b7-4c84-b1b3-b0607d48efb2"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:17:14Z","duration":41,"status":"PASSED"}]},"parent":{"ref":"EID6a349a6c-0175-1000-d90f-08053275b785"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:17:14Z","duration":374,"status":"PASSED"},{"id":"EID6a349d57-0175-1000-7533-ccb592a48a44","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a349da4-0175-1000-d107-e28eea6bb199","parent":{"ref":"EID6a349d57-0175-1000-7533-ccb592a48a44"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6a349da5-0175-1000-2864-0e3641bcfe03","parent":{"ref":"EID6a349d57-0175-1000-7533-ccb592a48a44"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6a349da5-0175-1000-c8b7-636510edf62d","parent":{"ref":"EID6a349d57-0175-1000-7533-ccb592a48a44"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6a349da5-0175-1000-6c14-f31d0da65d8e","parent":{"ref":"EID6a349d57-0175-1000-7533-ccb592a48a44"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7b906bcc-7d92-434d-92c1-c51523696543"},{"ref":"EID3379611f-153b-40a5-94a2-e333fa328c7f"},{"ref":"EIDeb84f8bc-3879-4366-9cd9-356add926f69"}]},"parent":{"ref":"EID6a349a6c-0175-1000-d90f-08053275b785"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:17:14Z","duration":1,"status":"PASSED"}]},"parent":{"ref":"EID6a3492e6-0175-1000-8405-0bb850dcf27a"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:17:13Z","duration":825,"status":"PASSED"},{"id":"EID6a349da5-0175-1000-840e-ece4ccea7979","testStepResults":{"TestStepResult":{"id":"EID6a349da5-0175-1000-0b6f-c357199febf3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a349dec-0175-1000-b603-ad419a93d7ff","parent":{"ref":"EID6a349da5-0175-1000-0b6f-c357199febf3"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6a349dec-0175-1000-d495-f1eb1fc68f37","parent":{"ref":"EID6a349da5-0175-1000-0b6f-c357199febf3"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6a349dec-0175-1000-b6fb-a62f57fa0ef4","parent":{"ref":"EID6a349da5-0175-1000-0b6f-c357199febf3"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6a349dec-0175-1000-a1ea-a9946a22a356","parent":{"ref":"EID6a349da5-0175-1000-0b6f-c357199febf3"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf5cab5e2-d839-4516-8ceb-13bb5e83bbcd"},{"ref":"EIDc765b86e-a753-4a8c-8a27-c16e6528ce90"},{"ref":"EID37049221-ef6d-4cd2-8630-12b4ee051cc8"}]},"parent":{"ref":"EID6a349da5-0175-1000-840e-ece4ccea7979"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:17:14Z","duration":1,"status":"PASSED"}},"parent":{"ref":"EID6a3492e6-0175-1000-8405-0bb850dcf27a"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:17:14Z","duration":71,"status":"PASSED"}]},"parent":{"ref":"EIDf80b73fd-9147-441c-8c4e-6adf6ec61606"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:17:11Z","duration":2823,"status":"PASSED"},{"id":"EID6a349ded-0175-1000-faf6-1d91e77430de","testCaseResults":{"TestCaseResult":[{"id":"EID6a349ded-0175-1000-3890-0e909e917987","testStepResults":{"TestStepResult":[{"id":"EID6a349ded-0175-1000-f6fd-e5777ade4078","parent":{"ref":"EID6a349ded-0175-1000-3890-0e909e917987"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:17:14Z","duration":430,"status":"PASSED"},{"id":"EID6a349ded-0175-1000-6696-49b96b3107c3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a349e9d-0175-1000-9063-af46221f55d8","parent":{"ref":"EID6a349ded-0175-1000-6696-49b96b3107c3"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6a349e9d-0175-1000-aca7-b0d176588c88","parent":{"ref":"EID6a349ded-0175-1000-6696-49b96b3107c3"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"},{"id":"EID6a349e9d-0175-1000-9d6d-de38280a71d3","parent":{"ref":"EID6a349ded-0175-1000-6696-49b96b3107c3"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDeb36445b-0c41-4258-b8bf-fb2f44c238ff"},{"ref":"EID455a768f-70a2-4fe1-b931-e06707ae866d"},{"ref":"EID2bdcc153-52cb-45cb-9462-8e65b178452b"}]},"parent":{"ref":"EID6a349ded-0175-1000-3890-0e909e917987"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-27T13:17:14Z","duration":95,"status":"PASSED"},{"id":"EID6a349e9e-0175-1000-5fde-a020d4912ada","attachments":{"attachment":{"ref":"EID258370d0-7d13-4350-abd5-9e4f5431bb4e"}},"parent":{"ref":"EID6a349ded-0175-1000-3890-0e909e917987"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-27T13:17:14Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a349ded-0175-1000-faf6-1d91e77430de"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:17:14Z","duration":255,"status":"PASSED"},{"id":"EID6a349eec-0175-1000-c80e-8d077ceea3a0","testStepResults":{"TestStepResult":[{"id":"EID6a349eec-0175-1000-7626-d943ccadc28a","parent":{"ref":"EID6a349eec-0175-1000-c80e-8d077ceea3a0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:17:14Z","duration":430,"status":"PASSED"},{"id":"EID6a349eec-0175-1000-cf07-bae4fc5164ba","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a349fca-0175-1000-1355-7b407e5188ba","parent":{"ref":"EID6a349eec-0175-1000-cf07-bae4fc5164ba"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-27T13:17:15Z","duration":0,"status":"PASSED"},{"id":"EID6a349fca-0175-1000-6bf0-d3adfd984f0b","parent":{"ref":"EID6a349eec-0175-1000-cf07-bae4fc5164ba"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-27T13:17:15Z","duration":0,"status":"PASSED"},{"id":"EID6a349fca-0175-1000-bc3f-e7d67629249f","parent":{"ref":"EID6a349eec-0175-1000-cf07-bae4fc5164ba"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-27T13:17:15Z","duration":0,"status":"PASSED"},{"id":"EID6a349fca-0175-1000-3c10-075ff4159146","parent":{"ref":"EID6a349eec-0175-1000-cf07-bae4fc5164ba"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-27T13:17:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6b4836ba-e002-4379-94e3-fc0989b55ac5"},{"ref":"EID7a93e7b9-d773-445b-8797-a0649e36e033"},{"ref":"EID71d3b06a-0572-46a0-922e-8398c9147c8e"}]},"parent":{"ref":"EID6a349eec-0175-1000-c80e-8d077ceea3a0"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-27T13:17:14Z","duration":145,"status":"PASSED"}]},"parent":{"ref":"EID6a349ded-0175-1000-faf6-1d91e77430de"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:17:14Z","duration":222,"status":"PASSED"},{"id":"EID6a349fca-0175-1000-b0cb-2a19c5125488","testStepResults":{"TestStepResult":[{"id":"EID6a349fca-0175-1000-d22d-24ca2c3cc594","parent":{"ref":"EID6a349fca-0175-1000-b0cb-2a19c5125488"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:17:15Z","duration":430,"status":"PASSED"},{"id":"EID6a349fca-0175-1000-0b72-b24578aa5f1f","parent":{"ref":"EID6a349fca-0175-1000-b0cb-2a19c5125488"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-27T13:17:15Z","duration":0,"status":"PASSED"},{"id":"EID6a349fcb-0175-1000-67aa-eb8317fc0e72","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a34a0e8-0175-1000-ad5e-7ac88c7bd4ef","parent":{"ref":"EID6a349fcb-0175-1000-67aa-eb8317fc0e72"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-27T13:17:15Z","duration":0,"status":"PASSED"},{"id":"EID6a34a0e8-0175-1000-868f-091d658f9dd8","parent":{"ref":"EID6a349fcb-0175-1000-67aa-eb8317fc0e72"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-27T13:17:15Z","duration":0,"status":"PASSED"},{"id":"EID6a34a0e8-0175-1000-cf0d-eaa487886626","parent":{"ref":"EID6a349fcb-0175-1000-67aa-eb8317fc0e72"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-27T13:17:15Z","duration":0,"status":"PASSED"},{"id":"EID6a34a0e8-0175-1000-fbf0-359af8e40a9e","parent":{"ref":"EID6a349fcb-0175-1000-67aa-eb8317fc0e72"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-27T13:17:15Z","duration":0,"status":"PASSED"},{"id":"EID6a34a0e8-0175-1000-f81e-08f9f273d09b","parent":{"ref":"EID6a349fcb-0175-1000-67aa-eb8317fc0e72"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-27T13:17:15Z","duration":0,"status":"PASSED"},{"id":"EID6a34a0e8-0175-1000-9dc5-231f21fe181b","parent":{"ref":"EID6a349fcb-0175-1000-67aa-eb8317fc0e72"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-27T13:17:15Z","duration":0,"status":"PASSED"},{"id":"EID6a34a0e8-0175-1000-aa06-d5dde3612a11","parent":{"ref":"EID6a349fcb-0175-1000-67aa-eb8317fc0e72"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-27T13:17:15Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4d651bab-f525-421b-b1bb-60a870d85029"},{"ref":"EID7fa60655-0199-424e-957c-c6dc583c3c9e"},{"ref":"EIDdf636507-dd57-4f77-a4f9-dc679f24345f"}]},"parent":{"ref":"EID6a349fca-0175-1000-b0cb-2a19c5125488"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-27T13:17:15Z","duration":92,"status":"PASSED"},{"id":"EID6a34a0e8-0175-1000-1786-34e74924d40f","invokedTests":{"":null,"TestStepResult":{"id":"EID6a34a109-0175-1000-b1e1-5563e06d259e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a351f1c-0175-1000-4b5b-fa8a6e9cff05","parent":{"ref":"EID6a34a109-0175-1000-b1e1-5563e06d259e"},"resultedFrom":{"ref":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2"},"startTimestamp":"2020-10-27T13:17:47Z","duration":0,"status":"PASSED"},{"id":"EID6a351f1c-0175-1000-44c3-bf530e4cc545","parent":{"ref":"EID6a34a109-0175-1000-b1e1-5563e06d259e"},"resultedFrom":{"ref":"EID4c8b189c-31ec-4098-8f45-6952a58780c6"},"startTimestamp":"2020-10-27T13:17:47Z","duration":0,"status":"PASSED"},{"id":"EID6a351f1c-0175-1000-9ebd-beb3459eaa43","messages":{"message":{"ref":"TR.unexpectedContentType","translationArguments":{"argument":[{"token":"actual","$":"application/octet-stream"},{"token":"expected","$":"application/zip"}]}}},"parent":{"ref":"EID6a34a109-0175-1000-b1e1-5563e06d259e"},"resultedFrom":{"ref":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3"},"startTimestamp":"2020-10-27T13:17:47Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID40d8b033-6c71-45c0-8511-92e15bf6a5e9"},{"ref":"EID1e1dc4f6-6e8d-437b-9bb8-d5ecec7aba08"},{"ref":"EID499f7505-775b-49f3-8cf1-6cf877ba5dc7"}]},"resultedFrom":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"startTimestamp":"2020-10-27T13:17:15Z","duration":24381,"status":"FAILED"}},"attachments":{"attachment":[{"ref":"EIDdc0d35a8-84d5-4228-b8b5-33d8f5dc7fc5"},{"ref":"EIDf8cdf8f2-50a6-498e-b5b5-75611aabfd0a"}]},"parent":{"ref":"EID6a349fca-0175-1000-b0cb-2a19c5125488"},"resultedFrom":{"ref":"EIDb0803022-623e-456c-aa2e-bc968ee33150"},"startTimestamp":"2020-10-27T13:17:15Z","duration":34670,"status":"FAILED"}]},"parent":{"ref":"EID6a349ded-0175-1000-faf6-1d91e77430de"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:17:15Z","duration":35031,"status":"FAILED"},{"id":"EID6a3528a1-0175-1000-cb14-dc6fc5e40abd","testStepResults":{"TestStepResult":[{"id":"EID6a3528a1-0175-1000-61bf-317a1df52ec2","parent":{"ref":"EID6a3528a1-0175-1000-cb14-dc6fc5e40abd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:17:50Z","duration":430,"status":"PASSED"},{"id":"EID6a3528a1-0175-1000-c5a1-522bcb7b5c05","parent":{"ref":"EID6a3528a1-0175-1000-cb14-dc6fc5e40abd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-27T13:17:50Z","duration":17,"status":"PASSED"},{"id":"EID6a3528b2-0175-1000-90cd-641cdf54716c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3529ef-0175-1000-dcdc-577f9c23cf8a","parent":{"ref":"EID6a3528b2-0175-1000-90cd-641cdf54716c"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-27T13:17:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3529ef-0175-1000-c9d9-e18bf1a936d7","parent":{"ref":"EID6a3528b2-0175-1000-90cd-641cdf54716c"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-27T13:17:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3529ef-0175-1000-c1a2-2d9ebaec4268","parent":{"ref":"EID6a3528b2-0175-1000-90cd-641cdf54716c"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-27T13:17:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3529ef-0175-1000-e1e6-e3e5f518ca43","parent":{"ref":"EID6a3528b2-0175-1000-90cd-641cdf54716c"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-27T13:17:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3529ef-0175-1000-600d-7593f05690bc","parent":{"ref":"EID6a3528b2-0175-1000-90cd-641cdf54716c"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-27T13:17:50Z","duration":0,"status":"PASSED"},{"id":"EID6a3529ef-0175-1000-1cc2-71e851011089","parent":{"ref":"EID6a3528b2-0175-1000-90cd-641cdf54716c"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-27T13:17:50Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDafbfae68-73dc-4e76-8972-2db1454264ef"},{"ref":"EID9beeeeab-757d-4ef4-a598-7d1a54b373b5"},{"ref":"EID6ec89377-f342-4be4-b4cf-016dad97a5fc"}]},"parent":{"ref":"EID6a3528a1-0175-1000-cb14-dc6fc5e40abd"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-27T13:17:50Z","duration":142,"status":"PASSED"},{"id":"EID6a3529ef-0175-1000-ef05-cc98fff39d66","parent":{"ref":"EID6a3528a1-0175-1000-cb14-dc6fc5e40abd"},"resultedFrom":{"ref":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b"},"startTimestamp":"2020-10-27T13:17:50Z","duration":72,"status":"PASSED"},{"id":"EID6a352a38-0175-1000-d01f-c55c82c55f82","parent":{"ref":"EID6a3528a1-0175-1000-cb14-dc6fc5e40abd"},"resultedFrom":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"startTimestamp":"2020-10-27T13:17:50Z","duration":0,"status":"UNDEFINED"}]},"parent":{"ref":"EID6a349ded-0175-1000-faf6-1d91e77430de"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:17:50Z","duration":407,"status":"UNDEFINED"},{"id":"EID6a352a41-0175-1000-cf2b-59a81051920f","testStepResults":{"TestStepResult":[{"id":"EID6a352a41-0175-1000-2d3c-24d4de86e7a8","parent":{"ref":"EID6a352a41-0175-1000-cf2b-59a81051920f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:17:50Z","duration":430,"status":"PASSED"},{"id":"EID6a352a41-0175-1000-e375-2051d83f9b6d","messages":{"message":{"ref":"TR.unexpectedContentType","translationArguments":{"argument":[{"token":"actual","$":"application/octet-stream"},{"token":"expected","$":"application/zip"}]}}},"attachments":{"attachment":[{"ref":"EIDd50d1236-e62c-420d-8cc5-d78da194dab0"},{"ref":"EID75931d30-cc3c-4212-80d1-24aac641e13e"},{"ref":"EID09811af2-0ffc-44af-a977-4bb348b2c392"},{"ref":"EID51b6b5a9-906c-4b9b-a026-2944e3e24b9f"},{"ref":"EID80f5a372-0b79-4783-8874-e53e587744db"},{"ref":"EID6a006003-22cc-47a4-a9f7-05c459f95b0c"},{"ref":"EID3ace16ff-071d-46c5-9909-36bfd5110a9d"},{"ref":"EID6038b564-f23f-45a3-a141-71b4daa03f71"},{"ref":"EID7a6ce873-742d-4c0d-815c-884904c7aad7"},{"ref":"EIDfb71b202-5663-4ff4-b0e0-c02b780a5394"},{"ref":"EID11c48028-fe35-4590-a077-b67cdff095d3"},{"ref":"EIDf055ccbc-6241-45e1-ac0b-acac4f8230fe"},{"ref":"EIDa2e47e59-b904-4b62-8c89-69eb35c3ac0d"},{"ref":"EID42225b9e-db0b-4a68-adb8-b8a35b99ba8b"},{"ref":"EID838ee122-d2cf-480f-991b-06e8ac960364"},{"ref":"EID5b451246-7ff2-4aed-92bc-76ac865a7b4a"},{"ref":"EID68f21064-e057-4d48-aa76-e9502636ea46"},{"ref":"EID7efc041d-291d-4f69-80e1-d35c48aec0ec"},{"ref":"EIDfe4af3f0-74dc-4aae-ac21-f781d70ec9f3"}]},"parent":{"ref":"EID6a352a41-0175-1000-cf2b-59a81051920f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-27T13:17:50Z","duration":30030,"status":"SKIPPED"}]},"parent":{"ref":"EID6a349ded-0175-1000-faf6-1d91e77430de"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:17:50Z","duration":30631,"status":"SKIPPED"},{"id":"EID6a35a1e8-0175-1000-e88b-24952ec793fe","testStepResults":{"TestStepResult":[{"id":"EID6a35a1e8-0175-1000-fce1-2ccfbadaa5c5","parent":{"ref":"EID6a35a1e8-0175-1000-e88b-24952ec793fe"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:18:21Z","duration":430,"status":"PASSED"},{"id":"EID6a35a1e8-0175-1000-de31-82cd3680842d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35a36b-0175-1000-40f2-ed57210addb1","parent":{"ref":"EID6a35a1e8-0175-1000-de31-82cd3680842d"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-27T13:18:21Z","duration":0,"status":"PASSED"},{"id":"EID6a35a36b-0175-1000-9ad5-1310662384ef","parent":{"ref":"EID6a35a1e8-0175-1000-de31-82cd3680842d"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-27T13:18:21Z","duration":0,"status":"PASSED"},{"id":"EID6a35a36b-0175-1000-41ad-4cb03b51f923","parent":{"ref":"EID6a35a1e8-0175-1000-de31-82cd3680842d"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-27T13:18:21Z","duration":0,"status":"PASSED"},{"id":"EID6a35a36b-0175-1000-fdbb-6cff99912ab0","parent":{"ref":"EID6a35a1e8-0175-1000-de31-82cd3680842d"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-27T13:18:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd63286d8-005e-444b-939f-b39c5d48f144"},{"ref":"EIDe47588a7-84a1-4f12-a770-f94cc9097212"},{"ref":"EID0469eb5a-1ef9-48eb-817c-b29776b5d192"}]},"parent":{"ref":"EID6a35a1e8-0175-1000-e88b-24952ec793fe"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-27T13:18:21Z","duration":130,"status":"PASSED"}]},"parent":{"ref":"EID6a349ded-0175-1000-faf6-1d91e77430de"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:18:21Z","duration":388,"status":"PASSED"},{"id":"EID6a35a36c-0175-1000-c27b-6206d6468ca9","testStepResults":{"TestStepResult":[{"id":"EID6a35a36c-0175-1000-1298-5247d9837272","parent":{"ref":"EID6a35a36c-0175-1000-c27b-6206d6468ca9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:18:21Z","duration":430,"status":"PASSED"},{"id":"EID6a35a36c-0175-1000-e953-ca027f18f0f2","parent":{"ref":"EID6a35a36c-0175-1000-c27b-6206d6468ca9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-27T13:18:21Z","duration":0,"status":"PASSED"},{"id":"EID6a35a36c-0175-1000-1207-ffcf68870cf0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35a41c-0175-1000-3b8f-fd1510427c90","parent":{"ref":"EID6a35a36c-0175-1000-1207-ffcf68870cf0"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-27T13:18:21Z","duration":0,"status":"PASSED"},{"id":"EID6a35a41c-0175-1000-eec0-de28c89bb806","parent":{"ref":"EID6a35a36c-0175-1000-1207-ffcf68870cf0"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-27T13:18:21Z","duration":0,"status":"PASSED"},{"id":"EID6a35a41c-0175-1000-33b2-3714194815fe","parent":{"ref":"EID6a35a36c-0175-1000-1207-ffcf68870cf0"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-27T13:18:21Z","duration":0,"status":"PASSED"},{"id":"EID6a35a41c-0175-1000-664b-455175364a4f","parent":{"ref":"EID6a35a36c-0175-1000-1207-ffcf68870cf0"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-27T13:18:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0bc3fee9-7f8c-40d0-b2ac-48ffd2058802"},{"ref":"EIDa43d6a68-7796-4f93-ab16-4e52f1e76111"},{"ref":"EID123dfbed-0171-4e68-afab-f47234e9da13"}]},"parent":{"ref":"EID6a35a36c-0175-1000-c27b-6206d6468ca9"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-27T13:18:21Z","duration":94,"status":"PASSED"},{"id":"EID6a35a41c-0175-1000-3de9-c408eb8561e5","attachments":{"attachment":{"ref":"EID7504a4fe-4d6c-4ea4-807b-87e1a66c79fd"}},"parent":{"ref":"EID6a35a36c-0175-1000-c27b-6206d6468ca9"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-27T13:18:21Z","duration":1,"status":"PASSED"},{"id":"EID6a35a427-0175-1000-9dc5-47953be5550f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a35a43f-0175-1000-55ce-c6476986119a","parent":{"ref":"EID6a35a427-0175-1000-9dc5-47953be5550f"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-27T13:18:21Z","duration":0,"status":"PASSED"},{"id":"EID6a35a43f-0175-1000-8123-b7d106838053","parent":{"ref":"EID6a35a427-0175-1000-9dc5-47953be5550f"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-27T13:18:21Z","duration":0,"status":"PASSED"},{"id":"EID6a35a43f-0175-1000-85cb-c9becac715eb","parent":{"ref":"EID6a35a427-0175-1000-9dc5-47953be5550f"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-27T13:18:21Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4fa4deb7-0b9b-43c1-b709-2357db6cdf35"},{"ref":"EIDf36a44fc-e12c-4798-8c3b-5f7316bb7774"}]},"parent":{"ref":"EID6a35a36c-0175-1000-c27b-6206d6468ca9"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-27T13:18:21Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a349ded-0175-1000-faf6-1d91e77430de"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:18:21Z","duration":211,"status":"PASSED"}]},"parent":{"ref":"EIDf80b73fd-9147-441c-8c4e-6adf6ec61606"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:17:14Z","duration":67154,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"ServiceEndpoint","id":"EID84bbd094-311f-40a7-bd65-d409452d1078","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"GetParameter","id":"EID3267c961-ad7f-46ab-a563-b2ff7d633baa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EID09811af2-0ffc-44af-a977-4bb348b2c392","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID09811af2-0ffc-44af-a977-4bb348b2c392"}},{"type":"ServiceEndpoint","id":"EID1ab03d00-ab70-44dd-adc2-c8ca44d55a56","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDc2961652-7d2f-4425-9682-b612482bcf6c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID731db45c-ae8d-4aa4-87fa-069d641987e0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"Message","id":"EID68f21064-e057-4d48-aa76-e9502636ea46","label":"Message.18","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID68f21064-e057-4d48-aa76-e9502636ea46"}},{"type":"Message","id":"EID3bf6a37c-7008-4fa0-b409-ca2722962bd3","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID3bf6a37c-7008-4fa0-b409-ca2722962bd3"}},{"type":"Message","id":"EID352331f3-d5fc-4d6d-aa54-b86170759fb3","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID352331f3-d5fc-4d6d-aa54-b86170759fb3"}},{"type":"ServiceEndpoint","id":"EID6b4836ba-e002-4379-94e3-fc0989b55ac5","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID06ca9043-23c3-4e96-9315-d9ee2d50f673","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDaa0258f3-cc73-4b06-9366-355ef5158c0c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EID5b254ce0-3c4e-42c6-96eb-ac76cc841904","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID5b254ce0-3c4e-42c6-96eb-ac76cc841904"}},{"type":"GetParameter","id":"EID62decfac-a85c-4c90-ae2c-f696ed6242dc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDa93b34d8-000a-4461-a716-efad6be80973","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDa93b34d8-000a-4461-a716-efad6be80973"}},{"type":"ServiceResponse","id":"EIDd2d3aa38-b434-4235-988d-095db0d39a8c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDd2d3aa38-b434-4235-988d-095db0d39a8c"}},{"type":"GetParameter","id":"EID77f7046e-47b7-4c84-b1b3-b0607d48efb2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EID07649cbb-6e60-4d40-a28f-6a91a219aa89","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID07649cbb-6e60-4d40-a28f-6a91a219aa89"}},{"type":"ServiceEndpoint","id":"EID30887bb0-2424-43f6-8d8c-47756ea0f295","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EID7db3bdff-c5e3-4650-ac68-45504a68f9ce","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EID5b451246-7ff2-4aed-92bc-76ac865a7b4a","label":"Message.16","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID5b451246-7ff2-4aed-92bc-76ac865a7b4a"}},{"type":"Message","id":"EID258370d0-7d13-4350-abd5-9e4f5431bb4e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID258370d0-7d13-4350-abd5-9e4f5431bb4e"}},{"type":"ServiceResponse","id":"EID056a90ab-fa4d-4633-8d0d-f36a12c6a734","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID056a90ab-fa4d-4633-8d0d-f36a12c6a734"}},{"type":"ServiceResponse","id":"EID9a74d857-86a5-43d0-abe0-0a164dc3642a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID9a74d857-86a5-43d0-abe0-0a164dc3642a"}},{"type":"ServiceResponse","id":"EID11fed8c3-38d6-40ea-9718-1a55d1579931","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID11fed8c3-38d6-40ea-9718-1a55d1579931"}},{"type":"ServiceResponse","id":"EIDdcdebf73-081e-4f7d-9c2c-3d0e254ffb75","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDdcdebf73-081e-4f7d-9c2c-3d0e254ffb75"}},{"type":"ServiceResponse","id":"EIDdc3ae4fd-0186-4590-a370-10f9f3252381","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDdc3ae4fd-0186-4590-a370-10f9f3252381"}},{"type":"ServiceEndpoint","id":"EID0967264b-33a5-46cc-96f1-de73aad94e29","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"GetParameter","id":"EID37049221-ef6d-4cd2-8630-12b4ee051cc8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"Message","id":"EID80f5a372-0b79-4783-8874-e53e587744db","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID80f5a372-0b79-4783-8874-e53e587744db"}},{"type":"Message","id":"EID4f0cade2-5be5-4b77-ad3d-e7180a1dfa1f","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID4f0cade2-5be5-4b77-ad3d-e7180a1dfa1f"}},{"type":"ServiceEndpoint","id":"EIDc7c945d6-a361-4a97-9899-fb4548a46f6b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceEndpoint","id":"EIDff90d670-ea69-4d69-8116-14b61bf2c3ac","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceResponse","id":"EID5e26287a-8205-495b-a1d4-e696c2c73e7c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID5e26287a-8205-495b-a1d4-e696c2c73e7c"}},{"type":"ServiceEndpoint","id":"EID39fc98f3-0db4-4ffa-afa3-fc1266ba17c8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EIDfe4af3f0-74dc-4aae-ac21-f781d70ec9f3","label":"Message.20","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDfe4af3f0-74dc-4aae-ac21-f781d70ec9f3"}},{"type":"GetParameter","id":"EID71d3b06a-0572-46a0-922e-8398c9147c8e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID9564335f-57a3-450e-ae86-898e043b2b0b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"ServiceEndpoint","id":"EID034c2069-6dff-4bfa-927c-39b164af784c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EID6038b564-f23f-45a3-a141-71b4daa03f71","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID6038b564-f23f-45a3-a141-71b4daa03f71"}},{"type":"Message","id":"EID838ee122-d2cf-480f-991b-06e8ac960364","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID838ee122-d2cf-480f-991b-06e8ac960364"}},{"type":"GetParameter","id":"EID040331d5-7273-4502-bbca-e32c4088e771","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EID3ace16ff-071d-46c5-9909-36bfd5110a9d","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID3ace16ff-071d-46c5-9909-36bfd5110a9d"}},{"type":"Message","id":"EID908baf4a-34cc-4bba-af2b-04c8fe3e45b5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID908baf4a-34cc-4bba-af2b-04c8fe3e45b5"}},{"type":"GetParameter","id":"EID4b443837-4b46-44fd-9df3-ee2778487979","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDa99ba08b-fedf-4ddf-8a66-df06be6eff82","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDa99ba08b-fedf-4ddf-8a66-df06be6eff82"}},{"type":"ServiceResponse","id":"EID0ac31f31-1519-4576-b24e-2e2ba9f7abcf","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID0ac31f31-1519-4576-b24e-2e2ba9f7abcf"}},{"type":"GetParameter","id":"EID123dfbed-0171-4e68-afab-f47234e9da13","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID4db475bb-20dc-4514-a883-ea35de627805","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID4db475bb-20dc-4514-a883-ea35de627805"}},{"type":"ServiceEndpoint","id":"EIDf11bf969-bb2a-44af-87c7-160e9534d849","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID2df09918-7216-4dc2-bfff-27c68d16c166","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID2df09918-7216-4dc2-bfff-27c68d16c166"}},{"type":"ServiceEndpoint","id":"EIDc4804ab9-9a2b-4cc6-9104-e07fd6ebb8fb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceResponse","id":"EIDd93f9ba6-b153-4e4d-a544-ba756cd245a1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDd93f9ba6-b153-4e4d-a544-ba756cd245a1"}},{"type":"ServiceResponse","id":"EIDd8eb6a18-72e1-4086-9736-9f6b90c90170","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDd8eb6a18-72e1-4086-9736-9f6b90c90170"}},{"type":"ServiceEndpoint","id":"EID6406e918-9387-40f9-b2bc-4f117ed44694","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID0bc3fee9-7f8c-40d0-b2ac-48ffd2058802","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID00ed9b2e-62c5-4847-abe3-8e45fe70f60c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDeb84f8bc-3879-4366-9cd9-356add926f69","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceResponse","id":"EIDc765b86e-a753-4a8c-8a27-c16e6528ce90","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDc765b86e-a753-4a8c-8a27-c16e6528ce90"}},{"type":"ServiceResponse","id":"EIDdc06d523-2159-4065-8985-f6691a5b379c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDdc06d523-2159-4065-8985-f6691a5b379c"}},{"type":"Message","id":"EID11c48028-fe35-4590-a077-b67cdff095d3","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID11c48028-fe35-4590-a077-b67cdff095d3"}},{"type":"ServiceResponse","id":"EID003e125d-55ae-4f78-b564-cd274aa5edb9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID003e125d-55ae-4f78-b564-cd274aa5edb9"}},{"type":"ServiceEndpoint","id":"EID77441005-3697-4ca9-ab58-3b754e990964","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"Message","id":"EID13a3c60e-c515-4d6d-9098-702e0a456895","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID13a3c60e-c515-4d6d-9098-702e0a456895"}},{"type":"ServiceResponse","id":"EID7fa60655-0199-424e-957c-c6dc583c3c9e","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID7fa60655-0199-424e-957c-c6dc583c3c9e"}},{"type":"Message","id":"EIDd6d35608-aac1-4d90-99a7-353b25cf6235","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDd6d35608-aac1-4d90-99a7-353b25cf6235"}},{"type":"GetParameter","id":"EID0250cf47-f09a-4476-aa20-c44feab0698b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceResponse","id":"EIDa43d6a68-7796-4f93-ab16-4e52f1e76111","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDa43d6a68-7796-4f93-ab16-4e52f1e76111"}},{"type":"GetParameter","id":"EID207f0b70-e1ae-468b-abb7-375453ec6a63","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EID6c03c2a1-481f-4f37-9a87-f8df1c2f27bb","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID6c03c2a1-481f-4f37-9a87-f8df1c2f27bb"}},{"type":"ServiceEndpoint","id":"EIDf5cab5e2-d839-4516-8ceb-13bb5e83bbcd","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"Message","id":"EID1a25813e-743c-4d11-8c6d-ffbbd221b46a","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID1a25813e-743c-4d11-8c6d-ffbbd221b46a"}},{"type":"GetParameter","id":"EID7ae8384a-0679-4e17-bcb5-3d2aee52e768","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EID6920ac5b-9f29-462c-acfc-4cb78bbe0046","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID6920ac5b-9f29-462c-acfc-4cb78bbe0046"}},{"type":"ServiceEndpoint","id":"EID3080dbbf-1fed-4a4c-9e7d-3505a5d190ce","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceEndpoint","id":"EIDafbfae68-73dc-4e76-8972-2db1454264ef","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDa2e47e59-b904-4b62-8c89-69eb35c3ac0d","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDa2e47e59-b904-4b62-8c89-69eb35c3ac0d"}},{"type":"ServiceResponse","id":"EID5f2e29e0-230f-4c2d-bb10-ca7906cb9278","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID5f2e29e0-230f-4c2d-bb10-ca7906cb9278"}},{"type":"ServiceEndpoint","id":"EID688010aa-50ab-4f8c-8f28-f6c5e56505d4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EID18bf2e5b-9b2b-4302-b6b5-6f64a7f392d9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"Message","id":"EIDfb71b202-5663-4ff4-b0e0-c02b780a5394","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDfb71b202-5663-4ff4-b0e0-c02b780a5394"}},{"type":"ServiceEndpoint","id":"EID4d896288-e564-4ff8-9eee-b119c4a15319","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EIDdc0d35a8-84d5-4228-b8b5-33d8f5dc7fc5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDdc0d35a8-84d5-4228-b8b5-33d8f5dc7fc5"}},{"type":"ServiceEndpoint","id":"EID5dfeee09-5f88-44b9-b707-bab464f1591a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EIDf7916c12-8e55-4e66-8f3e-793b5ec08032","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDf7916c12-8e55-4e66-8f3e-793b5ec08032"}},{"type":"ServiceEndpoint","id":"EID4fa4deb7-0b9b-43c1-b709-2357db6cdf35","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceEndpoint","id":"EIDa183b130-64ac-42cd-bd17-bf75b91eea6a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDcae48b50-7c9d-412c-a0b7-6f27ce868af0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDd3847936-f515-4748-9292-da0d6a8429b6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"Message","id":"EIDf8cdf8f2-50a6-498e-b5b5-75611aabfd0a","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDf8cdf8f2-50a6-498e-b5b5-75611aabfd0a"}},{"type":"ServiceResponse","id":"EID9beeeeab-757d-4ef4-a598-7d1a54b373b5","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID9beeeeab-757d-4ef4-a598-7d1a54b373b5"}},{"type":"ServiceEndpoint","id":"EID7b906bcc-7d92-434d-92c1-c51523696543","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"Message","id":"EIDdd1f93ed-9a26-4c71-8b97-a06a54462a5e","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDdd1f93ed-9a26-4c71-8b97-a06a54462a5e"}},{"type":"GetParameter","id":"EID2bdcc153-52cb-45cb-9462-8e65b178452b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EID27fe6289-7a1e-458b-b975-75f657aff7e0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EID8a590b02-3047-41f5-971d-9766712874ea","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID8a590b02-3047-41f5-971d-9766712874ea"}},{"type":"GetParameter","id":"EID3a747eff-3c04-4260-bb75-910dd7245157","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"Message","id":"EIDa1d6bfc8-49bb-47ec-a6db-231c128e9063","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDa1d6bfc8-49bb-47ec-a6db-231c128e9063"}},{"type":"Message","id":"EID6a006003-22cc-47a4-a9f7-05c459f95b0c","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID6a006003-22cc-47a4-a9f7-05c459f95b0c"}},{"type":"GetParameter","id":"EIDaf0a5497-eca6-4708-aa81-56cd154af569","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceEndpoint","id":"EID05e9e7f9-dee5-470e-bacf-22213565d7d9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"Message","id":"EID7efc041d-291d-4f69-80e1-d35c48aec0ec","label":"Message.19","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID7efc041d-291d-4f69-80e1-d35c48aec0ec"}},{"type":"Message","id":"EIDf055ccbc-6241-45e1-ac0b-acac4f8230fe","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDf055ccbc-6241-45e1-ac0b-acac4f8230fe"}},{"type":"GetParameter","id":"EID85abe5bb-773c-4295-9aca-d71d7bdf3905","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EID7504a4fe-4d6c-4ea4-807b-87e1a66c79fd","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID7504a4fe-4d6c-4ea4-807b-87e1a66c79fd"}},{"type":"Message","id":"EID7c2bda75-3183-4849-8cd9-81badf109497","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID7c2bda75-3183-4849-8cd9-81badf109497"}},{"type":"Message","id":"EID21de36b9-e903-4996-a995-145c100b4a76","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID21de36b9-e903-4996-a995-145c100b4a76"}},{"type":"ServiceEndpoint","id":"EID8cddb2ca-9ebd-43ce-aa52-487712b96b47","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceResponse","id":"EIDee2c9636-ea18-48ac-b3f5-94b4eb939906","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDee2c9636-ea18-48ac-b3f5-94b4eb939906"}},{"type":"ServiceResponse","id":"EIDe0e90755-174f-4b5d-b38c-54d83d19dbfb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDe0e90755-174f-4b5d-b38c-54d83d19dbfb"}},{"type":"ServiceResponse","id":"EIDd937ceec-8e53-4674-90e6-018c15a0a60b","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDd937ceec-8e53-4674-90e6-018c15a0a60b"}},{"type":"GetParameter","id":"EID680398d8-8575-4f43-981a-dead3adc790f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL2Rvd25sb2Fkcy9pbnNwaXJlLXB2LXBzLm5scHMtd2F2LnppcA=="},{"type":"ServiceResponse","id":"EID52f84285-9557-486c-8de0-4f76df1dc733","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID52f84285-9557-486c-8de0-4f76df1dc733"}},{"type":"ServiceEndpoint","id":"EIDeb36445b-0c41-4258-b8bf-fb2f44c238ff","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID1eaeb98d-6b72-4f1a-aa8f-6665024d3fec","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID1eaeb98d-6b72-4f1a-aa8f-6665024d3fec"}},{"type":"Message","id":"EIDf23167e5-0525-482b-ad85-eeea9bfee3a2","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDf23167e5-0525-482b-ad85-eeea9bfee3a2"}},{"type":"LogFile","id":"EID1fbbd284-07f2-4c44-868d-d5596dc609ab","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID1fbbd284-07f2-4c44-868d-d5596dc609ab"}},{"type":"ServiceResponse","id":"EID796dcf69-d2e8-41bf-b39f-f9a5203093a8","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID796dcf69-d2e8-41bf-b39f-f9a5203093a8"}},{"type":"GetParameter","id":"EID48589eb2-6efe-44b5-837c-ad1ae0cdd63e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"Message","id":"EIDe62a3fa9-06e5-41c7-ba88-6d19bf281606","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDe62a3fa9-06e5-41c7-ba88-6d19bf281606"}},{"type":"Message","id":"EIDe109989d-5266-4bfd-a095-2a32c9346571","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDe109989d-5266-4bfd-a095-2a32c9346571"}},{"type":"ServiceEndpoint","id":"EIDc435f2e1-4be3-42cd-a30e-8cdecc907d64","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"Message","id":"EID43ca58fd-30d4-442d-a6ef-3c44a2d3fb83","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID43ca58fd-30d4-442d-a6ef-3c44a2d3fb83"}},{"type":"Message","id":"EID75931d30-cc3c-4212-80d1-24aac641e13e","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID75931d30-cc3c-4212-80d1-24aac641e13e"}},{"type":"ServiceResponse","id":"EIDd8e45875-7c30-4a66-9d6e-47452a4e0b1f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDd8e45875-7c30-4a66-9d6e-47452a4e0b1f"}},{"type":"ServiceResponse","id":"EID3c227425-0314-404d-8e83-d90e2cf594f4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID3c227425-0314-404d-8e83-d90e2cf594f4"}},{"type":"ServiceResponse","id":"EID173572d6-4d24-4bb0-89c8-c5651465b376","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID173572d6-4d24-4bb0-89c8-c5651465b376"}},{"type":"GetParameter","id":"EIDa68cdaf9-5b40-4c04-86d3-11b1003a9c91","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID2f9828fc-949a-4dc7-b8fc-530de0bb8707","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID2f9828fc-949a-4dc7-b8fc-530de0bb8707"}},{"type":"ServiceResponse","id":"EIDac7eb91f-5cc6-40bd-95d6-5e061e68afb6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDac7eb91f-5cc6-40bd-95d6-5e061e68afb6"}},{"type":"Message","id":"EIDdbf64ed0-fa6a-4549-8ab1-8cd8c8b8b8d3","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDdbf64ed0-fa6a-4549-8ab1-8cd8c8b8b8d3"}},{"type":"ServiceEndpoint","id":"EIDdd62011f-a806-4bf1-a3b7-68c43737b0ad","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceResponse","id":"EIDdfaf7980-d695-43ce-ba18-8d6d2f71e3c4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDdfaf7980-d695-43ce-ba18-8d6d2f71e3c4"}},{"type":"ServiceEndpoint","id":"EIDada69f5a-1389-4035-8a06-f1b24a36e4aa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EID8644be4b-4897-4924-9dda-9313290208a1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID8644be4b-4897-4924-9dda-9313290208a1"}},{"type":"Message","id":"EID410faa79-ce75-4907-bfcd-9d130e9b80d5","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID410faa79-ce75-4907-bfcd-9d130e9b80d5"}},{"type":"ServiceEndpoint","id":"EIDc534c834-3ca0-4f19-96ca-4f057a12373a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EID5342714f-8df7-4548-8e5b-a46710ad80c6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EIDdf636507-dd57-4f77-a4f9-dc679f24345f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDdfe1aa8e-2a67-495d-b688-133f513469ae","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EID7400e828-e329-479e-8353-7924e5fd9ce7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EID43038f3d-6bc6-46e9-b092-bda726b2dd83","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"GetParameter","id":"EID70adbe45-7c0b-4058-82d6-87050173cef5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDff27510b-a271-48f3-aea9-a2a98b02bf23","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDff27510b-a271-48f3-aea9-a2a98b02bf23"}},{"type":"GetParameter","id":"EID7e6cc716-62ec-4d91-a3f4-77047b8423f2","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDa7420b62-47d3-4edc-84fe-de1bc9f2c486","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDa7420b62-47d3-4edc-84fe-de1bc9f2c486"}},{"type":"Message","id":"EID5e9a68f9-def6-4d82-b084-69d2cc9af030","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID5e9a68f9-def6-4d82-b084-69d2cc9af030"}},{"type":"ServiceResponse","id":"EIDaa6d2edb-04ee-4e36-bb97-9765b5f16425","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDaa6d2edb-04ee-4e36-bb97-9765b5f16425"}},{"type":"ServiceResponse","id":"EID892dbd3c-9e43-4531-8b35-944727f76dfe","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID892dbd3c-9e43-4531-8b35-944727f76dfe"}},{"type":"GetParameter","id":"EID77e09c0f-a4c8-4c2d-9a90-9eb185391170","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EID7a6ce873-742d-4c0d-815c-884904c7aad7","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID7a6ce873-742d-4c0d-815c-884904c7aad7"}},{"type":"ServiceEndpoint","id":"EIDbf47ce99-5b56-405b-9a1b-0f744fc6e38f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDe47588a7-84a1-4f12-a770-f94cc9097212","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDe47588a7-84a1-4f12-a770-f94cc9097212"}},{"type":"ServiceResponse","id":"EID2e4337d3-15d1-4491-867e-8320c42935fe","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID2e4337d3-15d1-4491-867e-8320c42935fe"}},{"type":"Message","id":"EID99682ee2-5eb8-4e16-bfa2-d8edba69f595","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID99682ee2-5eb8-4e16-bfa2-d8edba69f595"}},{"type":"Message","id":"EIDeef14561-ec8e-436f-9abc-9115154e1e8f","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDeef14561-ec8e-436f-9abc-9115154e1e8f"}},{"type":"Message","id":"EID394f2397-4b83-406b-b97e-a9f9e84b1049","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID394f2397-4b83-406b-b97e-a9f9e84b1049"}},{"type":"Message","id":"EID61a78c90-afc0-4cb0-854b-5e916c45e3e0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID61a78c90-afc0-4cb0-854b-5e916c45e3e0"}},{"type":"ServiceResponse","id":"EIDfa01e73f-b888-4ccf-a6bb-8d8404189b46","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDfa01e73f-b888-4ccf-a6bb-8d8404189b46"}},{"type":"ServiceEndpoint","id":"EID43764ca3-72f5-47f7-bddf-ae0b1b395e0b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL2Rvd25sb2Fkcy9pbnNwaXJlLXB2LXBzLm5scHMtd2F2LnppcA=="},{"type":"GetParameter","id":"EID6ec89377-f342-4be4-b4cf-016dad97a5fc","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID90261181-8e9a-4f38-a898-ed3a8f04d331","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID7a93e7b9-d773-445b-8797-a0649e36e033","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID7a93e7b9-d773-445b-8797-a0649e36e033"}},{"type":"GetParameter","id":"EID1538fa2c-0586-4d46-9ffd-3f7e975a5a5e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"Message","id":"EIDa617b446-3b2b-46a9-a47e-bdc7c1fe88eb","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDa617b446-3b2b-46a9-a47e-bdc7c1fe88eb"}},{"type":"GetParameter","id":"EID5ce955a4-da0b-4236-9c84-7c9e924e67d9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"Message","id":"EID9c3d2e79-c91f-4fab-b566-5521c816e09a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID9c3d2e79-c91f-4fab-b566-5521c816e09a"}},{"type":"GetParameter","id":"EID11e02d62-d465-4de2-ba32-d1874ba5ac57","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID748fd004-86d5-46eb-9661-cad53ae78a17","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL2luZGV4LnhtbA=="},{"type":"GetParameter","id":"EID8165c899-0030-4dea-8ac6-825d52016a34","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EID1f09d4a9-9457-4c4d-8782-5fcc78580da9","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID1f09d4a9-9457-4c4d-8782-5fcc78580da9"}},{"type":"GetParameter","id":"EID499f7505-775b-49f3-8cf1-6cf877ba5dc7","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL2Rvd25sb2Fkcy9pbnNwaXJlLXB2LXBzLnppcA=="},{"type":"ServiceEndpoint","id":"EID2a24c715-f1cd-4439-9867-d22e07dc4b54","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID5a193c48-859a-4764-bf7b-c4ed17cc7470","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDd63286d8-005e-444b-939f-b39c5d48f144","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID0deb91af-2d7f-4b0d-95d0-f3252f34a7de","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDf36a44fc-e12c-4798-8c3b-5f7316bb7774","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"ServiceEndpoint","id":"EIDde4ca725-730b-4a05-95a8-316bfdb8a684","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID1183d1a2-54cb-40bf-9e54-0f5fcaf3a19b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EID4d651bab-f525-421b-b1bb-60a870d85029","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID95c440bb-5772-43ac-bf6a-5731a0ed6ad7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EID387c82f3-b38a-405b-9ccd-2fb846c8a62c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID6075f206-649d-48f1-b274-35a161403542","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID6075f206-649d-48f1-b274-35a161403542"}},{"type":"ServiceResponse","id":"EIDff8daa89-75dc-4c80-bd2c-d66cdbaf8895","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDff8daa89-75dc-4c80-bd2c-d66cdbaf8895"}},{"type":"Message","id":"EID6533a482-0b22-44a2-8f96-36ba76c4fb1e","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID6533a482-0b22-44a2-8f96-36ba76c4fb1e"}},{"type":"GetParameter","id":"EID6f2234a0-a358-42c2-92c4-f44f2aad0c7e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID3379611f-153b-40a5-94a2-e333fa328c7f","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID3379611f-153b-40a5-94a2-e333fa328c7f"}},{"type":"Message","id":"EIDe24a9b6f-7704-465f-85c2-5c10c6e16119","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDe24a9b6f-7704-465f-85c2-5c10c6e16119"}},{"type":"Message","id":"EIDd50d1236-e62c-420d-8cc5-d78da194dab0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDd50d1236-e62c-420d-8cc5-d78da194dab0"}},{"type":"GetParameter","id":"EIDffd7cbdc-9c58-4975-b304-dd3955701add","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"Message","id":"EIDcb8ff353-dc02-40c8-aedc-dc10049eff17","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDcb8ff353-dc02-40c8-aedc-dc10049eff17"}},{"type":"Message","id":"EID1180b166-3fb1-44cd-a48b-5b804a08bbce","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID1180b166-3fb1-44cd-a48b-5b804a08bbce"}},{"type":"ServiceEndpoint","id":"EID3d325fed-c76c-42df-9bd1-e9eb61fa48b1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceResponse","id":"EID455a768f-70a2-4fe1-b931-e06707ae866d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID455a768f-70a2-4fe1-b931-e06707ae866d"}},{"type":"GetParameter","id":"EIDa8548ebb-4daa-4fc2-8396-757dd08a8628","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceEndpoint","id":"EID149ecb27-7d27-45c9-b54f-36e1aaee6f7f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"GetParameter","id":"EID7be98c4f-99e4-4f39-a26c-fcc19156cc2a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"GetParameter","id":"EID9a2dde07-074a-4532-ba5e-66c4af3203b1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"GetParameter","id":"EID0469eb5a-1ef9-48eb-817c-b29776b5d192","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85M2M4NzYyYy00Y2JiLTQyYjAtOWIwMi04OWVmOTAyZTg4ODAvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID1e1dc4f6-6e8d-437b-9bb8-d5ecec7aba08","label":"Service Response","encoding":"UTF-8","mimeType":"application/zip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID1e1dc4f6-6e8d-437b-9bb8-d5ecec7aba08"}},{"type":"GetParameter","id":"EIDaf441914-6fd6-4451-9b3f-85488c1a1747","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL3BzLW5scHMtd2F2LnhtbA=="},{"type":"ServiceResponse","id":"EIDaefa5672-4912-4c7a-ab4c-dae400750680","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDaefa5672-4912-4c7a-ab4c-dae400750680"}},{"type":"Message","id":"EID42225b9e-db0b-4a68-adb8-b8a35b99ba8b","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID42225b9e-db0b-4a68-adb8-b8a35b99ba8b"}},{"type":"Message","id":"EID68f070c6-cf1b-440d-bed5-bd827ecc8837","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID68f070c6-cf1b-440d-bed5-bd827ecc8837"}},{"type":"ServiceEndpoint","id":"EID5306828a-d75b-431d-90c1-f1daffba2e1d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDdd57df58-ac64-420f-a6ef-73d451b571e8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"GetParameter","id":"EID93f44e78-fd44-43fe-94d8-e25c87c80362","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL3Byb3ZpbmNpZXMvcHMvYXRvbS92MS9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID40d8b033-6c71-45c0-8511-92e15bf6a5e9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC9kb3dubG9hZA=="},{"type":"ServiceResponse","id":"EIDaa282c8d-5fdb-4b2c-a3c5-f001ff2d32eb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EIDaa282c8d-5fdb-4b2c-a3c5-f001ff2d32eb"}},{"type":"Message","id":"EID51b6b5a9-906c-4b9b-a026-2944e3e24b9f","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDf80b73fd-9147-441c-8c4e-6adf6ec61606/Attachments/EID51b6b5a9-906c-4b9b-a026-2944e3e24b9f"}},{"type":"GetParameter","id":"EID26ec4d17-a22a-4248-911a-e0682dfad7c6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcHJvdmluY2llcy9wcy9hdG9tL3YxL2luZGV4LnhtbA=="}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:17:01Z","duration":80677,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.002
13:18:37.565 [print] EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:18:37.566 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:18:37.566 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:18:37.566 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.011
13:18:37.578 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/2fa8d99b-359b-4bbd-b9fa-c3c6f539207b.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:18:37.579 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/2fa8d99b-359b-4bbd-b9fa-c3c6f539207b.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:18:37.580 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID2fa8d99b-359b-4bbd-b9fa-c3c6f539207b/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.005
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.020
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
13:18:37.607 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
13:18:37.608 [print] [
  "TR.incorrectFeedSelfReference",
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* print sortedrefs 0.000
13:18:37.608 [print] [
  "TR.incorrectFeedSelfReference",
  "TR.missingLinkToMetadataRecordForDownloadService"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
35.127
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:16:20.520 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 6.233
13:16:20.522 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 258
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml"}}}

13:16:26.752 response time in milliseconds: 5468.10
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:16:25 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:16:23 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/3b8b2928-8448-4f76-ac1c-538ba51d7984.json","testRuns":{"TestRun":{"id":"EID3b8b2928-8448-4f76-ac1c-538ba51d7984","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:16:22.548Z","testTasks":{"TestTask":{"id":"EIDfc311c57-5372-4092-981c-7a0d36d2a33d","parent":{"ref":"EID3b8b2928-8448-4f76-ac1c-538ba51d7984"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID1cefc7df-b290-4485-b86a-4ef6db9454dc"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID3b8b2928-8448-4f76-ac1c-538ba51d7984/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID1cefc7df-b290-4485-b86a-4ef6db9454dc","remoteResource":"https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:16:20.96Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:16:21.899Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.005
13:16:26.760 [print] EID3b8b2928-8448-4f76-ac1c-538ba51d7984
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:16:26.760 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:16:26.760 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:16:26.761 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/3b8b2928-8448-4f76-ac1c-538ba51d7984.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:16:26.761 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID3b8b2928-8448-4f76-ac1c-538ba51d7984/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:16:26.761 [print] statuspath TestRuns/EID3b8b2928-8448-4f76-ac1c-538ba51d7984
* print 'progresspath ', progresspath 0.000
13:16:26.761 [print] progresspath  TestRuns/EID3b8b2928-8448-4f76-ac1c-538ba51d7984/progress
Given path progresspath 0.000
When method GET 0.519
13:16:26.766 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3b8b2928-8448-4f76-ac1c-538ba51d7984/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:27.281 response time in milliseconds: 513.95
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:16:27 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"25","max":"26","log":["27.10.2020 13:16:22 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:22 UTC 2020)","27.10.2020 13:16:22 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:22 - Preparing 1 Test Task:","27.10.2020 13:16:22 -  TestTask 1 (fc311c57-5372-4092-981c-7a0d36d2a33d)","27.10.2020 13:16:22 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:22 -  with parameters: ","27.10.2020 13:16:22 - etf.testcases = *","27.10.2020 13:16:22 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:22 - Setting state to CREATED","27.10.2020 13:16:22 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:23 - Starting TestRun.3b8b2928-8448-4f76-ac1c-538ba51d7984 at 2020-10-27T13:16:25Z","27.10.2020 13:16:25 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:16:25 - Project Properties: ","27.10.2020 13:16:25 - etf.testcases - * ","27.10.2020 13:16:25 - serviceEndpoint - https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml ","27.10.2020 13:16:25 - username -  ","27.10.2020 13:16:25 - authUser -  ","27.10.2020 13:16:25 - authMethod - basic ","27.10.2020 13:16:25 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:16:27.282 [print] {
  "val": "25",
  "max": "26",
  "log": [
    "27.10.2020 13:16:22 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:22 UTC 2020)",
    "27.10.2020 13:16:22 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:16:22 - Preparing 1 Test Task:",
    "27.10.2020 13:16:22 -  TestTask 1 (fc311c57-5372-4092-981c-7a0d36d2a33d)",
    "27.10.2020 13:16:22 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:16:22 -  with parameters: ",
    "27.10.2020 13:16:22 - etf.testcases = *",
    "27.10.2020 13:16:22 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:16:22 - Setting state to CREATED",
    "27.10.2020 13:16:22 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:16:23 - Starting TestRun.3b8b2928-8448-4f76-ac1c-538ba51d7984 at 2020-10-27T13:16:25Z",
    "27.10.2020 13:16:25 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:16:25 - Project Properties: ",
    "27.10.2020 13:16:25 - etf.testcases - * ",
    "27.10.2020 13:16:25 - serviceEndpoint - https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml ",
    "27.10.2020 13:16:25 - username -  ",
    "27.10.2020 13:16:25 - authUser -  ",
    "27.10.2020 13:16:25 - authMethod - basic ",
    "27.10.2020 13:16:25 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 24.150
13:16:27.282 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3b8b2928-8448-4f76-ac1c-538ba51d7984/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:27.795 response time in milliseconds: 512.52
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:16:27 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"34","max":"35","log":["27.10.2020 13:16:22 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:22 UTC 2020)","27.10.2020 13:16:22 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:22 - Preparing 1 Test Task:","27.10.2020 13:16:22 -  TestTask 1 (fc311c57-5372-4092-981c-7a0d36d2a33d)","27.10.2020 13:16:22 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:22 -  with parameters: ","27.10.2020 13:16:22 - etf.testcases = *","27.10.2020 13:16:22 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:22 - Setting state to CREATED","27.10.2020 13:16:22 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:23 - Starting TestRun.3b8b2928-8448-4f76-ac1c-538ba51d7984 at 2020-10-27T13:16:25Z","27.10.2020 13:16:25 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:16:25 - Project Properties: ","27.10.2020 13:16:25 - etf.testcases - * ","27.10.2020 13:16:25 - serviceEndpoint - https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml ","27.10.2020 13:16:25 - username -  ","27.10.2020 13:16:25 - authUser -  ","27.10.2020 13:16:25 - authMethod - basic ","27.10.2020 13:16:25 - TestRunTask initialized"]}

13:16:27.796 retry condition not satisfied: response.val == response.max
13:16:27.796 sleeping before retry #1
13:16:32.797 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3b8b2928-8448-4f76-ac1c-538ba51d7984/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:33.370 response time in milliseconds: 572.15
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:16:33 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"153","max":"154","log":["27.10.2020 13:16:22 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:22 UTC 2020)","27.10.2020 13:16:22 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:22 - Preparing 1 Test Task:","27.10.2020 13:16:22 -  TestTask 1 (fc311c57-5372-4092-981c-7a0d36d2a33d)","27.10.2020 13:16:22 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:22 -  with parameters: ","27.10.2020 13:16:22 - etf.testcases = *","27.10.2020 13:16:22 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:22 - Setting state to CREATED","27.10.2020 13:16:22 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:23 - Starting TestRun.3b8b2928-8448-4f76-ac1c-538ba51d7984 at 2020-10-27T13:16:25Z","27.10.2020 13:16:25 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:16:25 - Project Properties: ","27.10.2020 13:16:25 - etf.testcases - * ","27.10.2020 13:16:25 - serviceEndpoint - https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml ","27.10.2020 13:16:25 - username -  ","27.10.2020 13:16:25 - authUser -  ","27.10.2020 13:16:25 - authMethod - basic ","27.10.2020 13:16:25 - TestRunTask initialized","27.10.2020 13:16:32 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027"]}

13:16:33.370 retry condition not satisfied: response.val == response.max
13:16:33.370 sleeping before retry #2
13:16:38.371 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3b8b2928-8448-4f76-ac1c-538ba51d7984/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:38.890 response time in milliseconds: 517.92
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:16:38 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"192","max":"193","log":["27.10.2020 13:16:22 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:22 UTC 2020)","27.10.2020 13:16:22 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:22 - Preparing 1 Test Task:","27.10.2020 13:16:22 -  TestTask 1 (fc311c57-5372-4092-981c-7a0d36d2a33d)","27.10.2020 13:16:22 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:22 -  with parameters: ","27.10.2020 13:16:22 - etf.testcases = *","27.10.2020 13:16:22 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:22 - Setting state to CREATED","27.10.2020 13:16:22 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:23 - Starting TestRun.3b8b2928-8448-4f76-ac1c-538ba51d7984 at 2020-10-27T13:16:25Z","27.10.2020 13:16:25 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:16:25 - Project Properties: ","27.10.2020 13:16:25 - etf.testcases - * ","27.10.2020 13:16:25 - serviceEndpoint - https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml ","27.10.2020 13:16:25 - username -  ","27.10.2020 13:16:25 - authUser -  ","27.10.2020 13:16:25 - authMethod - basic ","27.10.2020 13:16:25 - TestRunTask initialized","27.10.2020 13:16:32 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:16:36 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:36 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:37 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:38 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:38 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

13:16:38.890 retry condition not satisfied: response.val == response.max
13:16:38.890 sleeping before retry #3
13:16:43.891 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3b8b2928-8448-4f76-ac1c-538ba51d7984/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:44.412 response time in milliseconds: 520.59
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:16:44 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"203","max":"204","log":["27.10.2020 13:16:22 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:22 UTC 2020)","27.10.2020 13:16:22 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:22 - Preparing 1 Test Task:","27.10.2020 13:16:22 -  TestTask 1 (fc311c57-5372-4092-981c-7a0d36d2a33d)","27.10.2020 13:16:22 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:22 -  with parameters: ","27.10.2020 13:16:22 - etf.testcases = *","27.10.2020 13:16:22 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:22 - Setting state to CREATED","27.10.2020 13:16:22 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:23 - Starting TestRun.3b8b2928-8448-4f76-ac1c-538ba51d7984 at 2020-10-27T13:16:25Z","27.10.2020 13:16:25 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:16:25 - Project Properties: ","27.10.2020 13:16:25 - etf.testcases - * ","27.10.2020 13:16:25 - serviceEndpoint - https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml ","27.10.2020 13:16:25 - username -  ","27.10.2020 13:16:25 - authUser -  ","27.10.2020 13:16:25 - authMethod - basic ","27.10.2020 13:16:25 - TestRunTask initialized","27.10.2020 13:16:32 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:16:36 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:36 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:37 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:38 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:38 ERROR Assertion failed with error \u0027TR.missingElement\u0027"]}

13:16:44.415 retry condition not satisfied: response.val == response.max
13:16:44.415 sleeping before retry #4
13:16:49.416 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3b8b2928-8448-4f76-ac1c-538ba51d7984/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:51.431 response time in milliseconds: 2012.52
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:16:51 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:16:51.432 retry condition satisfied
* print response 0.000
13:16:51.432 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 4.198
13:16:51.433 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID3b8b2928-8448-4f76-ac1c-538ba51d7984
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:55.628 response time in milliseconds: 3133.34
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Cache-Control: public, max-age=120
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:16:54 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Last-Modified: Tue, 27 Oct 2020 13:16:51 GMT
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/3b8b2928-8448-4f76-ac1c-538ba51d7984.json","testRuns":{"TestRun":{"id":"EID3b8b2928-8448-4f76-ac1c-538ba51d7984","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:16:22.548Z","testTasks":{"TestTask":{"id":"EIDfc311c57-5372-4092-981c-7a0d36d2a33d","parent":{"ref":"EID3b8b2928-8448-4f76-ac1c-538ba51d7984"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID1cefc7df-b290-4485-b86a-4ef6db9454dc"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID3b8b2928-8448-4f76-ac1c-538ba51d7984/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID1cefc7df-b290-4485-b86a-4ef6db9454dc","remoteResource":"https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:16:20.96Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:16:21.899Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://service.pdok.nl/hwh/hydrografie/atom/v1_0/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1","testObject":{"ref":"EID1cefc7df-b290-4485-b86a-4ef6db9454dc"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a33de17-0175-1000-7351-4987ddb456f3","testCaseResults":{"TestCaseResult":[{"id":"EID6a33de17-0175-1000-6ec7-7ff84d1b7124","testStepResults":{"TestStepResult":[{"id":"EID6a33de41-0175-1000-d5e5-d911e60951c8","parent":{"ref":"EID6a33de17-0175-1000-6ec7-7ff84d1b7124"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:16:25Z","duration":21,"status":"PASSED"},{"id":"EID6a33de56-0175-1000-4bad-f81ca1498e7e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33df24-0175-1000-20f2-b7b7b5b7490b","parent":{"ref":"EID6a33de56-0175-1000-4bad-f81ca1498e7e"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:16:25Z","duration":0,"status":"PASSED"},{"id":"EID6a33df24-0175-1000-cbe3-ac890f64ddc5","parent":{"ref":"EID6a33de56-0175-1000-4bad-f81ca1498e7e"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:16:25Z","duration":0,"status":"PASSED"},{"id":"EID6a33df24-0175-1000-1ecc-817f90af1486","parent":{"ref":"EID6a33de56-0175-1000-4bad-f81ca1498e7e"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:16:25Z","duration":0,"status":"PASSED"},{"id":"EID6a33df24-0175-1000-4d78-6435b6613be1","parent":{"ref":"EID6a33de56-0175-1000-4bad-f81ca1498e7e"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:16:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdbc6407d-d941-4353-858a-70a9749cc2e3"},{"ref":"EIDd20fb3b8-4b5e-4b3f-80aa-899d220e9164"},{"ref":"EID2053fe22-a710-446a-b020-a8ed9f2e5e91"}]},"parent":{"ref":"EID6a33de17-0175-1000-6ec7-7ff84d1b7124"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:16:25Z","duration":33,"status":"PASSED"}]},"parent":{"ref":"EID6a33de17-0175-1000-7351-4987ddb456f3"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:16:25Z","duration":269,"status":"PASSED"},{"id":"EID6a33df24-0175-1000-8b61-2f30fc50dcef","testStepResults":{"TestStepResult":{"id":"EID6a33df24-0175-1000-84ba-6913c35c05f2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33dfb6-0175-1000-aed7-db048e1c9492","parent":{"ref":"EID6a33df24-0175-1000-84ba-6913c35c05f2"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:16:25Z","duration":0,"status":"PASSED"},{"id":"EID6a33dfb6-0175-1000-78ed-3dd3aa33fc93","parent":{"ref":"EID6a33df24-0175-1000-84ba-6913c35c05f2"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:16:25Z","duration":0,"status":"PASSED"},{"id":"EID6a33dfb6-0175-1000-671b-9c9d1a5ed62d","parent":{"ref":"EID6a33df24-0175-1000-84ba-6913c35c05f2"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:16:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe382c0d2-2cec-4c82-8eb4-4fe1184b7224"},{"ref":"EIDd0c01f99-0619-4cb3-9899-eefb96b81a50"},{"ref":"EIDfc125fa4-f888-4edc-92ab-67f019497401"}]},"parent":{"ref":"EID6a33df24-0175-1000-8b61-2f30fc50dcef"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:16:25Z","duration":33,"status":"PASSED"}},"parent":{"ref":"EID6a33de17-0175-1000-7351-4987ddb456f3"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:16:25Z","duration":146,"status":"PASSED"}]},"parent":{"ref":"EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:16:25Z","duration":415,"status":"PASSED"},{"id":"EID6a33dfb6-0175-1000-e655-5d01f0a59762","testCaseResults":{"TestCaseResult":[{"id":"EID6a33dfb6-0175-1000-8ba3-b0343f924e1a","testStepResults":{"TestStepResult":[{"id":"EID6a33dfc1-0175-1000-4058-5558e4da8cc0","parent":{"ref":"EID6a33dfb6-0175-1000-8ba3-b0343f924e1a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:16:25Z","duration":23,"status":"PASSED"},{"id":"EID6a33dfc2-0175-1000-bd3a-5d169c0c11b3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33e053-0175-1000-aa91-d752720391d5","parent":{"ref":"EID6a33dfc2-0175-1000-bd3a-5d169c0c11b3"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6a33e053-0175-1000-89a7-4f53d40b88f1","parent":{"ref":"EID6a33dfc2-0175-1000-bd3a-5d169c0c11b3"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6a33e053-0175-1000-74b3-87fe297f96d6","parent":{"ref":"EID6a33dfc2-0175-1000-bd3a-5d169c0c11b3"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6a33e053-0175-1000-1839-58b144acce56","parent":{"ref":"EID6a33dfc2-0175-1000-bd3a-5d169c0c11b3"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6a33e053-0175-1000-2c0e-ad156584038a","parent":{"ref":"EID6a33dfc2-0175-1000-bd3a-5d169c0c11b3"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:16:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID171a29b0-6f7c-4b5d-888f-37f88774a14b"},{"ref":"EIDfa9ace91-7a99-447f-89cc-4bd1cf85195c"},{"ref":"EID43c9a62a-bbf5-41c9-bdc3-7e1af768e457"}]},"parent":{"ref":"EID6a33dfb6-0175-1000-8ba3-b0343f924e1a"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:16:25Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6a33dfb6-0175-1000-e655-5d01f0a59762"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:16:25Z","duration":157,"status":"PASSED"},{"id":"EID6a33e053-0175-1000-5376-cce04ec6a90c","testStepResults":{"TestStepResult":[{"id":"EID6a33e05e-0175-1000-bc04-064cc76db809","attachments":{"attachment":[{"ref":"EID856aeba0-2c60-4263-805b-77adde0ae5bd"},{"ref":"EID76806596-14ff-4872-88f4-bba16b926a34"}]},"parent":{"ref":"EID6a33e053-0175-1000-5376-cce04ec6a90c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:16:26Z","duration":56,"status":"PASSED"},{"id":"EID6a33e11d-0175-1000-24fa-ecf069ab854e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33e1bb-0175-1000-7d87-67efe81ad5c7","parent":{"ref":"EID6a33e11d-0175-1000-24fa-ecf069ab854e"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6a33e1bb-0175-1000-fdfa-16052b570f07","parent":{"ref":"EID6a33e11d-0175-1000-24fa-ecf069ab854e"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6a33e1bb-0175-1000-72a9-eaa7c82994d0","parent":{"ref":"EID6a33e11d-0175-1000-24fa-ecf069ab854e"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6a33e1bb-0175-1000-a84d-a74a900852b8","parent":{"ref":"EID6a33e11d-0175-1000-24fa-ecf069ab854e"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:16:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4837dcc7-f8aa-41a6-b92c-3b72d8c216df"},{"ref":"EID9435adae-b779-43aa-9654-55ccf3ec8476"},{"ref":"EIDf148aef9-1396-411c-9a3b-357a36a95185"}]},"parent":{"ref":"EID6a33e053-0175-1000-5376-cce04ec6a90c"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:16:26Z","duration":23,"status":"PASSED"}]},"parent":{"ref":"EID6a33dfb6-0175-1000-e655-5d01f0a59762"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:16:26Z","duration":361,"status":"PASSED"},{"id":"EID6a33e1bc-0175-1000-46f6-c49cd8f8a954","testStepResults":{"TestStepResult":[{"id":"EID6a33e1bc-0175-1000-8483-d32690e2889e","attachments":{"attachment":[{"ref":"EID380523e4-e194-4316-91a5-fb85ea3a22a9"},{"ref":"EID6d5cfe19-dd4e-4f12-8489-e977b10becc8"}]},"parent":{"ref":"EID6a33e1bc-0175-1000-46f6-c49cd8f8a954"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:16:26Z","duration":98,"status":"PASSED"},{"id":"EID6a33e2a3-0175-1000-659c-1fc08a09fd66","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33e31a-0175-1000-a87e-cfaf762cee13","parent":{"ref":"EID6a33e2a3-0175-1000-659c-1fc08a09fd66"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6a33e31a-0175-1000-7c1a-816a5930c300","parent":{"ref":"EID6a33e2a3-0175-1000-659c-1fc08a09fd66"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6a33e31a-0175-1000-3af2-1a5bd86c5134","parent":{"ref":"EID6a33e2a3-0175-1000-659c-1fc08a09fd66"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6a33e31a-0175-1000-d8ca-971ff300224a","parent":{"ref":"EID6a33e2a3-0175-1000-659c-1fc08a09fd66"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:16:26Z","duration":0,"status":"PASSED"},{"id":"EID6a33e31a-0175-1000-51c3-c2fe6a1732c3","parent":{"ref":"EID6a33e2a3-0175-1000-659c-1fc08a09fd66"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:16:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf1c27c63-8fdf-456d-b870-b03dd1895d53"},{"ref":"EID1326bffb-cf33-40bd-9f12-6ff42b1253b3"},{"ref":"EID1aea10d2-4b0f-4593-b71b-e9380557bfe3"}]},"parent":{"ref":"EID6a33e1bc-0175-1000-46f6-c49cd8f8a954"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:16:26Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6a33dfb6-0175-1000-e655-5d01f0a59762"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:16:26Z","duration":351,"status":"PASSED"},{"id":"EID6a33e31b-0175-1000-1932-7cb7fc80081b","testStepResults":{"TestStepResult":[{"id":"EID6a33e31b-0175-1000-1f42-f1ef044fa24f","attachments":{"attachment":[{"ref":"EID523b26ce-be38-4456-831b-034e95783621"},{"ref":"EIDd7b7c929-21ae-42b8-ae4b-18be9469c4cd"}]},"parent":{"ref":"EID6a33e31b-0175-1000-1932-7cb7fc80081b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:16:26Z","duration":194,"status":"PASSED"},{"id":"EID6a33e405-0175-1000-ba20-cfa16b81d8bf","parent":{"ref":"EID6a33e31b-0175-1000-1932-7cb7fc80081b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6a33e405-0175-1000-6b84-1d8b0a1c3892","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33e467-0175-1000-1415-237ca8470afa","parent":{"ref":"EID6a33e405-0175-1000-6b84-1d8b0a1c3892"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6a33e467-0175-1000-f746-a2dea94bd419","parent":{"ref":"EID6a33e405-0175-1000-6b84-1d8b0a1c3892"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6a33e467-0175-1000-b6e2-abf31dc7ef4d","parent":{"ref":"EID6a33e405-0175-1000-6b84-1d8b0a1c3892"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6a33e467-0175-1000-2bce-b59f54c5fc2a","parent":{"ref":"EID6a33e405-0175-1000-6b84-1d8b0a1c3892"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:16:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3e2bbc94-815c-45fd-a8f8-e1e91034c48c"},{"ref":"EIDb01484ed-01a3-4e13-a28a-785dd41de129"},{"ref":"EID58ca2763-624e-4fd2-b655-3cf2bd730b94"}]},"parent":{"ref":"EID6a33e31b-0175-1000-1932-7cb7fc80081b"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:16:27Z","duration":21,"status":"PASSED"},{"id":"EID6a33e467-0175-1000-98f3-2fc2ee092777","attachments":{"attachment":{"ref":"EID628d86ba-c679-49dc-bbbc-dc39af8ed25e"}},"parent":{"ref":"EID6a33e31b-0175-1000-1932-7cb7fc80081b"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:16:27Z","duration":13,"status":"PASSED"},{"id":"EID6a33e480-0175-1000-5259-db5cb3c40de1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33e4f1-0175-1000-265d-991989d2923e","parent":{"ref":"EID6a33e480-0175-1000-5259-db5cb3c40de1"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6a33e4f1-0175-1000-d583-65f83a8d979c","parent":{"ref":"EID6a33e480-0175-1000-5259-db5cb3c40de1"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6a33e4f1-0175-1000-7b64-b7264702af6f","parent":{"ref":"EID6a33e480-0175-1000-5259-db5cb3c40de1"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6a33e4f1-0175-1000-da51-a15266148698","parent":{"ref":"EID6a33e480-0175-1000-5259-db5cb3c40de1"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6a33e4f1-0175-1000-6228-04ed5ae5c022","parent":{"ref":"EID6a33e480-0175-1000-5259-db5cb3c40de1"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:16:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf7c0a758-c946-4865-b999-469d0709edf6"},{"ref":"EIDd698c860-4b95-4cff-87c5-82c1ac3daa42"},{"ref":"EIDb5b21977-b130-401f-a574-059ac44a2e24"}]},"parent":{"ref":"EID6a33e31b-0175-1000-1932-7cb7fc80081b"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:16:27Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6a33dfb6-0175-1000-e655-5d01f0a59762"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:16:26Z","duration":470,"status":"PASSED"},{"id":"EID6a33e4f1-0175-1000-d4fb-a844ba740adc","testStepResults":{"TestStepResult":[{"id":"EID6a33e4f1-0175-1000-7d99-8959f6a82742","attachments":{"attachment":[{"ref":"EIDfa7eb7de-5d52-4c69-aa29-ce75b5fce292"},{"ref":"EID9c015977-ab22-4d59-8c44-0a80710bc4f5"}]},"parent":{"ref":"EID6a33e4f1-0175-1000-d4fb-a844ba740adc"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:16:27Z","duration":200,"status":"PASSED"},{"id":"EID6a33e5ef-0175-1000-da03-14d5e71f5555","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33e6b5-0175-1000-3169-24978f6fce4b","parent":{"ref":"EID6a33e5ef-0175-1000-da03-14d5e71f5555"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6a33e6b6-0175-1000-fe3b-ffaaf0bb9442","parent":{"ref":"EID6a33e5ef-0175-1000-da03-14d5e71f5555"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6a33e6b6-0175-1000-b0c6-dea282209255","parent":{"ref":"EID6a33e5ef-0175-1000-da03-14d5e71f5555"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6a33e6b6-0175-1000-8311-02b9ba72d1d1","parent":{"ref":"EID6a33e5ef-0175-1000-da03-14d5e71f5555"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:16:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDf44ea852-ed6d-45f3-8df7-19efba1423b0"},{"ref":"EIDe6281bfd-c0f7-4531-85a8-7785761e6b71"},{"ref":"EID189dd9e2-72bc-46dd-8270-dff59c6379e4"}]},"parent":{"ref":"EID6a33e4f1-0175-1000-d4fb-a844ba740adc"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:16:27Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6a33dfb6-0175-1000-e655-5d01f0a59762"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:16:27Z","duration":461,"status":"PASSED"},{"id":"EID6a33e6be-0175-1000-61e3-0b1c708bfd52","testStepResults":{"TestStepResult":[{"id":"EID6a33e6be-0175-1000-26f8-33436543990a","attachments":{"attachment":[{"ref":"EID42240583-bad6-40ff-8432-7dbf338bb694"},{"ref":"EID13e4c113-2b7c-4eb7-bfab-6aee024f2c27"}]},"parent":{"ref":"EID6a33e6be-0175-1000-61e3-0b1c708bfd52"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:16:27Z","duration":76,"status":"PASSED"},{"id":"EID6a33e739-0175-1000-bb2c-565b9b0ccf93","parent":{"ref":"EID6a33e6be-0175-1000-61e3-0b1c708bfd52"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6a33e739-0175-1000-47e9-46fe85ab84ec","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33e792-0175-1000-86b9-0fc98a931d90","parent":{"ref":"EID6a33e739-0175-1000-47e9-46fe85ab84ec"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6a33e792-0175-1000-95f4-589955491dd5","parent":{"ref":"EID6a33e739-0175-1000-47e9-46fe85ab84ec"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6a33e792-0175-1000-414a-4571142e05e8","parent":{"ref":"EID6a33e739-0175-1000-47e9-46fe85ab84ec"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6a33e793-0175-1000-921b-ff5c98f3a926","parent":{"ref":"EID6a33e739-0175-1000-47e9-46fe85ab84ec"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:16:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4165e37e-ff9a-432e-899e-b9da1e9fb00b"},{"ref":"EID8db4a403-4d8f-4f8c-9066-afad8757811d"},{"ref":"EID54afc4c6-b851-44d6-a37d-efc933f30646"}]},"parent":{"ref":"EID6a33e6be-0175-1000-61e3-0b1c708bfd52"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:16:27Z","duration":21,"status":"PASSED"},{"id":"EID6a33e793-0175-1000-1a2c-84cbd46c43a6","attachments":{"attachment":{"ref":"EID8ce6c1fe-3558-4281-9e23-ff162a355faf"}},"parent":{"ref":"EID6a33e6be-0175-1000-61e3-0b1c708bfd52"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:16:27Z","duration":0,"status":"PASSED"},{"id":"EID6a33e7a0-0175-1000-a88c-ae2eaa8dcf26","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33e86e-0175-1000-0923-54e3f6bd20c5","parent":{"ref":"EID6a33e7a0-0175-1000-a88c-ae2eaa8dcf26"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6a33e86e-0175-1000-3876-8dbccac23b26","parent":{"ref":"EID6a33e7a0-0175-1000-a88c-ae2eaa8dcf26"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6a33e86e-0175-1000-ecc9-bd9c778f8cf6","parent":{"ref":"EID6a33e7a0-0175-1000-a88c-ae2eaa8dcf26"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:16:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID881c30e6-b82e-4316-ae43-de47d8c7862b"},{"ref":"EID27204877-ac14-4303-b295-015c8ff30997"},{"ref":"EIDe6d0399c-5a9d-4e1d-bfea-d84c515ef4fa"}]},"parent":{"ref":"EID6a33e6be-0175-1000-61e3-0b1c708bfd52"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:16:27Z","duration":126,"status":"PASSED"},{"id":"EID6a33e86e-0175-1000-9e6e-45f7d02799e6","attachments":{"attachment":{"ref":"EID2f1dd871-f6a2-479d-9995-d85f726a7952"}},"parent":{"ref":"EID6a33e6be-0175-1000-61e3-0b1c708bfd52"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/452e5b04-edf4-4698-a4de-25bade284add.json"},"startTimestamp":"2020-10-27T13:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6a33e87b-0175-1000-afa3-704b17855c9f","attachments":{"attachment":{"ref":"EID5a5299dc-4128-4837-973a-217a5b252cc0"}},"parent":{"ref":"EID6a33e6be-0175-1000-61e3-0b1c708bfd52"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ab7d72c-abe4-458b-875b-0f15bfb70cb4.json"},"startTimestamp":"2020-10-27T13:16:28Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a33dfb6-0175-1000-e655-5d01f0a59762"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:16:27Z","duration":473,"status":"PASSED"},{"id":"EID6a33e898-0175-1000-5b8c-6abf593b9a37","testStepResults":{"TestStepResult":[{"id":"EID6a33e898-0175-1000-e1bf-658b36ecf427","attachments":{"attachment":[{"ref":"EID696d5d82-5c7d-48f3-982a-16f284349c40"},{"ref":"EID5506e437-ba1a-4be7-a60f-3a217ce58c84"}]},"parent":{"ref":"EID6a33e898-0175-1000-5b8c-6abf593b9a37"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:16:28Z","duration":154,"status":"PASSED"},{"id":"EID6a33e96e-0175-1000-b2ca-7fdc9b7ad3e1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33e9da-0175-1000-f186-044f9b13e370","parent":{"ref":"EID6a33e96e-0175-1000-b2ca-7fdc9b7ad3e1"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6a33e9da-0175-1000-ba97-c834add5b8c6","parent":{"ref":"EID6a33e96e-0175-1000-b2ca-7fdc9b7ad3e1"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6a33e9da-0175-1000-755a-263c472935a4","parent":{"ref":"EID6a33e96e-0175-1000-b2ca-7fdc9b7ad3e1"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6a33e9da-0175-1000-898f-543b0e20f447","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a33e96e-0175-1000-b2ca-7fdc9b7ad3e1"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:16:28Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EIDc6634493-8ca3-4649-a5a8-8ff76f4de876"},{"ref":"EIDc38d8040-3540-497f-a342-392e9107efa6"},{"ref":"EID7a8d7805-8379-4dee-a447-6ce663dbad30"}]},"parent":{"ref":"EID6a33e898-0175-1000-5b8c-6abf593b9a37"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:16:28Z","duration":21,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a33dfb6-0175-1000-e655-5d01f0a59762"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:16:28Z","duration":322,"status":"PASSED_MANUAL"},{"id":"EID6a33e9da-0175-1000-9a55-8d2fb08e7935","testStepResults":{"TestStepResult":{"id":"EID6a33e9da-0175-1000-25dc-03a61221dce6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33ea36-0175-1000-6fde-9e2586e2c41e","parent":{"ref":"EID6a33e9da-0175-1000-25dc-03a61221dce6"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6a33ea36-0175-1000-7e6e-6e62cbbddc2b","parent":{"ref":"EID6a33e9da-0175-1000-25dc-03a61221dce6"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6a33ea36-0175-1000-255e-753d6b03386e","parent":{"ref":"EID6a33e9da-0175-1000-25dc-03a61221dce6"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6a33ea36-0175-1000-6ef3-e8cb9eddf0cc","parent":{"ref":"EID6a33e9da-0175-1000-25dc-03a61221dce6"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:16:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa3d9f038-7092-4ea7-bec7-25e97b450664"},{"ref":"EIDdc9373d7-0b7f-42d3-b8ef-7806147ec380"},{"ref":"EIDe07261be-5408-4604-8588-31fea5f8a9d1"}]},"parent":{"ref":"EID6a33e9da-0175-1000-9a55-8d2fb08e7935"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:16:28Z","duration":20,"status":"PASSED"}},"parent":{"ref":"EID6a33dfb6-0175-1000-e655-5d01f0a59762"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:16:28Z","duration":101,"status":"PASSED"},{"id":"EID6a33ea3f-0175-1000-743b-a71569f0cd06","testStepResults":{"TestStepResult":{"id":"EID6a33ea3f-0175-1000-92bd-1718bd05af07","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33eaa2-0175-1000-fdaf-435c09435ea0","parent":{"ref":"EID6a33ea3f-0175-1000-92bd-1718bd05af07"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6a33eaa2-0175-1000-1ab5-c415f0af6352","parent":{"ref":"EID6a33ea3f-0175-1000-92bd-1718bd05af07"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6a33eaa2-0175-1000-cf4e-eca896ce4d14","parent":{"ref":"EID6a33ea3f-0175-1000-92bd-1718bd05af07"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:16:28Z","duration":0,"status":"PASSED"},{"id":"EID6a33eaa2-0175-1000-8e76-ef167f753b37","parent":{"ref":"EID6a33ea3f-0175-1000-92bd-1718bd05af07"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:16:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd0362ce9-c060-4a3e-8671-e3c4f496a82f"},{"ref":"EID1b052e10-dd45-4d70-9b6b-59305d6ec646"},{"ref":"EID2f4662dd-772c-4823-8407-e63fb4710548"}]},"parent":{"ref":"EID6a33ea3f-0175-1000-743b-a71569f0cd06"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:16:28Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6a33dfb6-0175-1000-e655-5d01f0a59762"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:16:28Z","duration":99,"status":"PASSED"},{"id":"EID6a33eaa3-0175-1000-1380-19882c9b28d6","testStepResults":{"TestStepResult":[{"id":"EID6a33eaa3-0175-1000-2397-452778299878","attachments":{"attachment":[{"ref":"EID2d9f7daa-20fd-4dff-9fb7-b8f92f6e5633"},{"ref":"EID43d6d589-668a-4ac9-b746-382f5d11b2c8"},{"ref":"EID97423e5e-eb8b-4eb7-9e43-be0cada6b012"},{"ref":"EID2010cc1e-680e-487e-9843-63b19ecbff69"},{"ref":"EID76512274-e770-482a-80ca-f83aa424af62"},{"ref":"EIDef198d0d-6856-410d-b531-a87ea72b82f4"},{"ref":"EID074f3fcc-a304-4836-877a-f4abe2c91625"},{"ref":"EID8dccfb2f-c6f0-4377-af57-7bad272944eb"},{"ref":"EID0dfe5921-ba74-445c-b5ff-a08337ad42c0"},{"ref":"EID02f7af8b-1f73-4659-8cf1-a90113b6faf4"},{"ref":"EID6863071d-1387-453c-a6db-20dc5402b60f"},{"ref":"EID2160fb84-e12e-4977-8f79-26b35f43fccb"}]},"parent":{"ref":"EID6a33eaa3-0175-1000-1380-19882c9b28d6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:16:28Z","duration":287,"status":"PASSED"},{"id":"EID6a33ec62-0175-1000-09b5-d2d529a334c3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33ece8-0175-1000-67ed-7985ef7ef279","parent":{"ref":"EID6a33ec62-0175-1000-09b5-d2d529a334c3"},"resultedFrom":{"ref":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6a33ece8-0175-1000-2e9b-834d76f8c01c","parent":{"ref":"EID6a33ec62-0175-1000-09b5-d2d529a334c3"},"resultedFrom":{"ref":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6a33ece8-0175-1000-4ebb-31548d01e9df","parent":{"ref":"EID6a33ec62-0175-1000-09b5-d2d529a334c3"},"resultedFrom":{"ref":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6a33ece8-0175-1000-4364-ac60cc9d9cd2","parent":{"ref":"EID6a33ec62-0175-1000-09b5-d2d529a334c3"},"resultedFrom":{"ref":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6a33ece8-0175-1000-2cee-768b512e7273","parent":{"ref":"EID6a33ec62-0175-1000-09b5-d2d529a334c3"},"resultedFrom":{"ref":"EID544cf934-0fe3-4865-88b5-5e12285a393f"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3eb261cb-dee2-4d9e-9b1f-252b2b148dd4"},{"ref":"EID0a22d1c3-4751-421e-8941-cf5bae52abac"},{"ref":"EIDfdb8a950-cc85-4106-834c-74cc3f3f55cd"}]},"parent":{"ref":"EID6a33eaa3-0175-1000-1380-19882c9b28d6"},"resultedFrom":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"startTimestamp":"2020-10-27T13:16:29Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6a33dfb6-0175-1000-e655-5d01f0a59762"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:16:28Z","duration":582,"status":"PASSED"},{"id":"EID6a33ece9-0175-1000-fea2-944cc9543603","testStepResults":{"TestStepResult":{"id":"EID6a33ece9-0175-1000-f112-e62ac693374c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33ed8b-0175-1000-4d7e-4169598d0ac4","parent":{"ref":"EID6a33ece9-0175-1000-f112-e62ac693374c"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6a33ed8b-0175-1000-776b-0db859849d2d","parent":{"ref":"EID6a33ece9-0175-1000-f112-e62ac693374c"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6a33ed8b-0175-1000-6b46-56bee36a9121","parent":{"ref":"EID6a33ece9-0175-1000-f112-e62ac693374c"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6a33ed8b-0175-1000-853d-abe77e13072b","parent":{"ref":"EID6a33ece9-0175-1000-f112-e62ac693374c"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID404be220-e9ad-4c82-9ce8-d61f39afe938"},{"ref":"EIDe005a815-f061-4d9f-bef7-ca6ab9fc6c93"},{"ref":"EIDb37d9ef1-3e3d-4807-9f9d-dfc7fbeb9a58"}]},"parent":{"ref":"EID6a33ece9-0175-1000-fea2-944cc9543603"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:16:29Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6a33dfb6-0175-1000-e655-5d01f0a59762"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:16:29Z","duration":163,"status":"PASSED"},{"id":"EID6a33ed8c-0175-1000-cc25-a5dc84f1c561","testStepResults":{"TestStepResult":{"id":"EID6a33ed8c-0175-1000-eee9-c895a10e4193","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33ee08-0175-1000-0fd0-89eb761de98d","parent":{"ref":"EID6a33ed8c-0175-1000-eee9-c895a10e4193"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6a33ee08-0175-1000-1e0f-d7fcc91a3709","parent":{"ref":"EID6a33ed8c-0175-1000-eee9-c895a10e4193"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6a33ee08-0175-1000-6744-5fff26f23933","parent":{"ref":"EID6a33ed8c-0175-1000-eee9-c895a10e4193"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6a33ee08-0175-1000-774d-5d21d67753f4","parent":{"ref":"EID6a33ed8c-0175-1000-eee9-c895a10e4193"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6a33ee08-0175-1000-1e95-b0aed20c9567","parent":{"ref":"EID6a33ed8c-0175-1000-eee9-c895a10e4193"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6a33ee08-0175-1000-94eb-bf91ad633c19","parent":{"ref":"EID6a33ed8c-0175-1000-eee9-c895a10e4193"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID72d422f9-e269-4d8e-b7cf-d5eaae40190f"},{"ref":"EID47a75116-5307-444e-91ce-f2fb51dfab34"},{"ref":"EID1cf15403-2ee3-4c6e-a32c-e73892e09802"}]},"parent":{"ref":"EID6a33ed8c-0175-1000-cc25-a5dc84f1c561"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:16:29Z","duration":24,"status":"PASSED"}},"parent":{"ref":"EID6a33dfb6-0175-1000-e655-5d01f0a59762"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:16:29Z","duration":132,"status":"PASSED"},{"id":"EID6a33ee11-0175-1000-367e-dee712e86d0a","testStepResults":{"TestStepResult":{"id":"EID6a33ee11-0175-1000-74ba-484d5e1cb686","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33ee8f-0175-1000-222a-6ffd3c31654e","parent":{"ref":"EID6a33ee11-0175-1000-74ba-484d5e1cb686"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6a33ee8f-0175-1000-4e56-7a00c8dff3b1","parent":{"ref":"EID6a33ee11-0175-1000-74ba-484d5e1cb686"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6a33ee8f-0175-1000-21d1-410212798679","parent":{"ref":"EID6a33ee11-0175-1000-74ba-484d5e1cb686"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6a33ee8f-0175-1000-fba5-387ae9de91df","parent":{"ref":"EID6a33ee11-0175-1000-74ba-484d5e1cb686"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6a33ee8f-0175-1000-3376-3d599a9ef0e8","parent":{"ref":"EID6a33ee11-0175-1000-74ba-484d5e1cb686"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6a33ee8f-0175-1000-9272-735a2b8903ca","parent":{"ref":"EID6a33ee11-0175-1000-74ba-484d5e1cb686"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3533d668-ed89-4f02-b222-1a1ce3223b54"},{"ref":"EIDa035c97a-19f4-474f-a879-c9eb6fa417fd"},{"ref":"EIDb99227aa-26dd-4236-83eb-13547e736b09"}]},"parent":{"ref":"EID6a33ee11-0175-1000-367e-dee712e86d0a"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:16:29Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6a33dfb6-0175-1000-e655-5d01f0a59762"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:16:29Z","duration":126,"status":"PASSED"},{"id":"EID6a33ee90-0175-1000-e58e-6a8e85695e56","testStepResults":{"TestStepResult":{"id":"EID6a33ee90-0175-1000-db54-4804fab53d7d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33ef15-0175-1000-44fd-5d609ba7f35e","parent":{"ref":"EID6a33ee90-0175-1000-db54-4804fab53d7d"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6a33ef15-0175-1000-c249-ceddaa88cb83","parent":{"ref":"EID6a33ee90-0175-1000-db54-4804fab53d7d"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6a33ef15-0175-1000-c5bb-6c215b9c253d","parent":{"ref":"EID6a33ee90-0175-1000-db54-4804fab53d7d"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"},{"id":"EID6a33ef15-0175-1000-305d-07b72bcab840","parent":{"ref":"EID6a33ee90-0175-1000-db54-4804fab53d7d"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:16:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6df88ae3-d274-45f1-b136-21a61e7db59f"},{"ref":"EID8ae5722b-7ab1-4cdd-927e-746800bac5cb"},{"ref":"EIDf994caf9-ae1d-41d4-88ea-04f99e22f93c"}]},"parent":{"ref":"EID6a33ee90-0175-1000-e58e-6a8e85695e56"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:16:29Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6a33dfb6-0175-1000-e655-5d01f0a59762"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:16:29Z","duration":133,"status":"PASSED"},{"id":"EID6a33ef15-0175-1000-14fc-323db206b7dd","testStepResults":{"TestStepResult":[{"id":"EID6a33ef15-0175-1000-2612-998386a3e39d","attachments":{"attachment":[{"ref":"EID38a4fcec-db2b-4bfb-bea1-e182b424b344"},{"ref":"EID3d8d2165-61eb-41ec-84d5-a6b97253ca25"},{"ref":"EIDfb385fd7-b575-4e37-a398-0a4c526b4559"},{"ref":"EID2b0a7c1c-b725-44e0-889a-9e6fd595e76d"}]},"parent":{"ref":"EID6a33ef15-0175-1000-14fc-323db206b7dd"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:16:29Z","duration":138,"status":"PASSED"},{"id":"EID6a33f002-0175-1000-c201-391f9af8180e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33f099-0175-1000-93e9-59519d1ab0eb","parent":{"ref":"EID6a33f002-0175-1000-c201-391f9af8180e"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6a33f099-0175-1000-312d-da3440d59616","parent":{"ref":"EID6a33f002-0175-1000-c201-391f9af8180e"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6a33f099-0175-1000-abd6-cc77da012f00","parent":{"ref":"EID6a33f002-0175-1000-c201-391f9af8180e"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6a33f099-0175-1000-48ae-ae476719446b","parent":{"ref":"EID6a33f002-0175-1000-c201-391f9af8180e"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdfb9a129-7cdb-4225-9fbe-d9b4ca4febb0"},{"ref":"EID03af8d6c-0dff-4b2f-99a3-8551a8c32fee"},{"ref":"EIDc5484831-c7eb-4e18-bd19-12e28d6817ad"}]},"parent":{"ref":"EID6a33ef15-0175-1000-14fc-323db206b7dd"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:16:30Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6a33dfb6-0175-1000-e655-5d01f0a59762"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:16:29Z","duration":388,"status":"PASSED"},{"id":"EID6a33f09a-0175-1000-0bcd-1a0ad1db1ea6","testStepResults":{"TestStepResult":{"id":"EID6a33f09a-0175-1000-3858-1e181a6a7ebe","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33f118-0175-1000-b12a-1f95e3b37b36","parent":{"ref":"EID6a33f09a-0175-1000-3858-1e181a6a7ebe"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6a33f118-0175-1000-fc84-e8268d095d3b","parent":{"ref":"EID6a33f09a-0175-1000-3858-1e181a6a7ebe"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6a33f118-0175-1000-96b6-9d09dd2f697f","parent":{"ref":"EID6a33f09a-0175-1000-3858-1e181a6a7ebe"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6a33f118-0175-1000-2ef6-afd30567980f","parent":{"ref":"EID6a33f09a-0175-1000-3858-1e181a6a7ebe"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID72ad406b-4727-4260-8cf0-2f626961880f"},{"ref":"EID1a2004ba-170f-4ee4-9279-3dab2aae0ff6"},{"ref":"EIDbb388cbf-4b13-42ab-b93d-8eeb3a6b3d7c"}]},"parent":{"ref":"EID6a33f09a-0175-1000-0bcd-1a0ad1db1ea6"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:16:30Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6a33dfb6-0175-1000-e655-5d01f0a59762"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:16:30Z","duration":126,"status":"PASSED"},{"id":"EID6a33f119-0175-1000-ddd7-abf2f1a6b0eb","testStepResults":{"TestStepResult":[{"id":"EID6a33f119-0175-1000-1e47-e9a2e96d9f2a","parent":{"ref":"EID6a33f119-0175-1000-ddd7-abf2f1a6b0eb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6a33f119-0175-1000-8f03-f5ebc5e822e4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33f1d0-0175-1000-4d9f-b8e35392ea45","parent":{"ref":"EID6a33f119-0175-1000-8f03-f5ebc5e822e4"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6a33f1d0-0175-1000-28b1-5e555bd29473","parent":{"ref":"EID6a33f119-0175-1000-8f03-f5ebc5e822e4"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6a33f1d0-0175-1000-904d-92719bdcc526","parent":{"ref":"EID6a33f119-0175-1000-8f03-f5ebc5e822e4"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6a33f1d0-0175-1000-2607-1341a0514e2a","parent":{"ref":"EID6a33f119-0175-1000-8f03-f5ebc5e822e4"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDfb531a10-4178-4058-8128-87d61622693d"},{"ref":"EID8e93f203-2052-4f4c-9866-d07da7ac2978"},{"ref":"EID2de0247e-bb35-44e5-b6b3-0dce94fdd9d5"}]},"parent":{"ref":"EID6a33f119-0175-1000-ddd7-abf2f1a6b0eb"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:16:30Z","duration":21,"status":"PASSED"},{"id":"EID6a33f1d0-0175-1000-28fb-b8d9b6471c22","attachments":{"attachment":{"ref":"EID4c5038c1-64bc-4da2-9b1b-955ab6547b9f"}},"parent":{"ref":"EID6a33f119-0175-1000-ddd7-abf2f1a6b0eb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/63db16c5-c828-4922-95dd-5db67bc9c203.json"},"startTimestamp":"2020-10-27T13:16:30Z","duration":1,"status":"PASSED"},{"id":"EID6a33f1dd-0175-1000-5aeb-39b5bdd51644","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33f2bc-0175-1000-3784-e5a0de4f0ce3","parent":{"ref":"EID6a33f1dd-0175-1000-5aeb-39b5bdd51644"},"resultedFrom":{"ref":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6a33f2bc-0175-1000-e8c2-a90ffb51390a","parent":{"ref":"EID6a33f1dd-0175-1000-5aeb-39b5bdd51644"},"resultedFrom":{"ref":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6a33f2bc-0175-1000-746a-b3de648f3f6b","parent":{"ref":"EID6a33f1dd-0175-1000-5aeb-39b5bdd51644"},"resultedFrom":{"ref":"EID234062a4-45c2-4013-9038-71b8cc9a7d36"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6a33f2bc-0175-1000-c9ac-69c55e563377","parent":{"ref":"EID6a33f1dd-0175-1000-5aeb-39b5bdd51644"},"resultedFrom":{"ref":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID48ab41c7-fec8-495c-9a64-5406c8c173a9"},{"ref":"EID55080eeb-6aaf-4e92-8a32-1ffcf95a95e9"},{"ref":"EID99b530ea-7e0c-4326-b511-cbca0406ce3e"}]},"parent":{"ref":"EID6a33f119-0175-1000-ddd7-abf2f1a6b0eb"},"resultedFrom":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"startTimestamp":"2020-10-27T13:16:30Z","duration":87,"status":"PASSED"},{"id":"EID6a33f2bf-0175-1000-b2af-a00d83da4b58","attachments":{"attachment":{"ref":"EID94d80e6b-39e0-43e5-aa05-254d4cdca87a"}},"parent":{"ref":"EID6a33f119-0175-1000-ddd7-abf2f1a6b0eb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/18c66972-5d73-4718-8e9c-439d4032a9fe.json"},"startTimestamp":"2020-10-27T13:16:30Z","duration":1,"status":"PASSED"},{"id":"EID6a33f2ca-0175-1000-9669-eb4ee459e41e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33f341-0175-1000-e9b0-b128573fad69","parent":{"ref":"EID6a33f2ca-0175-1000-9669-eb4ee459e41e"},"resultedFrom":{"ref":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6a33f341-0175-1000-88c0-25647dd7664b","parent":{"ref":"EID6a33f2ca-0175-1000-9669-eb4ee459e41e"},"resultedFrom":{"ref":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6a33f341-0175-1000-fdc8-1eed962c1140","parent":{"ref":"EID6a33f2ca-0175-1000-9669-eb4ee459e41e"},"resultedFrom":{"ref":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6a33f341-0175-1000-902d-186af3eefb68","parent":{"ref":"EID6a33f2ca-0175-1000-9669-eb4ee459e41e"},"resultedFrom":{"ref":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe3e8c163-d854-483d-93ca-35a7119da721"},{"ref":"EID1ab9512f-5776-48bb-826b-8d1c24805928"},{"ref":"EID33248b4f-4557-4a37-8650-9bbe046704ca"}]},"parent":{"ref":"EID6a33f119-0175-1000-ddd7-abf2f1a6b0eb"},"resultedFrom":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"startTimestamp":"2020-10-27T13:16:30Z","duration":27,"status":"PASSED"}]},"parent":{"ref":"EID6a33dfb6-0175-1000-e655-5d01f0a59762"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:16:30Z","duration":552,"status":"PASSED"}]},"parent":{"ref":"EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:16:25Z","duration":5003,"status":"PASSED_MANUAL"},{"id":"EID6a33f341-0175-1000-1143-8984d79df369","testCaseResults":{"TestCaseResult":[{"id":"EID6a33f341-0175-1000-0c90-612b18d0a6a2","testStepResults":{"TestStepResult":[{"id":"EID6a33f341-0175-1000-9ccd-96474573df9b","parent":{"ref":"EID6a33f341-0175-1000-0c90-612b18d0a6a2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6a33f342-0175-1000-d11c-d3c48ac25ecc","parent":{"ref":"EID6a33f341-0175-1000-0c90-612b18d0a6a2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:16:30Z","duration":21,"status":"PASSED"},{"id":"EID6a33f342-0175-1000-c014-05d7dd69cf3c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33f392-0175-1000-0cd4-51e3833cfa83","parent":{"ref":"EID6a33f342-0175-1000-c014-05d7dd69cf3c"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6a33f392-0175-1000-5670-977762af6c2a","parent":{"ref":"EID6a33f342-0175-1000-c014-05d7dd69cf3c"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6a33f392-0175-1000-ac2e-5031a5a93a91","parent":{"ref":"EID6a33f342-0175-1000-c014-05d7dd69cf3c"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID041e77ec-17c9-4e4c-9890-be2c41dec8f9"},{"ref":"EIDc29cac1b-d53e-4bf0-b54d-fb621e068634"},{"ref":"EID2bbe9d0a-bfd9-497f-a86d-44da12d4a4f6"}]},"parent":{"ref":"EID6a33f341-0175-1000-0c90-612b18d0a6a2"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:16:30Z","duration":23,"status":"PASSED"},{"id":"EID6a33f392-0175-1000-20ec-4d95c1593bb8","attachments":{"attachment":{"ref":"EID560a2eec-4ae9-459a-a057-ad2fa31eece2"}},"parent":{"ref":"EID6a33f341-0175-1000-0c90-612b18d0a6a2"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:16:30Z","duration":0,"status":"PASSED"},{"id":"EID6a33f39d-0175-1000-7c9c-bf0d25f89696","parent":{"ref":"EID6a33f341-0175-1000-0c90-612b18d0a6a2"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:16:31Z","duration":15,"status":"PASSED"}]},"parent":{"ref":"EID6a33f341-0175-1000-1143-8984d79df369"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:16:30Z","duration":108,"status":"PASSED"},{"id":"EID6a33f3ad-0175-1000-5c59-e7aae88af5f6","testStepResults":{"TestStepResult":[{"id":"EID6a33f3ad-0175-1000-85aa-4a7a74ebafe5","parent":{"ref":"EID6a33f3ad-0175-1000-5c59-e7aae88af5f6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:16:31Z","duration":23,"status":"PASSED"},{"id":"EID6a33f3ad-0175-1000-08bd-a54799598d35","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33f411-0175-1000-97a8-255890928eab","parent":{"ref":"EID6a33f3ad-0175-1000-08bd-a54799598d35"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"},{"id":"EID6a33f411-0175-1000-fc05-a668ab47a9c9","parent":{"ref":"EID6a33f3ad-0175-1000-08bd-a54799598d35"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"},{"id":"EID6a33f411-0175-1000-5c90-d3da31b10d56","parent":{"ref":"EID6a33f3ad-0175-1000-08bd-a54799598d35"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"},{"id":"EID6a33f411-0175-1000-2677-7d0c2c279e10","parent":{"ref":"EID6a33f3ad-0175-1000-08bd-a54799598d35"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"},{"id":"EID6a33f411-0175-1000-5828-a92f04741633","parent":{"ref":"EID6a33f3ad-0175-1000-08bd-a54799598d35"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3aab972c-fbef-49b5-96d5-e36b0470aca6"},{"ref":"EID0d492c25-ad00-42c3-9be5-63127300e7b9"},{"ref":"EIDe2ebcd63-78e9-4ced-85a8-50a3d3a30304"}]},"parent":{"ref":"EID6a33f3ad-0175-1000-5c59-e7aae88af5f6"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:16:31Z","duration":24,"status":"PASSED"}]},"parent":{"ref":"EID6a33f341-0175-1000-1143-8984d79df369"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:16:31Z","duration":100,"status":"PASSED"},{"id":"EID6a33f419-0175-1000-986c-c407245a16b3","testStepResults":{"TestStepResult":[{"id":"EID6a33f419-0175-1000-3fbb-ec81828a9759","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33f4a4-0175-1000-5841-cf14ca110b2b","parent":{"ref":"EID6a33f419-0175-1000-3fbb-ec81828a9759"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"},{"id":"EID6a33f4a4-0175-1000-2365-d928987f50c5","parent":{"ref":"EID6a33f419-0175-1000-3fbb-ec81828a9759"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"},{"id":"EID6a33f4a4-0175-1000-b9f6-c83172b2b287","parent":{"ref":"EID6a33f419-0175-1000-3fbb-ec81828a9759"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID367bf9ac-3336-495f-a3b9-9f5275005e5b"},{"ref":"EID2ef49b7a-82ac-461f-9024-566a38fe1259"},{"ref":"EID651fcca1-db3d-4ea4-acd8-1ca1689c72c3"}]},"parent":{"ref":"EID6a33f419-0175-1000-986c-c407245a16b3"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:16:31Z","duration":47,"status":"PASSED"},{"id":"EID6a33f4a4-0175-1000-b9ca-ee181e5ee0c6","attachments":{"attachment":{"ref":"EID7d8e457a-4e08-499b-8dbf-4f72174136f4"}},"parent":{"ref":"EID6a33f419-0175-1000-986c-c407245a16b3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f3779bf4-fde8-4992-8d34-445f10f7ac23.json"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"},{"id":"EID6a33f4f4-0175-1000-1134-ce2680f0806b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33f5c3-0175-1000-1ee4-40971687b29b","parent":{"ref":"EID6a33f4f4-0175-1000-1134-ce2680f0806b"},"resultedFrom":{"ref":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"},{"id":"EID6a33f5c3-0175-1000-776d-e86714e26e5b","parent":{"ref":"EID6a33f4f4-0175-1000-1134-ce2680f0806b"},"resultedFrom":{"ref":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"},{"id":"EID6a33f5c3-0175-1000-d620-c6344337b35a","parent":{"ref":"EID6a33f4f4-0175-1000-1134-ce2680f0806b"},"resultedFrom":{"ref":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"},{"id":"EID6a33f5c3-0175-1000-43e7-e41c11b71539","parent":{"ref":"EID6a33f4f4-0175-1000-1134-ce2680f0806b"},"resultedFrom":{"ref":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"},{"id":"EID6a33f5c3-0175-1000-6afc-c9f9be45f112","parent":{"ref":"EID6a33f4f4-0175-1000-1134-ce2680f0806b"},"resultedFrom":{"ref":"EID568e315d-81c7-426d-8e06-d90ada499d9c"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDca7f060b-9eef-4db5-ae9b-23e983983c93"},{"ref":"EID60258fa4-f808-469c-a85e-8612ba778234"},{"ref":"EID119a9910-50c3-4c00-b41d-a05d20fd18fe"}]},"parent":{"ref":"EID6a33f419-0175-1000-986c-c407245a16b3"},"resultedFrom":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"startTimestamp":"2020-10-27T13:16:31Z","duration":66,"status":"PASSED"}]},"parent":{"ref":"EID6a33f341-0175-1000-1143-8984d79df369"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:16:31Z","duration":427,"status":"PASSED"},{"id":"EID6a33f5c4-0175-1000-57ef-6e7b968d5b0c","testStepResults":{"TestStepResult":[{"id":"EID6a33f5c4-0175-1000-a07f-00e204b48833","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33f629-0175-1000-b772-0060c614b902","parent":{"ref":"EID6a33f5c4-0175-1000-a07f-00e204b48833"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"},{"id":"EID6a33f629-0175-1000-730d-f1892ba9832e","parent":{"ref":"EID6a33f5c4-0175-1000-a07f-00e204b48833"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"},{"id":"EID6a33f629-0175-1000-1312-6f1866dd5db7","parent":{"ref":"EID6a33f5c4-0175-1000-a07f-00e204b48833"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"},{"id":"EID6a33f629-0175-1000-e807-a3236c239058","parent":{"ref":"EID6a33f5c4-0175-1000-a07f-00e204b48833"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID92cc3f42-14bd-4dc0-a54a-95fb42f4c868"},{"ref":"EIDd26c869d-0cfc-464a-9ced-ab9e0de84660"},{"ref":"EID473e9e8a-814f-48d1-8a4f-50564621a111"}]},"parent":{"ref":"EID6a33f5c4-0175-1000-57ef-6e7b968d5b0c"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:16:31Z","duration":26,"status":"PASSED"},{"id":"EID6a33f629-0175-1000-05b5-3678c511afb7","attachments":{"attachment":{"ref":"EIDd2e9f3ed-ae8f-4a46-b308-1eaf9a606899"}},"parent":{"ref":"EID6a33f5c4-0175-1000-57ef-6e7b968d5b0c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/8ee30acb-5c8a-4205-8874-55ba86bf8a9c.json"},"startTimestamp":"2020-10-27T13:16:31Z","duration":1,"status":"PASSED"},{"id":"EID6a33f650-0175-1000-9eb0-c7aeb8a9b213","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33f67b-0175-1000-41be-d03751e6f441","parent":{"ref":"EID6a33f650-0175-1000-9eb0-c7aeb8a9b213"},"resultedFrom":{"ref":"EIDf99befdc-93e5-4089-8926-af36a5a35494"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"},{"id":"EID6a33f67b-0175-1000-9daf-d56ae2834d2f","parent":{"ref":"EID6a33f650-0175-1000-9eb0-c7aeb8a9b213"},"resultedFrom":{"ref":"EIDe3345203-a8f6-4db5-bf12-814533a4625d"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd581d2c5-2f7b-4368-90ea-793bcb86047e"},{"ref":"EIDcb4c39d0-829d-47fe-aae6-a68a6f27560c"}]},"parent":{"ref":"EID6a33f5c4-0175-1000-57ef-6e7b968d5b0c"},"resultedFrom":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"startTimestamp":"2020-10-27T13:16:31Z","duration":38,"status":"PASSED"},{"id":"EID6a33f67b-0175-1000-c30f-ac78cdab1e4e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33f6f2-0175-1000-f29b-c389d4f8398d","parent":{"ref":"EID6a33f67b-0175-1000-c30f-ac78cdab1e4e"},"resultedFrom":{"ref":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"},{"id":"EID6a33f6f2-0175-1000-276e-9fa8a33209d1","parent":{"ref":"EID6a33f67b-0175-1000-c30f-ac78cdab1e4e"},"resultedFrom":{"ref":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"},{"id":"EID6a33f6f2-0175-1000-5d6d-5e2462eeb905","parent":{"ref":"EID6a33f67b-0175-1000-c30f-ac78cdab1e4e"},"resultedFrom":{"ref":"EID1a1bd393-4cdd-4204-aa58-445458503c79"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"},{"id":"EID6a33f6f2-0175-1000-78cb-d98a4ec4a73f","parent":{"ref":"EID6a33f67b-0175-1000-c30f-ac78cdab1e4e"},"resultedFrom":{"ref":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb"},"startTimestamp":"2020-10-27T13:16:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID7cdb886f-4bef-4025-8590-bd574c844785"},{"ref":"EID07ad5bb6-aef0-438a-b451-c64c9756be5d"},{"ref":"EIDcb61bc0b-8ff9-40a8-a040-9781b295ae09"}]},"parent":{"ref":"EID6a33f5c4-0175-1000-57ef-6e7b968d5b0c"},"resultedFrom":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"startTimestamp":"2020-10-27T13:16:31Z","duration":21,"status":"PASSED"}]},"parent":{"ref":"EID6a33f341-0175-1000-1143-8984d79df369"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:16:31Z","duration":302,"status":"PASSED"},{"id":"EID6a33f6f2-0175-1000-9b1d-656df8377889","testStepResults":{"TestStepResult":{"id":"EID6a33f6f2-0175-1000-38d3-b98fcbd8db50","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33f83d-0175-1000-90a8-ec298235ff8a","parent":{"ref":"EID6a33f6f2-0175-1000-38d3-b98fcbd8db50"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:16:32Z","duration":1,"status":"PASSED"},{"id":"EID6a33f83e-0175-1000-2cea-146aac011707","parent":{"ref":"EID6a33f6f2-0175-1000-38d3-b98fcbd8db50"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:16:32Z","duration":0,"status":"PASSED"},{"id":"EID6a33f83e-0175-1000-ed58-a9600596319a","parent":{"ref":"EID6a33f6f2-0175-1000-38d3-b98fcbd8db50"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:16:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID285a8cc6-d141-4a9c-bd28-797971ef7c37"},{"ref":"EID3c47549c-6660-435b-8fd2-16ba9e10142d"},{"ref":"EIDaa51c5e2-2411-4a22-b4fb-e7459abc7c40"}]},"parent":{"ref":"EID6a33f6f2-0175-1000-9b1d-656df8377889"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:16:31Z","duration":33,"status":"PASSED"}},"parent":{"ref":"EID6a33f341-0175-1000-1143-8984d79df369"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:16:31Z","duration":332,"status":"PASSED"},{"id":"EID6a33f84b-0175-1000-ea1b-bee382eeebf0","testStepResults":{"TestStepResult":{"id":"EID6a33f84b-0175-1000-1fbf-314e6ea5c652","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33f8ad-0175-1000-2b1d-71ed1f5420a8","parent":{"ref":"EID6a33f84b-0175-1000-1fbf-314e6ea5c652"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:16:32Z","duration":0,"status":"PASSED"},{"id":"EID6a33f8ad-0175-1000-27ad-499c31f2db75","parent":{"ref":"EID6a33f84b-0175-1000-1fbf-314e6ea5c652"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:16:32Z","duration":0,"status":"PASSED"},{"id":"EID6a33f8ad-0175-1000-9c4c-5bf1bb2209a2","parent":{"ref":"EID6a33f84b-0175-1000-1fbf-314e6ea5c652"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:16:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb32166ce-ae48-422d-8867-79b15f735faa"},{"ref":"EID6083c48f-8255-43f7-822a-ecadf7431537"},{"ref":"EID5ad554cd-302e-4f5a-b150-4a5fd5fd6797"}]},"parent":{"ref":"EID6a33f84b-0175-1000-ea1b-bee382eeebf0"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:16:32Z","duration":36,"status":"PASSED"}},"parent":{"ref":"EID6a33f341-0175-1000-1143-8984d79df369"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:16:32Z","duration":98,"status":"PASSED"},{"id":"EID6a33f8ad-0175-1000-d79a-ccd3a93f0555","testStepResults":{"TestStepResult":{"id":"EID6a33f8ae-0175-1000-a415-f3750f5f2a27","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33f9b9-0175-1000-1cf5-d10fbfe88175","parent":{"ref":"EID6a33f8ae-0175-1000-a415-f3750f5f2a27"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:16:32Z","duration":0,"status":"PASSED"},{"id":"EID6a33f9b9-0175-1000-3671-ded974c7619e","parent":{"ref":"EID6a33f8ae-0175-1000-a415-f3750f5f2a27"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:16:32Z","duration":0,"status":"PASSED"},{"id":"EID6a33f9b9-0175-1000-7fb1-05f45fe16f6f","parent":{"ref":"EID6a33f8ae-0175-1000-a415-f3750f5f2a27"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:16:32Z","duration":0,"status":"PASSED"},{"id":"EID6a33f9b9-0175-1000-8172-057ce2eb290d","parent":{"ref":"EID6a33f8ae-0175-1000-a415-f3750f5f2a27"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:16:32Z","duration":0,"status":"PASSED"},{"id":"EID6a33f9b9-0175-1000-0185-7dde2f673418","parent":{"ref":"EID6a33f8ae-0175-1000-a415-f3750f5f2a27"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:16:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID5ed31ffb-4026-4b83-bca5-32baa6cad6c7"},{"ref":"EID0a654f8f-a5c5-48af-b1a9-0a29a2d65f69"},{"ref":"EIDb2096171-0091-4946-a20d-b63ec9b19f4e"}]},"parent":{"ref":"EID6a33f8ad-0175-1000-d79a-ccd3a93f0555"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:16:32Z","duration":24,"status":"PASSED"}},"parent":{"ref":"EID6a33f341-0175-1000-1143-8984d79df369"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:16:32Z","duration":268,"status":"PASSED"},{"id":"EID6a33f9b9-0175-1000-149a-1e0c67c6a4df","testStepResults":{"TestStepResult":{"id":"EID6a33f9ba-0175-1000-1beb-565bfe2a6ae1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33fa4b-0175-1000-7df1-4e1252118ee7","parent":{"ref":"EID6a33f9ba-0175-1000-1beb-565bfe2a6ae1"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:16:32Z","duration":0,"status":"PASSED"},{"id":"EID6a33fa4b-0175-1000-c40f-f3ddd0ba097f","parent":{"ref":"EID6a33f9ba-0175-1000-1beb-565bfe2a6ae1"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:16:32Z","duration":0,"status":"PASSED"},{"id":"EID6a33fa4b-0175-1000-7bd5-aed2bd153ca4","parent":{"ref":"EID6a33f9ba-0175-1000-1beb-565bfe2a6ae1"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:16:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe7b4c305-46cb-45da-aa7e-4a6eb0e9715b"},{"ref":"EID46ccd46e-2976-45b4-a2ec-181f7d649cc1"},{"ref":"EIDcfce6ade-4622-401a-8c93-4854ca2b1a1a"}]},"parent":{"ref":"EID6a33f9b9-0175-1000-149a-1e0c67c6a4df"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:16:32Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6a33f341-0175-1000-1143-8984d79df369"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:16:32Z","duration":154,"status":"PASSED"},{"id":"EID6a33fa53-0175-1000-fd47-c4abc10a99ce","testStepResults":{"TestStepResult":{"id":"EID6a33fa53-0175-1000-2ac2-cb56f5e645c6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33fabc-0175-1000-b7e4-bf19051cadf2","parent":{"ref":"EID6a33fa53-0175-1000-2ac2-cb56f5e645c6"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:16:32Z","duration":0,"status":"PASSED"},{"id":"EID6a33fabc-0175-1000-afb9-6bc893b38ef1","parent":{"ref":"EID6a33fa53-0175-1000-2ac2-cb56f5e645c6"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:16:32Z","duration":0,"status":"PASSED"},{"id":"EID6a33fabc-0175-1000-133a-0ef7d753f2bf","parent":{"ref":"EID6a33fa53-0175-1000-2ac2-cb56f5e645c6"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:16:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3440342f-059f-4e5a-9749-30fcfdaae642"},{"ref":"EIDea0f2657-e809-42bf-af22-3c8b9c05c061"},{"ref":"EIDd429abd6-a01e-4cc5-9270-759210ff9f35"}]},"parent":{"ref":"EID6a33fa53-0175-1000-fd47-c4abc10a99ce"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:16:32Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6a33f341-0175-1000-1143-8984d79df369"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:16:32Z","duration":105,"status":"PASSED"},{"id":"EID6a33fabc-0175-1000-0c08-42025fb4bcc0","testStepResults":{"TestStepResult":{"id":"EID6a33fabc-0175-1000-d928-a64ed942845a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33fb2b-0175-1000-1b1a-4b5ed95e530c","parent":{"ref":"EID6a33fabc-0175-1000-d928-a64ed942845a"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:16:32Z","duration":0,"status":"PASSED"},{"id":"EID6a33fb2c-0175-1000-6717-a549dfc26920","parent":{"ref":"EID6a33fabc-0175-1000-d928-a64ed942845a"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:16:32Z","duration":0,"status":"PASSED"},{"id":"EID6a33fb2c-0175-1000-5fe8-fbda5122046d","parent":{"ref":"EID6a33fabc-0175-1000-d928-a64ed942845a"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:16:32Z","duration":0,"status":"PASSED"},{"id":"EID6a33fb2c-0175-1000-9ef6-cd72107156c6","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6a33fabc-0175-1000-d928-a64ed942845a"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:16:32Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDf8e976b5-1e32-471d-a03c-4da395270acf"},{"ref":"EID7e3fa1b3-3bbf-4531-babc-e2fc5e6b7d7a"},{"ref":"EID6e1663f1-ad0a-4ba0-a921-e8d6f87ac307"}]},"parent":{"ref":"EID6a33fabc-0175-1000-0c08-42025fb4bcc0"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:16:32Z","duration":21,"status":"FAILED"}},"parent":{"ref":"EID6a33f341-0175-1000-1143-8984d79df369"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:16:32Z","duration":120,"status":"FAILED"},{"id":"EID6a33fb34-0175-1000-bafd-86581365f600","testStepResults":{"TestStepResult":{"id":"EID6a33fb34-0175-1000-ca18-741e634125c0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33fb9f-0175-1000-74cd-d63ec6c5fb6a","parent":{"ref":"EID6a33fb34-0175-1000-ca18-741e634125c0"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:16:33Z","duration":0,"status":"PASSED"},{"id":"EID6a33fb9f-0175-1000-2293-a829291196e6","parent":{"ref":"EID6a33fb34-0175-1000-ca18-741e634125c0"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:16:33Z","duration":0,"status":"PASSED"},{"id":"EID6a33fb9f-0175-1000-1ff7-0e4b105e0f1d","parent":{"ref":"EID6a33fb34-0175-1000-ca18-741e634125c0"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:16:33Z","duration":0,"status":"PASSED"},{"id":"EID6a33fb9f-0175-1000-85b6-7ee5406e4f55","parent":{"ref":"EID6a33fb34-0175-1000-ca18-741e634125c0"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:16:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9e7be0a5-e43e-40f1-87ca-690b65f237ee"},{"ref":"EIDcae6ab10-9167-4e54-8b14-7d50a8968dd9"},{"ref":"EID287b9517-51f3-4b3b-b562-b50b2b549478"}]},"parent":{"ref":"EID6a33fb34-0175-1000-bafd-86581365f600"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:16:32Z","duration":21,"status":"PASSED"}},"parent":{"ref":"EID6a33f341-0175-1000-1143-8984d79df369"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:16:32Z","duration":107,"status":"PASSED"},{"id":"EID6a33fb9f-0175-1000-aca0-a0a2670d8ada","testStepResults":{"TestStepResult":[{"id":"EID6a33fb9f-0175-1000-5e1b-bc4e5dd62e93","parent":{"ref":"EID6a33fb9f-0175-1000-aca0-a0a2670d8ada"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:16:33Z","duration":0,"status":"PASSED"},{"id":"EID6a33fba0-0175-1000-e770-54251f96e476","parent":{"ref":"EID6a33fb9f-0175-1000-aca0-a0a2670d8ada"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:16:33Z","duration":45,"status":"PASSED"},{"id":"EID6a33fba0-0175-1000-4d76-4a81db9f62f6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33fc00-0175-1000-6c28-cb078f77f2e0","parent":{"ref":"EID6a33fba0-0175-1000-4d76-4a81db9f62f6"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:16:33Z","duration":0,"status":"PASSED"},{"id":"EID6a33fc00-0175-1000-6858-347028dde045","parent":{"ref":"EID6a33fba0-0175-1000-4d76-4a81db9f62f6"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:16:33Z","duration":0,"status":"PASSED"},{"id":"EID6a33fc01-0175-1000-8391-5ea45792ff61","parent":{"ref":"EID6a33fba0-0175-1000-4d76-4a81db9f62f6"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:16:33Z","duration":0,"status":"PASSED"},{"id":"EID6a33fc01-0175-1000-c862-17d04ce81c9f","parent":{"ref":"EID6a33fba0-0175-1000-4d76-4a81db9f62f6"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:16:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd4ccd637-e16a-4335-88c2-0d012faeb99d"},{"ref":"EID63656325-1fe2-48d9-8e32-daeee42de770"},{"ref":"EIDf05dfef6-5464-4877-8323-f6490414abab"}]},"parent":{"ref":"EID6a33fb9f-0175-1000-aca0-a0a2670d8ada"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:16:33Z","duration":21,"status":"PASSED"},{"id":"EID6a33fc01-0175-1000-3edf-648aaa812726","attachments":{"attachment":{"ref":"EIDc83be8c9-3c51-410c-9890-f8397a2c0e1f"}},"parent":{"ref":"EID6a33fb9f-0175-1000-aca0-a0a2670d8ada"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:16:33Z","duration":1,"status":"PASSED"},{"id":"EID6a33fc0e-0175-1000-dea3-42525870379b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33fcf0-0175-1000-85c6-30dba8ead0fb","parent":{"ref":"EID6a33fc0e-0175-1000-dea3-42525870379b"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:16:33Z","duration":0,"status":"PASSED"},{"id":"EID6a33fcf0-0175-1000-c7c1-ee18b3e5efb0","parent":{"ref":"EID6a33fc0e-0175-1000-dea3-42525870379b"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:16:33Z","duration":0,"status":"PASSED"},{"id":"EID6a33fcf0-0175-1000-68d4-69d8b0cb3b59","parent":{"ref":"EID6a33fc0e-0175-1000-dea3-42525870379b"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:16:33Z","duration":0,"status":"PASSED"},{"id":"EID6a33fcf0-0175-1000-2106-516a573809d7","parent":{"ref":"EID6a33fc0e-0175-1000-dea3-42525870379b"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:16:33Z","duration":0,"status":"PASSED"},{"id":"EID6a33fcf0-0175-1000-651a-80b5f75066a2","parent":{"ref":"EID6a33fc0e-0175-1000-dea3-42525870379b"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:16:33Z","duration":0,"status":"PASSED"},{"id":"EID6a33fcf0-0175-1000-a7da-75a04f520f6e","parent":{"ref":"EID6a33fc0e-0175-1000-dea3-42525870379b"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:16:33Z","duration":0,"status":"PASSED"},{"id":"EID6a33fcf0-0175-1000-f97f-63b2b858dfaa","parent":{"ref":"EID6a33fc0e-0175-1000-dea3-42525870379b"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:16:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID224f1cf5-cf18-4513-a4d4-d46590d37966"},{"ref":"EID2111f5f9-f058-4359-90f1-e414adc845f1"},{"ref":"EID90296de1-288f-4614-ab08-9004de34a0d6"}]},"parent":{"ref":"EID6a33fb9f-0175-1000-aca0-a0a2670d8ada"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:16:33Z","duration":39,"status":"PASSED"}]},"parent":{"ref":"EID6a33f341-0175-1000-1143-8984d79df369"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:16:33Z","duration":337,"status":"PASSED"},{"id":"EID6a33fcf0-0175-1000-9ffc-0962e41d865f","testStepResults":{"TestStepResult":[{"id":"EID6a33fcf0-0175-1000-e6e5-bd6c36a52e79","parent":{"ref":"EID6a33fcf0-0175-1000-9ffc-0962e41d865f"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:16:33Z","duration":0,"status":"PASSED"},{"id":"EID6a33fcf0-0175-1000-66bc-a218f49c0781","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33fd91-0175-1000-3395-556f3ceaed4e","parent":{"ref":"EID6a33fcf0-0175-1000-66bc-a218f49c0781"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:16:33Z","duration":0,"status":"PASSED"},{"id":"EID6a33fd91-0175-1000-3e80-209b1821d73e","parent":{"ref":"EID6a33fcf0-0175-1000-66bc-a218f49c0781"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:16:33Z","duration":0,"status":"PASSED"},{"id":"EID6a33fd91-0175-1000-e581-660e9653cbe7","parent":{"ref":"EID6a33fcf0-0175-1000-66bc-a218f49c0781"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:16:33Z","duration":0,"status":"PASSED"},{"id":"EID6a33fd91-0175-1000-b470-2d2c0a0ee475","parent":{"ref":"EID6a33fcf0-0175-1000-66bc-a218f49c0781"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:16:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID91005d1c-9d10-43b5-9f86-1c89fca3d40f"},{"ref":"EID0d5c5aea-1dc8-4359-b741-914cbac3f113"},{"ref":"EIDbdafcc22-f6bb-433f-ad83-c84b9e73d1d6"}]},"parent":{"ref":"EID6a33fcf0-0175-1000-9ffc-0962e41d865f"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:16:33Z","duration":53,"status":"PASSED"},{"id":"EID6a33fd91-0175-1000-c73d-fb775cd302ff","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a33fe23-0175-1000-0f73-e745c4d360a7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a33fff4-0175-1000-24a7-9c274c3536ca","parent":{"ref":"EID6a33fe23-0175-1000-0f73-e745c4d360a7"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:16:34Z","duration":0,"status":"PASSED"},{"id":"EID6a33fff4-0175-1000-7b4c-69d3daeb85bc","parent":{"ref":"EID6a33fe23-0175-1000-0f73-e745c4d360a7"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:16:34Z","duration":0,"status":"PASSED"},{"id":"EID6a33fff4-0175-1000-aed9-6d408fd5ce6f","parent":{"ref":"EID6a33fe23-0175-1000-0f73-e745c4d360a7"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:16:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9bf569d2-8dc7-4155-80af-674ad1b5f32c"},{"ref":"EID0c2e531b-96ad-46ce-88c2-176e4cf54cce"},{"ref":"EIDad0959f4-af02-46c8-af69-ef0a276c3323"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:16:33Z","duration":152,"status":"PASSED"},{"id":"EID6a33fff6-0175-1000-a9da-bded3d8693e8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a340165-0175-1000-ca52-4c3cdf51fb75","parent":{"ref":"EID6a33fff6-0175-1000-a9da-bded3d8693e8"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:16:34Z","duration":0,"status":"PASSED"},{"id":"EID6a340166-0175-1000-01cc-d77d987ee1ff","parent":{"ref":"EID6a33fff6-0175-1000-a9da-bded3d8693e8"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:16:34Z","duration":0,"status":"PASSED"},{"id":"EID6a340166-0175-1000-4fb7-36d24000d4a9","parent":{"ref":"EID6a33fff6-0175-1000-a9da-bded3d8693e8"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:16:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb5fdbf5c-f8c9-4510-955c-ab50623cbd21"},{"ref":"EID2af1acb3-03fe-4f89-ba12-dcfc56892dc3"},{"ref":"EID2f8c887e-4f46-4c47-8d85-fd11132168ab"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:16:34Z","duration":268,"status":"PASSED"},{"id":"EID6a340167-0175-1000-9283-36577623d40f","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3403b3-0175-1000-829d-2fcb54eb1c26","parent":{"ref":"EID6a340167-0175-1000-9283-36577623d40f"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:16:35Z","duration":0,"status":"PASSED"},{"id":"EID6a3403b3-0175-1000-60a4-ff70c538bae3","parent":{"ref":"EID6a340167-0175-1000-9283-36577623d40f"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:16:35Z","duration":0,"status":"PASSED"},{"id":"EID6a3403b3-0175-1000-74fc-f32bd46bf294","parent":{"ref":"EID6a340167-0175-1000-9283-36577623d40f"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:16:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4999d61b-a795-40a9-8528-ad5aa45f86de"},{"ref":"EID1aacfe23-5afd-415a-8a29-f68cb69b2cf0"},{"ref":"EID9948307f-f66f-481a-8e59-70f8d5574f4f"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:16:34Z","duration":212,"status":"PASSED"}]},"parent":{"ref":"EID6a33fcf0-0175-1000-9ffc-0962e41d865f"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:16:33Z","duration":1570,"status":"PASSED"},{"id":"EID6a3403b4-0175-1000-b656-fea642de51a0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a340450-0175-1000-2e03-b001195ffc18","parent":{"ref":"EID6a3403b4-0175-1000-b656-fea642de51a0"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:16:35Z","duration":0,"status":"PASSED"},{"id":"EID6a340450-0175-1000-9f02-e0f53442ec39","parent":{"ref":"EID6a3403b4-0175-1000-b656-fea642de51a0"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:16:35Z","duration":0,"status":"PASSED"},{"id":"EID6a340450-0175-1000-ed42-59c79dcd317a","parent":{"ref":"EID6a3403b4-0175-1000-b656-fea642de51a0"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:16:35Z","duration":0,"status":"PASSED"},{"id":"EID6a340450-0175-1000-ffb7-2ec8d8893659","parent":{"ref":"EID6a3403b4-0175-1000-b656-fea642de51a0"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:16:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd3f571d4-baf8-49e5-856d-0209f0bb074a"},{"ref":"EID761e1c00-e165-40fa-a008-d84d579d9898"},{"ref":"EID6d4ca930-4cc2-466f-aedc-59ada18c95aa"}]},"parent":{"ref":"EID6a33fcf0-0175-1000-9ffc-0962e41d865f"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:16:35Z","duration":22,"status":"PASSED"}]},"parent":{"ref":"EID6a33f341-0175-1000-1143-8984d79df369"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:16:33Z","duration":1888,"status":"PASSED"},{"id":"EID6a340450-0175-1000-9338-7d7a95de8a7a","testStepResults":{"TestStepResult":{"id":"EID6a340450-0175-1000-8446-b2877ddde6a2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3404e9-0175-1000-eb0e-9a73edb2b7ff","parent":{"ref":"EID6a340450-0175-1000-8446-b2877ddde6a2"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:16:35Z","duration":0,"status":"PASSED"},{"id":"EID6a3404e9-0175-1000-f8be-a28066a2025f","parent":{"ref":"EID6a340450-0175-1000-8446-b2877ddde6a2"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:16:35Z","duration":0,"status":"PASSED"},{"id":"EID6a3404ea-0175-1000-2152-a407fac75542","parent":{"ref":"EID6a340450-0175-1000-8446-b2877ddde6a2"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:16:35Z","duration":0,"status":"PASSED"},{"id":"EID6a3404ea-0175-1000-a248-ac63dee3f5e9","parent":{"ref":"EID6a340450-0175-1000-8446-b2877ddde6a2"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:16:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID06e22b84-d2d4-447e-a0e5-f42cd6cade0c"},{"ref":"EIDc51c15bd-b022-4a0e-a7bf-d21bedde1239"},{"ref":"EID29b1fec6-b727-4c0d-9b83-32393d47cfdf"}]},"parent":{"ref":"EID6a340450-0175-1000-9338-7d7a95de8a7a"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:16:35Z","duration":22,"status":"PASSED"}},"parent":{"ref":"EID6a33f341-0175-1000-1143-8984d79df369"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:16:35Z","duration":154,"status":"PASSED"}]},"parent":{"ref":"EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:16:30Z","duration":4521,"status":"FAILED"},{"id":"EID6a3404ea-0175-1000-e8a1-3c207b17d0d4","testCaseResults":{"TestCaseResult":[{"id":"EID6a3404ea-0175-1000-ec5d-c3f846a74f4c","testStepResults":{"TestStepResult":[{"id":"EID6a3404ea-0175-1000-930f-8307e75361e5","parent":{"ref":"EID6a3404ea-0175-1000-ec5d-c3f846a74f4c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:16:35Z","duration":223,"status":"PASSED"},{"id":"EID6a3404ea-0175-1000-f6ca-a905af1aff29","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3405c1-0175-1000-4ac1-9086b2268dc2","parent":{"ref":"EID6a3404ea-0175-1000-f6ca-a905af1aff29"},"resultedFrom":{"ref":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400"},"startTimestamp":"2020-10-27T13:16:35Z","duration":0,"status":"PASSED"},{"id":"EID6a3405c1-0175-1000-23a2-5894907843dd","parent":{"ref":"EID6a3404ea-0175-1000-f6ca-a905af1aff29"},"resultedFrom":{"ref":"EID8c018d06-fce0-4029-9c58-62e544d85b07"},"startTimestamp":"2020-10-27T13:16:35Z","duration":0,"status":"PASSED"},{"id":"EID6a3405c1-0175-1000-c646-ea2f1359019f","parent":{"ref":"EID6a3404ea-0175-1000-f6ca-a905af1aff29"},"resultedFrom":{"ref":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8"},"startTimestamp":"2020-10-27T13:16:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8fc72e82-a682-4b8a-aadc-897f87422e53"},{"ref":"EID4db1c619-9e34-4192-8051-a79adf99cb72"},{"ref":"EID86d545b4-0eac-49b6-8dd7-33ad49c5eac3"}]},"parent":{"ref":"EID6a3404ea-0175-1000-ec5d-c3f846a74f4c"},"resultedFrom":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"startTimestamp":"2020-10-27T13:16:35Z","duration":22,"status":"PASSED"},{"id":"EID6a3405d4-0175-1000-1d49-dd59bd42a2e2","attachments":{"attachment":{"ref":"EIDb5c32b53-a0c2-4cbc-99fd-66c42c953eaf"}},"parent":{"ref":"EID6a3404ea-0175-1000-ec5d-c3f846a74f4c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/ca77c4d7-4c4f-43b6-ba39-28644250d284.json"},"startTimestamp":"2020-10-27T13:16:35Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a3404ea-0175-1000-e8a1-3c207b17d0d4"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:16:35Z","duration":251,"status":"PASSED"},{"id":"EID6a3405e5-0175-1000-f517-8af52248c496","testStepResults":{"TestStepResult":[{"id":"EID6a3405e5-0175-1000-5f8c-336da0439475","parent":{"ref":"EID6a3405e5-0175-1000-f517-8af52248c496"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:16:35Z","duration":223,"status":"PASSED"},{"id":"EID6a3405e5-0175-1000-f321-5002c45805ef","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3406ea-0175-1000-825c-33407b22c579","parent":{"ref":"EID6a3405e5-0175-1000-f321-5002c45805ef"},"resultedFrom":{"ref":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4"},"startTimestamp":"2020-10-27T13:16:35Z","duration":0,"status":"PASSED"},{"id":"EID6a3406ea-0175-1000-f0fe-decc51730ba1","parent":{"ref":"EID6a3405e5-0175-1000-f321-5002c45805ef"},"resultedFrom":{"ref":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f"},"startTimestamp":"2020-10-27T13:16:35Z","duration":0,"status":"PASSED"},{"id":"EID6a3406ea-0175-1000-f4d5-b7cc5e26139b","parent":{"ref":"EID6a3405e5-0175-1000-f321-5002c45805ef"},"resultedFrom":{"ref":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7"},"startTimestamp":"2020-10-27T13:16:35Z","duration":0,"status":"PASSED"},{"id":"EID6a3406ea-0175-1000-d66e-58608f280519","parent":{"ref":"EID6a3405e5-0175-1000-f321-5002c45805ef"},"resultedFrom":{"ref":"EID0ca5302c-48aa-4097-912f-266ed6f51e05"},"startTimestamp":"2020-10-27T13:16:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID4cac293c-9ad2-4a05-a23d-33e82c16e0f8"},{"ref":"EID70874a4e-0a9c-4eae-8864-c3efa311f805"},{"ref":"EIDf3edd5ac-6cbd-428f-885c-4d44b0ab5329"}]},"parent":{"ref":"EID6a3405e5-0175-1000-f517-8af52248c496"},"resultedFrom":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"startTimestamp":"2020-10-27T13:16:35Z","duration":160,"status":"PASSED"}]},"parent":{"ref":"EID6a3404ea-0175-1000-e8a1-3c207b17d0d4"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:16:35Z","duration":261,"status":"PASSED"},{"id":"EID6a3406ea-0175-1000-926e-740becb2a7b5","testStepResults":{"TestStepResult":[{"id":"EID6a3406ea-0175-1000-f72f-6e018a22c639","parent":{"ref":"EID6a3406ea-0175-1000-926e-740becb2a7b5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:16:35Z","duration":223,"status":"PASSED"},{"id":"EID6a3406ea-0175-1000-465a-2baf57dad277","parent":{"ref":"EID6a3406ea-0175-1000-926e-740becb2a7b5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/005c256d-3874-4590-b962-a215634d34ea.json"},"startTimestamp":"2020-10-27T13:16:35Z","duration":0,"status":"PASSED"},{"id":"EID6a3406ea-0175-1000-d4d5-aaf7f27aaea3","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a340828-0175-1000-812d-4307ceda8f44","parent":{"ref":"EID6a3406ea-0175-1000-d4d5-aaf7f27aaea3"},"resultedFrom":{"ref":"EIDc839657a-0d7c-49d9-8665-ee32690350db"},"startTimestamp":"2020-10-27T13:16:36Z","duration":0,"status":"PASSED"},{"id":"EID6a340828-0175-1000-4395-07a081614136","parent":{"ref":"EID6a3406ea-0175-1000-d4d5-aaf7f27aaea3"},"resultedFrom":{"ref":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede"},"startTimestamp":"2020-10-27T13:16:36Z","duration":0,"status":"PASSED"},{"id":"EID6a340828-0175-1000-8603-da48a71ed159","parent":{"ref":"EID6a3406ea-0175-1000-d4d5-aaf7f27aaea3"},"resultedFrom":{"ref":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8"},"startTimestamp":"2020-10-27T13:16:36Z","duration":0,"status":"PASSED"},{"id":"EID6a340828-0175-1000-59dc-19cbeaa42fd8","parent":{"ref":"EID6a3406ea-0175-1000-d4d5-aaf7f27aaea3"},"resultedFrom":{"ref":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f"},"startTimestamp":"2020-10-27T13:16:36Z","duration":0,"status":"PASSED"},{"id":"EID6a340828-0175-1000-e622-e7efb891ff34","parent":{"ref":"EID6a3406ea-0175-1000-d4d5-aaf7f27aaea3"},"resultedFrom":{"ref":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3"},"startTimestamp":"2020-10-27T13:16:36Z","duration":0,"status":"PASSED"},{"id":"EID6a340828-0175-1000-ebf0-76474a5ddf76","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}}},"parent":{"ref":"EID6a3406ea-0175-1000-d4d5-aaf7f27aaea3"},"resultedFrom":{"ref":"EID793e1bf6-1c47-4819-b552-1be93e488ee8"},"startTimestamp":"2020-10-27T13:16:36Z","duration":0,"status":"FAILED"},{"id":"EID6a340828-0175-1000-f76c-067f91aa4032","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6a3406ea-0175-1000-d4d5-aaf7f27aaea3"},"resultedFrom":{"ref":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424"},"startTimestamp":"2020-10-27T13:16:36Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDdfda3dc8-b930-4ec1-b66b-418c4031aa62"},{"ref":"EID813786cb-6a24-4eea-badf-6992c39d3b86"},{"ref":"EIDdb60afe0-da7e-4d0d-bbb9-5c302fe7b3ea"}]},"parent":{"ref":"EID6a3406ea-0175-1000-926e-740becb2a7b5"},"resultedFrom":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"startTimestamp":"2020-10-27T13:16:35Z","duration":128,"status":"FAILED"}]},"parent":{"ref":"EID6a3404ea-0175-1000-e8a1-3c207b17d0d4"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:16:35Z","duration":318,"status":"FAILED"},{"id":"EID6a340829-0175-1000-5af7-17b57b5ba848","testStepResults":{"TestStepResult":[{"id":"EID6a340829-0175-1000-b253-e973cf5c807a","parent":{"ref":"EID6a340829-0175-1000-5af7-17b57b5ba848"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:16:36Z","duration":223,"status":"PASSED"},{"id":"EID6a340829-0175-1000-ab1b-dea46d715659","parent":{"ref":"EID6a340829-0175-1000-5af7-17b57b5ba848"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0fe76109-9653-4fd6-b903-c78ee734dc9f.json"},"startTimestamp":"2020-10-27T13:16:36Z","duration":0,"status":"PASSED"},{"id":"EID6a340829-0175-1000-6a96-ad6fc9e14f1a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a340b6c-0175-1000-f428-7edd5065ae46","parent":{"ref":"EID6a340829-0175-1000-6a96-ad6fc9e14f1a"},"resultedFrom":{"ref":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c"},"startTimestamp":"2020-10-27T13:16:37Z","duration":0,"status":"PASSED"},{"id":"EID6a340b6c-0175-1000-f1e4-77b90666fa6e","parent":{"ref":"EID6a340829-0175-1000-6a96-ad6fc9e14f1a"},"resultedFrom":{"ref":"EIDab501b29-1391-4093-87bf-5a67b23a451b"},"startTimestamp":"2020-10-27T13:16:37Z","duration":0,"status":"PASSED"},{"id":"EID6a340b6c-0175-1000-b40c-6dfe209bfa45","parent":{"ref":"EID6a340829-0175-1000-6a96-ad6fc9e14f1a"},"resultedFrom":{"ref":"EIDf244d763-7392-49c7-aedc-74703bd8dcca"},"startTimestamp":"2020-10-27T13:16:37Z","duration":0,"status":"PASSED"},{"id":"EID6a340b6c-0175-1000-4874-18e7399e8ec8","parent":{"ref":"EID6a340829-0175-1000-6a96-ad6fc9e14f1a"},"resultedFrom":{"ref":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95"},"startTimestamp":"2020-10-27T13:16:37Z","duration":0,"status":"PASSED"},{"id":"EID6a340b6c-0175-1000-88dc-a746025ae369","parent":{"ref":"EID6a340829-0175-1000-6a96-ad6fc9e14f1a"},"resultedFrom":{"ref":"EIDa3d96fc4-8656-44a2-a219-261052291d3f"},"startTimestamp":"2020-10-27T13:16:37Z","duration":0,"status":"PASSED"},{"id":"EID6a340b6c-0175-1000-6410-a6d8c5c79b4d","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}},"parent":{"ref":"EID6a340829-0175-1000-6a96-ad6fc9e14f1a"},"resultedFrom":{"ref":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f"},"startTimestamp":"2020-10-27T13:16:37Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID9cd48d16-9fe8-4084-aeb8-d33f0f0ccbd2"},{"ref":"EID79223dc9-864b-44cb-9a9f-0be8aab10ef6"},{"ref":"EIDbfd8ad98-b632-46ac-a02e-279f887376ee"}]},"parent":{"ref":"EID6a340829-0175-1000-5af7-17b57b5ba848"},"resultedFrom":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"startTimestamp":"2020-10-27T13:16:36Z","duration":78,"status":"FAILED"}]},"parent":{"ref":"EID6a3404ea-0175-1000-e8a1-3c207b17d0d4"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:16:36Z","duration":1227,"status":"FAILED"},{"id":"EID6a340cf5-0175-1000-a8eb-58ae8fd11b23","testStepResults":{"TestStepResult":[{"id":"EID6a340cf5-0175-1000-5612-41e84ab8e11d","parent":{"ref":"EID6a340cf5-0175-1000-a8eb-58ae8fd11b23"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:16:37Z","duration":238,"status":"PASSED"},{"id":"EID6a340d04-0175-1000-b104-cd4240fc990b","messages":{"message":[{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]"}]}},{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"os:Query"},{"token":"xpath","$":"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]"}]}}]},"attachments":{"attachment":[{"ref":"EID0987d777-7f90-44bd-9d91-c39a1d138b5c"},{"ref":"EID2f3961e1-9f8b-4fd5-8a17-357813004dd0"},{"ref":"EID795b778a-23ff-4637-9056-c3382c8f76d9"},{"ref":"EID6918ba72-2a58-4a06-9b8e-b033783df252"},{"ref":"EID9a6b040b-414a-42af-8125-e43de435e306"},{"ref":"EIDfc4bd6d2-dcf2-43fd-b63f-f5ee108607a3"},{"ref":"EID5ed3d516-f800-40c4-8221-1d8c64566f88"},{"ref":"EID8eda01de-4ab3-4953-a5b0-aa47f52f1fea"},{"ref":"EIDc3bc6794-280f-42a7-a6e6-8d04b550f83f"},{"ref":"EIDfcbbdeed-fa8c-4503-b411-72dbcdced16f"},{"ref":"EID1bb46a44-a8e2-4eb4-bcaa-39a2c768a45e"},{"ref":"EID49ab203b-21c7-43c4-822e-f8cd003fa29c"},{"ref":"EID63aae143-215c-4ad0-9a17-fb0862354a28"},{"ref":"EID76c33a9e-841b-4423-b0fa-bcc42bfbfe13"},{"ref":"EID69f60b6a-6ad9-4109-b027-098e9d4d4a51"}]},"parent":{"ref":"EID6a340cf5-0175-1000-a8eb-58ae8fd11b23"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/b7539b87-0287-452d-a49a-e1c7c342eb8d.json"},"startTimestamp":"2020-10-27T13:16:37Z","duration":689,"status":"SKIPPED"}]},"parent":{"ref":"EID6a3404ea-0175-1000-e8a1-3c207b17d0d4"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:16:37Z","duration":1177,"status":"SKIPPED"},{"id":"EID6a34119d-0175-1000-3301-795e45a250b6","testStepResults":{"TestStepResult":[{"id":"EID6a34119d-0175-1000-43e0-28a5dba170e0","parent":{"ref":"EID6a34119d-0175-1000-3301-795e45a250b6"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:16:38Z","duration":223,"status":"PASSED"},{"id":"EID6a34119d-0175-1000-46a8-0328b326f999","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a341239-0175-1000-7fa7-c7f920c984cd","parent":{"ref":"EID6a34119d-0175-1000-46a8-0328b326f999"},"resultedFrom":{"ref":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85"},"startTimestamp":"2020-10-27T13:16:38Z","duration":0,"status":"PASSED"},{"id":"EID6a341239-0175-1000-fc48-bacadf33d02e","parent":{"ref":"EID6a34119d-0175-1000-46a8-0328b326f999"},"resultedFrom":{"ref":"EIDde93e839-9029-4c1b-a47b-950437792241"},"startTimestamp":"2020-10-27T13:16:38Z","duration":0,"status":"PASSED"},{"id":"EID6a341239-0175-1000-9866-5be1f51697ed","parent":{"ref":"EID6a34119d-0175-1000-46a8-0328b326f999"},"resultedFrom":{"ref":"EID2efd175c-e24e-4924-9bdd-13237591a99f"},"startTimestamp":"2020-10-27T13:16:38Z","duration":0,"status":"PASSED"},{"id":"EID6a341239-0175-1000-4fe4-1b93e4e26de4","parent":{"ref":"EID6a34119d-0175-1000-46a8-0328b326f999"},"resultedFrom":{"ref":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168"},"startTimestamp":"2020-10-27T13:16:38Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDdd61725b-ebe0-47db-98f4-cd0aec1ecefb"},{"ref":"EIDa1c9548c-044c-4513-876c-c28ca3c6dece"},{"ref":"EIDc6104f42-56a5-4830-b3e2-9efc08bcc284"}]},"parent":{"ref":"EID6a34119d-0175-1000-3301-795e45a250b6"},"resultedFrom":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"startTimestamp":"2020-10-27T13:16:38Z","duration":78,"status":"PASSED"}]},"parent":{"ref":"EID6a3404ea-0175-1000-e8a1-3c207b17d0d4"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:16:38Z","duration":156,"status":"PASSED"},{"id":"EID6a341239-0175-1000-5d63-0fe60dc48511","testStepResults":{"TestStepResult":[{"id":"EID6a341239-0175-1000-ea0d-aa1314052f9c","parent":{"ref":"EID6a341239-0175-1000-5d63-0fe60dc48511"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:16:38Z","duration":223,"status":"PASSED"},{"id":"EID6a341239-0175-1000-1548-52fac5d19dc0","parent":{"ref":"EID6a341239-0175-1000-5d63-0fe60dc48511"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a0d3ba8-34c6-44b5-881b-e352ea3d6db6.json"},"startTimestamp":"2020-10-27T13:16:38Z","duration":0,"status":"PASSED"},{"id":"EID6a34123a-0175-1000-372a-00c963ec5647","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3412e5-0175-1000-c696-155a719f757e","parent":{"ref":"EID6a34123a-0175-1000-372a-00c963ec5647"},"resultedFrom":{"ref":"EID8cb55602-5705-4d92-8d35-08732f19ae81"},"startTimestamp":"2020-10-27T13:16:39Z","duration":0,"status":"PASSED"},{"id":"EID6a3412e5-0175-1000-d434-742011ca0dcd","parent":{"ref":"EID6a34123a-0175-1000-372a-00c963ec5647"},"resultedFrom":{"ref":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc"},"startTimestamp":"2020-10-27T13:16:39Z","duration":0,"status":"PASSED"},{"id":"EID6a3412e5-0175-1000-9899-8f9923be9d51","parent":{"ref":"EID6a34123a-0175-1000-372a-00c963ec5647"},"resultedFrom":{"ref":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67"},"startTimestamp":"2020-10-27T13:16:39Z","duration":0,"status":"PASSED"},{"id":"EID6a3412e5-0175-1000-b9a6-819b6f157e30","parent":{"ref":"EID6a34123a-0175-1000-372a-00c963ec5647"},"resultedFrom":{"ref":"EID6135b42e-8137-40d5-902b-5ff839d143e2"},"startTimestamp":"2020-10-27T13:16:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID53e8804a-fc88-4b54-9910-b197a48ee2e9"},{"ref":"EID920a8a2a-5fa6-4e0b-8344-79ae217b07cd"},{"ref":"EIDb82a615c-4633-46ec-a899-f9de59b11821"}]},"parent":{"ref":"EID6a341239-0175-1000-5d63-0fe60dc48511"},"resultedFrom":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"startTimestamp":"2020-10-27T13:16:38Z","duration":81,"status":"PASSED"},{"id":"EID6a3412e5-0175-1000-ba31-e6f7efbc1380","attachments":{"attachment":{"ref":"EIDad294572-51ec-4f74-b17b-776568115910"}},"parent":{"ref":"EID6a341239-0175-1000-5d63-0fe60dc48511"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/198ca8bf-9df4-4d1f-bc79-4908339a53d6.json"},"startTimestamp":"2020-10-27T13:16:39Z","duration":1,"status":"PASSED"},{"id":"EID6a3412f0-0175-1000-400a-7e4d07ab4af1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3412fe-0175-1000-f84a-42f9e7ef6b9e","parent":{"ref":"EID6a3412f0-0175-1000-400a-7e4d07ab4af1"},"resultedFrom":{"ref":"EID69821145-bef3-41af-adfe-226eaf86cd9a"},"startTimestamp":"2020-10-27T13:16:39Z","duration":0,"status":"PASSED"},{"id":"EID6a3412fe-0175-1000-c466-388e9a6c24b2","parent":{"ref":"EID6a3412f0-0175-1000-400a-7e4d07ab4af1"},"resultedFrom":{"ref":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b"},"startTimestamp":"2020-10-27T13:16:39Z","duration":0,"status":"PASSED"},{"id":"EID6a3412fe-0175-1000-8b67-283735b4f2c6","parent":{"ref":"EID6a3412f0-0175-1000-400a-7e4d07ab4af1"},"resultedFrom":{"ref":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6"},"startTimestamp":"2020-10-27T13:16:39Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID23e9eb8d-99d3-4b93-8002-686781c45ee1"},{"ref":"EID350ae5eb-8e91-4356-8878-b92ad1e51c54"}]},"parent":{"ref":"EID6a341239-0175-1000-5d63-0fe60dc48511"},"resultedFrom":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"startTimestamp":"2020-10-27T13:16:39Z","duration":0,"status":"PASSED"}]},"parent":{"ref":"EID6a3404ea-0175-1000-e8a1-3c207b17d0d4"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:16:38Z","duration":197,"status":"PASSED"}]},"parent":{"ref":"EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:16:35Z","duration":3604,"status":"FAILED"}]},"attachments":{"Attachment":[{"type":"ServiceEndpoint","id":"EID72d422f9-e269-4d8e-b7cf-d5eaae40190f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDc38d8040-3540-497f-a342-392e9107efa6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDc38d8040-3540-497f-a342-392e9107efa6"}},{"type":"GetParameter","id":"EID2f4662dd-772c-4823-8407-e63fb4710548","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID3aab972c-fbef-49b5-96d5-e36b0470aca6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceEndpoint","id":"EID285a8cc6-d141-4a9c-bd28-797971ef7c37","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceEndpoint","id":"EIDfb531a10-4178-4058-8128-87d61622693d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID287b9517-51f3-4b3b-b562-b50b2b549478","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceResponse","id":"EID6083c48f-8255-43f7-822a-ecadf7431537","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID6083c48f-8255-43f7-822a-ecadf7431537"}},{"type":"ServiceEndpoint","id":"EID06e22b84-d2d4-447e-a0e5-f42cd6cade0c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"Message","id":"EID63aae143-215c-4ad0-9a17-fb0862354a28","label":"Message.13","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID63aae143-215c-4ad0-9a17-fb0862354a28"}},{"type":"ServiceEndpoint","id":"EIDd4ccd637-e16a-4335-88c2-0d012faeb99d","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDdfb9a129-7cdb-4225-9fbe-d9b4ca4febb0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID920a8a2a-5fa6-4e0b-8344-79ae217b07cd","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID920a8a2a-5fa6-4e0b-8344-79ae217b07cd"}},{"type":"Message","id":"EID8ce6c1fe-3558-4281-9e23-ff162a355faf","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID8ce6c1fe-3558-4281-9e23-ff162a355faf"}},{"type":"ServiceResponse","id":"EID7e3fa1b3-3bbf-4531-babc-e2fc5e6b7d7a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID7e3fa1b3-3bbf-4531-babc-e2fc5e6b7d7a"}},{"type":"ServiceResponse","id":"EID60258fa4-f808-469c-a85e-8612ba778234","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID60258fa4-f808-469c-a85e-8612ba778234"}},{"type":"ServiceResponse","id":"EID9435adae-b779-43aa-9654-55ccf3ec8476","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID9435adae-b779-43aa-9654-55ccf3ec8476"}},{"type":"Message","id":"EID9a6b040b-414a-42af-8125-e43de435e306","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID9a6b040b-414a-42af-8125-e43de435e306"}},{"type":"Message","id":"EIDef198d0d-6856-410d-b531-a87ea72b82f4","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDef198d0d-6856-410d-b531-a87ea72b82f4"}},{"type":"Message","id":"EID4c5038c1-64bc-4da2-9b1b-955ab6547b9f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID4c5038c1-64bc-4da2-9b1b-955ab6547b9f"}},{"type":"GetParameter","id":"EIDb2096171-0091-4946-a20d-b63ec9b19f4e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"Message","id":"EIDfa7eb7de-5d52-4c69-aa29-ce75b5fce292","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDfa7eb7de-5d52-4c69-aa29-ce75b5fce292"}},{"type":"Message","id":"EID2160fb84-e12e-4977-8f79-26b35f43fccb","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID2160fb84-e12e-4977-8f79-26b35f43fccb"}},{"type":"ServiceEndpoint","id":"EIDe382c0d2-2cec-4c82-8eb4-4fe1184b7224","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID7d8e457a-4e08-499b-8dbf-4f72174136f4","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID7d8e457a-4e08-499b-8dbf-4f72174136f4"}},{"type":"Message","id":"EIDd2e9f3ed-ae8f-4a46-b308-1eaf9a606899","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDd2e9f3ed-ae8f-4a46-b308-1eaf9a606899"}},{"type":"GetParameter","id":"EID6d4ca930-4cc2-466f-aedc-59ada18c95aa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"Message","id":"EID5ed3d516-f800-40c4-8221-1d8c64566f88","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID5ed3d516-f800-40c4-8221-1d8c64566f88"}},{"type":"Message","id":"EIDb5c32b53-a0c2-4cbc-99fd-66c42c953eaf","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDb5c32b53-a0c2-4cbc-99fd-66c42c953eaf"}},{"type":"Message","id":"EID69f60b6a-6ad9-4109-b027-098e9d4d4a51","label":"Message.15","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID69f60b6a-6ad9-4109-b027-098e9d4d4a51"}},{"type":"ServiceEndpoint","id":"EIDd3f571d4-baf8-49e5-856d-0209f0bb074a","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceResponse","id":"EID0a22d1c3-4751-421e-8941-cf5bae52abac","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID0a22d1c3-4751-421e-8941-cf5bae52abac"}},{"type":"ServiceEndpoint","id":"EID3440342f-059f-4e5a-9749-30fcfdaae642","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceEndpoint","id":"EIDdfda3dc8-b930-4ec1-b66b-418c4031aa62","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDf44ea852-ed6d-45f3-8df7-19efba1423b0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID90296de1-288f-4614-ab08-9004de34a0d6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"GetParameter","id":"EIDb99227aa-26dd-4236-83eb-13547e736b09","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDcb61bc0b-8ff9-40a8-a040-9781b295ae09","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"GetParameter","id":"EID651fcca1-db3d-4ea4-acd8-1ca1689c72c3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceResponse","id":"EID0d5c5aea-1dc8-4359-b741-914cbac3f113","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID0d5c5aea-1dc8-4359-b741-914cbac3f113"}},{"type":"GetParameter","id":"EIDb37d9ef1-3e3d-4807-9f9d-dfc7fbeb9a58","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID8e93f203-2052-4f4c-9866-d07da7ac2978","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID8e93f203-2052-4f4c-9866-d07da7ac2978"}},{"type":"GetParameter","id":"EID2053fe22-a710-446a-b020-a8ed9f2e5e91","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID2bbe9d0a-bfd9-497f-a86d-44da12d4a4f6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDca7f060b-9eef-4db5-ae9b-23e983983c93","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceEndpoint","id":"EID6df88ae3-d274-45f1-b136-21a61e7db59f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID813786cb-6a24-4eea-badf-6992c39d3b86","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID813786cb-6a24-4eea-badf-6992c39d3b86"}},{"type":"GetParameter","id":"EIDfdb8a950-cc85-4106-834c-74cc3f3f55cd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID76806596-14ff-4872-88f4-bba16b926a34","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID76806596-14ff-4872-88f4-bba16b926a34"}},{"type":"Message","id":"EIDfb385fd7-b575-4e37-a398-0a4c526b4559","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDfb385fd7-b575-4e37-a398-0a4c526b4559"}},{"type":"GetParameter","id":"EIDbdafcc22-f6bb-433f-ad83-c84b9e73d1d6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"Message","id":"EID074f3fcc-a304-4836-877a-f4abe2c91625","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID074f3fcc-a304-4836-877a-f4abe2c91625"}},{"type":"Message","id":"EID38a4fcec-db2b-4bfb-bea1-e182b424b344","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID38a4fcec-db2b-4bfb-bea1-e182b424b344"}},{"type":"GetParameter","id":"EID119a9910-50c3-4c00-b41d-a05d20fd18fe","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"Message","id":"EID6863071d-1387-453c-a6db-20dc5402b60f","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID6863071d-1387-453c-a6db-20dc5402b60f"}},{"type":"ServiceResponse","id":"EIDd0c01f99-0619-4cb3-9899-eefb96b81a50","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDd0c01f99-0619-4cb3-9899-eefb96b81a50"}},{"type":"ServiceEndpoint","id":"EID8fc72e82-a682-4b8a-aadc-897f87422e53","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID9e7be0a5-e43e-40f1-87ca-690b65f237ee","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"Message","id":"EID8eda01de-4ab3-4953-a5b0-aa47f52f1fea","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID8eda01de-4ab3-4953-a5b0-aa47f52f1fea"}},{"type":"GetParameter","id":"EID58ca2763-624e-4fd2-b655-3cf2bd730b94","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID189dd9e2-72bc-46dd-8270-dff59c6379e4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDb82a615c-4633-46ec-a899-f9de59b11821","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID48ab41c7-fec8-495c-9a64-5406c8c173a9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L2Nzdw=="},{"type":"GetParameter","id":"EID7a8d7805-8379-4dee-a447-6ce663dbad30","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDdb60afe0-da7e-4d0d-bbb9-5c302fe7b3ea","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EIDd7b7c929-21ae-42b8-ae4b-18be9469c4cd","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDd7b7c929-21ae-42b8-ae4b-18be9469c4cd"}},{"type":"ServiceResponse","id":"EID761e1c00-e165-40fa-a008-d84d579d9898","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID761e1c00-e165-40fa-a008-d84d579d9898"}},{"type":"Message","id":"EID2010cc1e-680e-487e-9843-63b19ecbff69","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID2010cc1e-680e-487e-9843-63b19ecbff69"}},{"type":"ServiceResponse","id":"EIDa1c9548c-044c-4513-876c-c28ca3c6dece","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDa1c9548c-044c-4513-876c-c28ca3c6dece"}},{"type":"ServiceResponse","id":"EIDe6281bfd-c0f7-4531-85a8-7785761e6b71","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDe6281bfd-c0f7-4531-85a8-7785761e6b71"}},{"type":"Message","id":"EIDfc4bd6d2-dcf2-43fd-b63f-f5ee108607a3","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDfc4bd6d2-dcf2-43fd-b63f-f5ee108607a3"}},{"type":"GetParameter","id":"EID350ae5eb-8e91-4356-8878-b92ad1e51c54","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"Message","id":"EID13e4c113-2b7c-4eb7-bfab-6aee024f2c27","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID13e4c113-2b7c-4eb7-bfab-6aee024f2c27"}},{"type":"ServiceEndpoint","id":"EID23e9eb8d-99d3-4b93-8002-686781c45ee1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L29wZW5zZWFyY2gvaHRtbHNlYXJjaA=="},{"type":"GetParameter","id":"EID33248b4f-4557-4a37-8650-9bbe046704ca","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID6918ba72-2a58-4a06-9b8e-b033783df252","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID6918ba72-2a58-4a06-9b8e-b033783df252"}},{"type":"GetParameter","id":"EIDf148aef9-1396-411c-9a3b-357a36a95185","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID97423e5e-eb8b-4eb7-9e43-be0cada6b012","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID97423e5e-eb8b-4eb7-9e43-be0cada6b012"}},{"type":"Message","id":"EID02f7af8b-1f73-4659-8cf1-a90113b6faf4","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID02f7af8b-1f73-4659-8cf1-a90113b6faf4"}},{"type":"ServiceEndpoint","id":"EID91005d1c-9d10-43b5-9f86-1c89fca3d40f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceEndpoint","id":"EID9bf569d2-8dc7-4155-80af-674ad1b5f32c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EIDad0959f4-af02-46c8-af69-ef0a276c3323","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"ServiceEndpoint","id":"EIDf7c0a758-c946-4865-b999-469d0709edf6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID03af8d6c-0dff-4b2f-99a3-8551a8c32fee","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID03af8d6c-0dff-4b2f-99a3-8551a8c32fee"}},{"type":"GetParameter","id":"EIDc5484831-c7eb-4e18-bd19-12e28d6817ad","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID4165e37e-ff9a-432e-899e-b9da1e9fb00b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDdc9373d7-0b7f-42d3-b8ef-7806147ec380","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDdc9373d7-0b7f-42d3-b8ef-7806147ec380"}},{"type":"GetParameter","id":"EIDe2ebcd63-78e9-4ced-85a8-50a3d3a30304","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"Message","id":"EID560a2eec-4ae9-459a-a057-ad2fa31eece2","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID560a2eec-4ae9-459a-a057-ad2fa31eece2"}},{"type":"Message","id":"EID2d9f7daa-20fd-4dff-9fb7-b8f92f6e5633","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID2d9f7daa-20fd-4dff-9fb7-b8f92f6e5633"}},{"type":"ServiceResponse","id":"EID2ef49b7a-82ac-461f-9024-566a38fe1259","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID2ef49b7a-82ac-461f-9024-566a38fe1259"}},{"type":"ServiceEndpoint","id":"EID3eb261cb-dee2-4d9e-9b1f-252b2b148dd4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDc51c15bd-b022-4a0e-a7bf-d21bedde1239","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDc51c15bd-b022-4a0e-a7bf-d21bedde1239"}},{"type":"Message","id":"EID628d86ba-c679-49dc-bbbc-dc39af8ed25e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID628d86ba-c679-49dc-bbbc-dc39af8ed25e"}},{"type":"Message","id":"EID9c015977-ab22-4d59-8c44-0a80710bc4f5","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID9c015977-ab22-4d59-8c44-0a80710bc4f5"}},{"type":"Message","id":"EID0987d777-7f90-44bd-9d91-c39a1d138b5c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID0987d777-7f90-44bd-9d91-c39a1d138b5c"}},{"type":"ServiceResponse","id":"EID1aacfe23-5afd-415a-8a29-f68cb69b2cf0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID1aacfe23-5afd-415a-8a29-f68cb69b2cf0"}},{"type":"ServiceEndpoint","id":"EID224f1cf5-cf18-4513-a4d4-d46590d37966","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"GetParameter","id":"EIDe07261be-5408-4604-8588-31fea5f8a9d1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID041e77ec-17c9-4e4c-9890-be2c41dec8f9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDbb388cbf-4b13-42ab-b93d-8eeb3a6b3d7c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID0dfe5921-ba74-445c-b5ff-a08337ad42c0","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID0dfe5921-ba74-445c-b5ff-a08337ad42c0"}},{"type":"ServiceResponse","id":"EID63656325-1fe2-48d9-8e32-daeee42de770","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID63656325-1fe2-48d9-8e32-daeee42de770"}},{"type":"Message","id":"EID380523e4-e194-4316-91a5-fb85ea3a22a9","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID380523e4-e194-4316-91a5-fb85ea3a22a9"}},{"type":"ServiceEndpoint","id":"EIDc6634493-8ca3-4649-a5a8-8ff76f4de876","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID94d80e6b-39e0-43e5-aa05-254d4cdca87a","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID94d80e6b-39e0-43e5-aa05-254d4cdca87a"}},{"type":"GetParameter","id":"EIDc6104f42-56a5-4830-b3e2-9efc08bcc284","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Message","id":"EID43d6d589-668a-4ac9-b746-382f5d11b2c8","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID43d6d589-668a-4ac9-b746-382f5d11b2c8"}},{"type":"ServiceResponse","id":"EID70874a4e-0a9c-4eae-8864-c3efa311f805","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID70874a4e-0a9c-4eae-8864-c3efa311f805"}},{"type":"ServiceEndpoint","id":"EID3e2bbc94-815c-45fd-a8f8-e1e91034c48c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID2af1acb3-03fe-4f89-ba12-dcfc56892dc3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID2af1acb3-03fe-4f89-ba12-dcfc56892dc3"}},{"type":"ServiceEndpoint","id":"EID7cdb886f-4bef-4025-8590-bd574c844785","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceEndpoint","id":"EIDe7b4c305-46cb-45da-aa7e-4a6eb0e9715b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"GetParameter","id":"EIDcfce6ade-4622-401a-8c93-4854ca2b1a1a","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceResponse","id":"EID0d492c25-ad00-42c3-9be5-63127300e7b9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID0d492c25-ad00-42c3-9be5-63127300e7b9"}},{"type":"GetParameter","id":"EID54afc4c6-b851-44d6-a37d-efc933f30646","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID6d5cfe19-dd4e-4f12-8489-e977b10becc8","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID6d5cfe19-dd4e-4f12-8489-e977b10becc8"}},{"type":"GetParameter","id":"EIDd429abd6-a01e-4cc5-9270-759210ff9f35","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"Message","id":"EID76c33a9e-841b-4423-b0fa-bcc42bfbfe13","label":"Message.14","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID76c33a9e-841b-4423-b0fa-bcc42bfbfe13"}},{"type":"ServiceResponse","id":"EID8db4a403-4d8f-4f8c-9066-afad8757811d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID8db4a403-4d8f-4f8c-9066-afad8757811d"}},{"type":"ServiceEndpoint","id":"EID5ed31ffb-4026-4b83-bca5-32baa6cad6c7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"Message","id":"EID696d5d82-5c7d-48f3-982a-16f284349c40","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID696d5d82-5c7d-48f3-982a-16f284349c40"}},{"type":"Message","id":"EID2f1dd871-f6a2-479d-9995-d85f726a7952","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID2f1dd871-f6a2-479d-9995-d85f726a7952"}},{"type":"GetParameter","id":"EIDf05dfef6-5464-4877-8323-f6490414abab","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID473e9e8a-814f-48d1-8a4f-50564621a111","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"Message","id":"EID8dccfb2f-c6f0-4377-af57-7bad272944eb","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID8dccfb2f-c6f0-4377-af57-7bad272944eb"}},{"type":"ServiceEndpoint","id":"EID53e8804a-fc88-4b54-9910-b197a48ee2e9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDe3e8c163-d854-483d-93ca-35a7119da721","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID404be220-e9ad-4c82-9ce8-d61f39afe938","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID5506e437-ba1a-4be7-a60f-3a217ce58c84","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID5506e437-ba1a-4be7-a60f-3a217ce58c84"}},{"type":"ServiceEndpoint","id":"EID72ad406b-4727-4260-8cf0-2f626961880f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID1aea10d2-4b0f-4593-b71b-e9380557bfe3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID86d545b4-0eac-49b6-8dd7-33ad49c5eac3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EIDfcbbdeed-fa8c-4503-b411-72dbcdced16f","label":"Message.10","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDfcbbdeed-fa8c-4503-b411-72dbcdced16f"}},{"type":"ServiceResponse","id":"EIDc29cac1b-d53e-4bf0-b54d-fb621e068634","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDc29cac1b-d53e-4bf0-b54d-fb621e068634"}},{"type":"ServiceEndpoint","id":"EIDb5fdbf5c-f8c9-4510-955c-ab50623cbd21","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EID42240583-bad6-40ff-8432-7dbf338bb694","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID42240583-bad6-40ff-8432-7dbf338bb694"}},{"type":"GetParameter","id":"EID5ad554cd-302e-4f5a-b150-4a5fd5fd6797","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"Message","id":"EID49ab203b-21c7-43c4-822e-f8cd003fa29c","label":"Message.12","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID49ab203b-21c7-43c4-822e-f8cd003fa29c"}},{"type":"ServiceEndpoint","id":"EIDdbc6407d-d941-4353-858a-70a9749cc2e3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID3d8d2165-61eb-41ec-84d5-a6b97253ca25","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID3d8d2165-61eb-41ec-84d5-a6b97253ca25"}},{"type":"ServiceResponse","id":"EID55080eeb-6aaf-4e92-8a32-1ffcf95a95e9","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID55080eeb-6aaf-4e92-8a32-1ffcf95a95e9"}},{"type":"GetParameter","id":"EIDcb4c39d0-829d-47fe-aae6-a68a6f27560c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9kb3dubG9hZHMvaHlkcm9ncmFmaWUuemlw"},{"type":"ServiceResponse","id":"EID46ccd46e-2976-45b4-a2ec-181f7d649cc1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID46ccd46e-2976-45b4-a2ec-181f7d649cc1"}},{"type":"Message","id":"EID856aeba0-2c60-4263-805b-77adde0ae5bd","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID856aeba0-2c60-4263-805b-77adde0ae5bd"}},{"type":"ServiceEndpoint","id":"EID3533d668-ed89-4f02-b222-1a1ce3223b54","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID523b26ce-be38-4456-831b-034e95783621","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID523b26ce-be38-4456-831b-034e95783621"}},{"type":"ServiceResponse","id":"EIDea0f2657-e809-42bf-af22-3c8b9c05c061","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDea0f2657-e809-42bf-af22-3c8b9c05c061"}},{"type":"ServiceResponse","id":"EID79223dc9-864b-44cb-9a9f-0be8aab10ef6","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID79223dc9-864b-44cb-9a9f-0be8aab10ef6"}},{"type":"ServiceEndpoint","id":"EID92cc3f42-14bd-4dc0-a54a-95fb42f4c868","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceEndpoint","id":"EID367bf9ac-3336-495f-a3b9-9f5275005e5b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"GetParameter","id":"EIDe6d0399c-5a9d-4e1d-bfea-d84c515ef4fa","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EIDd698c860-4b95-4cff-87c5-82c1ac3daa42","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDd698c860-4b95-4cff-87c5-82c1ac3daa42"}},{"type":"ServiceResponse","id":"EID4db1c619-9e34-4192-8051-a79adf99cb72","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID4db1c619-9e34-4192-8051-a79adf99cb72"}},{"type":"ServiceResponse","id":"EID8ae5722b-7ab1-4cdd-927e-746800bac5cb","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID8ae5722b-7ab1-4cdd-927e-746800bac5cb"}},{"type":"ServiceResponse","id":"EID07ad5bb6-aef0-438a-b451-c64c9756be5d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID07ad5bb6-aef0-438a-b451-c64c9756be5d"}},{"type":"ServiceEndpoint","id":"EID4837dcc7-f8aa-41a6-b92c-3b72d8c216df","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDf8e976b5-1e32-471d-a03c-4da395270acf","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceEndpoint","id":"EIDf1c27c63-8fdf-456d-b870-b03dd1895d53","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID1b052e10-dd45-4d70-9b6b-59305d6ec646","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID1b052e10-dd45-4d70-9b6b-59305d6ec646"}},{"type":"ServiceResponse","id":"EID2111f5f9-f058-4359-90f1-e414adc845f1","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID2111f5f9-f058-4359-90f1-e414adc845f1"}},{"type":"GetParameter","id":"EID29b1fec6-b727-4c0d-9b83-32393d47cfdf","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"Message","id":"EIDc83be8c9-3c51-410c-9890-f8397a2c0e1f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDc83be8c9-3c51-410c-9890-f8397a2c0e1f"}},{"type":"Message","id":"EIDc3bc6794-280f-42a7-a6e6-8d04b550f83f","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDc3bc6794-280f-42a7-a6e6-8d04b550f83f"}},{"type":"ServiceResponse","id":"EIDb01484ed-01a3-4e13-a28a-785dd41de129","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDb01484ed-01a3-4e13-a28a-785dd41de129"}},{"type":"ServiceResponse","id":"EID47a75116-5307-444e-91ce-f2fb51dfab34","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID47a75116-5307-444e-91ce-f2fb51dfab34"}},{"type":"ServiceResponse","id":"EID3c47549c-6660-435b-8fd2-16ba9e10142d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID3c47549c-6660-435b-8fd2-16ba9e10142d"}},{"type":"ServiceResponse","id":"EIDd20fb3b8-4b5e-4b3f-80aa-899d220e9164","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDd20fb3b8-4b5e-4b3f-80aa-899d220e9164"}},{"type":"GetParameter","id":"EIDfc125fa4-f888-4edc-92ab-67f019497401","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID76512274-e770-482a-80ca-f83aa424af62","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID76512274-e770-482a-80ca-f83aa424af62"}},{"type":"ServiceResponse","id":"EIDfa9ace91-7a99-447f-89cc-4bd1cf85195c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDfa9ace91-7a99-447f-89cc-4bd1cf85195c"}},{"type":"ServiceResponse","id":"EID27204877-ac14-4303-b295-015c8ff30997","label":"Service Response","encoding":"UTF-8","mimeType":"application/gzip","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID27204877-ac14-4303-b295-015c8ff30997"}},{"type":"ServiceResponse","id":"EIDcae6ab10-9167-4e54-8b14-7d50a8968dd9","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDcae6ab10-9167-4e54-8b14-7d50a8968dd9"}},{"type":"ServiceResponse","id":"EIDd26c869d-0cfc-464a-9ced-ab9e0de84660","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDd26c869d-0cfc-464a-9ced-ab9e0de84660"}},{"type":"GetParameter","id":"EID6e1663f1-ad0a-4ba0-a921-e8d6f87ac307","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"GetParameter","id":"EID2de0247e-bb35-44e5-b6b3-0dce94fdd9d5","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"Message","id":"EID2b0a7c1c-b725-44e0-889a-9e6fd595e76d","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID2b0a7c1c-b725-44e0-889a-9e6fd595e76d"}},{"type":"Message","id":"EID5a5299dc-4128-4837-973a-217a5b252cc0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID5a5299dc-4128-4837-973a-217a5b252cc0"}},{"type":"Message","id":"EID2f3961e1-9f8b-4fd5-8a17-357813004dd0","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID2f3961e1-9f8b-4fd5-8a17-357813004dd0"}},{"type":"Message","id":"EID795b778a-23ff-4637-9056-c3382c8f76d9","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID795b778a-23ff-4637-9056-c3382c8f76d9"}},{"type":"ServiceEndpoint","id":"EIDd581d2c5-2f7b-4368-90ea-793bcb86047e","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9kb3dubG9hZHMvaHlkcm9ncmFmaWUuemlw"},{"type":"GetParameter","id":"EIDb5b21977-b130-401f-a574-059ac44a2e24","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID99b530ea-7e0c-4326-b511-cbca0406ce3e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9zcnYvZHV0L2Nzdw=="},{"type":"ServiceEndpoint","id":"EID4999d61b-a795-40a9-8528-ad5aa45f86de","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EID1a2004ba-170f-4ee4-9279-3dab2aae0ff6","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID1a2004ba-170f-4ee4-9279-3dab2aae0ff6"}},{"type":"ServiceEndpoint","id":"EID881c30e6-b82e-4316-ae43-de47d8c7862b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID0a654f8f-a5c5-48af-b1a9-0a29a2d65f69","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID0a654f8f-a5c5-48af-b1a9-0a29a2d65f69"}},{"type":"ServiceResponse","id":"EIDe005a815-f061-4d9f-bef7-ca6ab9fc6c93","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDe005a815-f061-4d9f-bef7-ca6ab9fc6c93"}},{"type":"GetParameter","id":"EID43c9a62a-bbf5-41c9-bdc3-7e1af768e457","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDa035c97a-19f4-474f-a879-c9eb6fa417fd","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDa035c97a-19f4-474f-a879-c9eb6fa417fd"}},{"type":"ServiceResponse","id":"EID0c2e531b-96ad-46ce-88c2-176e4cf54cce","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID0c2e531b-96ad-46ce-88c2-176e4cf54cce"}},{"type":"GetParameter","id":"EIDf3edd5ac-6cbd-428f-885c-4d44b0ab5329","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID9948307f-f66f-481a-8e59-70f8d5574f4f","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"GetParameter","id":"EIDf994caf9-ae1d-41d4-88ea-04f99e22f93c","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EID1cf15403-2ee3-4c6e-a32c-e73892e09802","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EIDd0362ce9-c060-4a3e-8671-e3c4f496a82f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EID1326bffb-cf33-40bd-9f12-6ff42b1253b3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID1326bffb-cf33-40bd-9f12-6ff42b1253b3"}},{"type":"Message","id":"EID1bb46a44-a8e2-4eb4-bcaa-39a2c768a45e","label":"Message.11","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID1bb46a44-a8e2-4eb4-bcaa-39a2c768a45e"}},{"type":"ServiceEndpoint","id":"EIDdd61725b-ebe0-47db-98f4-cd0aec1ecefb","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID4cac293c-9ad2-4a05-a23d-33e82c16e0f8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceResponse","id":"EID1ab9512f-5776-48bb-826b-8d1c24805928","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID1ab9512f-5776-48bb-826b-8d1c24805928"}},{"type":"ServiceEndpoint","id":"EIDa3d9f038-7092-4ea7-bec7-25e97b450664","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"ServiceEndpoint","id":"EID9cd48d16-9fe8-4084-aeb8-d33f0f0ccbd2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EIDbfd8ad98-b632-46ac-a02e-279f887376ee","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC8xNWMzYzMwZi0wZGIyLTRiM2ItODBmNi1iOTkwYzhmYzgyMjUvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"GetParameter","id":"EID2f8c887e-4f46-4c47-8d85-fd11132168ab","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EIDad294572-51ec-4f74-b17b-776568115910","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EIDad294572-51ec-4f74-b17b-776568115910"}},{"type":"LogFile","id":"EID98a1a72e-204c-4c2f-ba4d-af4013df5290","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDb52a117d-538a-43b0-b3d9-ea46c6a61ae1/Attachments/EID98a1a72e-204c-4c2f-ba4d-af4013df5290"}},{"type":"ServiceEndpoint","id":"EID171a29b0-6f7c-4b5d-888f-37f88774a14b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDaa51c5e2-2411-4a22-b4fb-e7459abc7c40","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="},{"type":"ServiceEndpoint","id":"EIDb32166ce-ae48-422d-8867-79b15f735faa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9zZXJ2aWNlLnBkb2submwvaHdoL2h5ZHJvZ3JhZmllL2F0b20vdjFfMC9oeWRyb2dyYWZpZS54bWw="}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:16:25Z","duration":13586,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:16:55.632 [print] EID3b8b2928-8448-4f76-ac1c-538ba51d7984
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:16:55.632 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:16:55.632 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:16:55.632 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:16:55.633 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/3b8b2928-8448-4f76-ac1c-538ba51d7984.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:16:55.633 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/3b8b2928-8448-4f76-ac1c-538ba51d7984.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:16:55.633 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID3b8b2928-8448-4f76-ac1c-538ba51d7984/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.005
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.004
* def a = embedUrl ("../../" + jsonPath , status ) 0.002
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
13:16:55.646 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
13:16:55.647 [print] [
  "TR.missingLinkToRegistry",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement"
]
* print sortedrefs 0.000
13:16:55.647 [print] [
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingLinkToRegistry"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1.472
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:19:07.973 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.471
13:19:07.974 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}

13:19:09.445 response time in milliseconds: 1364.20
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:19:09 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027","timestamp":"1603804749256","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:19:09.445 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
30.346
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:12:38.383 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 30.345
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:38 - 
java.net.SocketTimeoutException: Read timed out
13:12:38.384 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}

13:13:08.729 java.net.SocketTimeoutException: Read timed out, http call failed after 30345 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns
13:13:08.729 http request failed: 
java.net.SocketTimeoutException: Read timed out
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
21.558
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:13:08.263 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 21.558
13:13:08.270 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}

13:13:29.821 response time in milliseconds: 21446.35
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:13:29 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027","timestamp":"1603804409643","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:13:29.822 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
2.481
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:18:30.756 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-ra/wfs?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.480
13:18:30.758 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 292
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn-ra/wfs?request=GetCapabilities&service=WFS"}}}

13:18:33.236 response time in milliseconds: 2371.00
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:18:33 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804712996","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:18:33.237 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1.776
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:21:31.634 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-rvo-np/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.776
13:21:31.635 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-rvo-np/wfs?request=GetCapabilities"}}}

13:21:33.411 response time in milliseconds: 1669.09
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:21:33 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804893229","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:21:33.411 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1.736
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:19:09.410 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/mosselzaadinvanginstallaties/wfs?request=GetCapabilities&service=WFS"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.736
13:19:09.410 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 307
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/mosselzaadinvanginstallaties/wfs?request=GetCapabilities&service=WFS"}}}

13:19:11.146 response time in milliseconds: 1628.86
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:19:10 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804750949","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:19:11.146 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
5.285
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:13:46.699 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsoorten/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 5.285
13:13:46.700 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 300
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/vogelrichtlijnverspreidingsoorten/wfs?request=GetCapabilities"}}}

13:13:51.984 response time in milliseconds: 5178.93
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:13:51 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804431808","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:13:51.984 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
0.850
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:19:24.427 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsoorten/v2/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 0.849
13:19:24.428 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 305
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsoorten/v2/wfs?request=GetCapabilities"}}}

13:19:25.277 response time in milliseconds: 848.07
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:19:25 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","timestamp":"1603804765204","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/habitatrichtlijnverspreidingsoorten/v2/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027 (Internal Server Error )","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:19:25.277 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
27.548
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:19:19.508 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 5.457
13:19:19.512 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

13:19:24.963 response time in milliseconds: 4695.08
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:19:24 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:19:21 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/777edef3-2d43-4b34-83a4-94204a6fa23d.json","testRuns":{"TestRun":{"id":"EID777edef3-2d43-4b34-83a4-94204a6fa23d","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:19:21.24Z","testTasks":{"TestTask":{"id":"EIDdc10decb-fc2b-480e-a323-54781f7350fb","parent":{"ref":"EID777edef3-2d43-4b34-83a4-94204a6fa23d"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID31fd6516-3dd1-464b-b481-c02e5b371ce3"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID777edef3-2d43-4b34-83a4-94204a6fa23d/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID31fd6516-3dd1-464b-b481-c02e5b371ce3","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:19:19.943Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:19:20.814Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:19:24.966 [print] EID777edef3-2d43-4b34-83a4-94204a6fa23d
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:19:24.966 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:19:24.966 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:19:24.966 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/777edef3-2d43-4b34-83a4-94204a6fa23d.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:19:24.966 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID777edef3-2d43-4b34-83a4-94204a6fa23d/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:19:24.966 [print] statuspath TestRuns/EID777edef3-2d43-4b34-83a4-94204a6fa23d
* print 'progresspath ', progresspath 0.000
13:19:24.967 [print] progresspath  TestRuns/EID777edef3-2d43-4b34-83a4-94204a6fa23d/progress
Given path progresspath 0.000
When method GET 0.526
13:19:24.968 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID777edef3-2d43-4b34-83a4-94204a6fa23d/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:25.493 response time in milliseconds: 525.13
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:19:25 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["27.10.2020 13:19:21 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:21 UTC 2020)","27.10.2020 13:19:21 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:21 - Preparing 1 Test Task:","27.10.2020 13:19:21 -  TestTask 1 (dc10decb-fc2b-480e-a323-54781f7350fb)","27.10.2020 13:19:21 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:21 -  with parameters: ","27.10.2020 13:19:21 - etf.testcases = *","27.10.2020 13:19:21 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:21 - Setting state to CREATED","27.10.2020 13:19:21 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:21 - Starting TestRun.777edef3-2d43-4b34-83a4-94204a6fa23d at 2020-10-27T13:19:23Z","27.10.2020 13:19:23 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:23 - Project Properties: ","27.10.2020 13:19:23 - etf.testcases - * ","27.10.2020 13:19:23 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:19:23 - username -  ","27.10.2020 13:19:23 - authUser -  ","27.10.2020 13:19:23 - authMethod - basic ","27.10.2020 13:19:23 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:19:25.494 [print] {
  "val": "21",
  "max": "22",
  "log": [
    "27.10.2020 13:19:21 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:21 UTC 2020)",
    "27.10.2020 13:19:21 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:19:21 - Preparing 1 Test Task:",
    "27.10.2020 13:19:21 -  TestTask 1 (dc10decb-fc2b-480e-a323-54781f7350fb)",
    "27.10.2020 13:19:21 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:19:21 -  with parameters: ",
    "27.10.2020 13:19:21 - etf.testcases = *",
    "27.10.2020 13:19:21 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:19:21 - Setting state to CREATED",
    "27.10.2020 13:19:21 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:19:21 - Starting TestRun.777edef3-2d43-4b34-83a4-94204a6fa23d at 2020-10-27T13:19:23Z",
    "27.10.2020 13:19:23 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:19:23 - Project Properties: ",
    "27.10.2020 13:19:23 - etf.testcases - * ",
    "27.10.2020 13:19:23 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "27.10.2020 13:19:23 - username -  ",
    "27.10.2020 13:19:23 - authUser -  ",
    "27.10.2020 13:19:23 - authMethod - basic ",
    "27.10.2020 13:19:23 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 17.073
13:19:25.494 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID777edef3-2d43-4b34-83a4-94204a6fa23d/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:26.033 response time in milliseconds: 538.31
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:19:25 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"25","max":"26","log":["27.10.2020 13:19:21 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:21 UTC 2020)","27.10.2020 13:19:21 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:21 - Preparing 1 Test Task:","27.10.2020 13:19:21 -  TestTask 1 (dc10decb-fc2b-480e-a323-54781f7350fb)","27.10.2020 13:19:21 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:21 -  with parameters: ","27.10.2020 13:19:21 - etf.testcases = *","27.10.2020 13:19:21 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:21 - Setting state to CREATED","27.10.2020 13:19:21 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:21 - Starting TestRun.777edef3-2d43-4b34-83a4-94204a6fa23d at 2020-10-27T13:19:23Z","27.10.2020 13:19:23 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:23 - Project Properties: ","27.10.2020 13:19:23 - etf.testcases - * ","27.10.2020 13:19:23 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:19:23 - username -  ","27.10.2020 13:19:23 - authUser -  ","27.10.2020 13:19:23 - authMethod - basic ","27.10.2020 13:19:23 - TestRunTask initialized"]}

13:19:26.033 retry condition not satisfied: response.val == response.max
13:19:26.034 sleeping before retry #1
13:19:31.034 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID777edef3-2d43-4b34-83a4-94204a6fa23d/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:31.555 response time in milliseconds: 518.51
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:19:31 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"77","max":"78","log":["27.10.2020 13:19:21 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:21 UTC 2020)","27.10.2020 13:19:21 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:21 - Preparing 1 Test Task:","27.10.2020 13:19:21 -  TestTask 1 (dc10decb-fc2b-480e-a323-54781f7350fb)","27.10.2020 13:19:21 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:21 -  with parameters: ","27.10.2020 13:19:21 - etf.testcases = *","27.10.2020 13:19:21 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:21 - Setting state to CREATED","27.10.2020 13:19:21 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:21 - Starting TestRun.777edef3-2d43-4b34-83a4-94204a6fa23d at 2020-10-27T13:19:23Z","27.10.2020 13:19:23 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:23 - Project Properties: ","27.10.2020 13:19:23 - etf.testcases - * ","27.10.2020 13:19:23 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:19:23 - username -  ","27.10.2020 13:19:23 - authUser -  ","27.10.2020 13:19:23 - authMethod - basic ","27.10.2020 13:19:23 - TestRunTask initialized","27.10.2020 13:19:27 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:19:27 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:19:29 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:19:31 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027"]}

13:19:31.555 retry condition not satisfied: response.val == response.max
13:19:31.555 sleeping before retry #2
13:19:36.556 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID777edef3-2d43-4b34-83a4-94204a6fa23d/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:37.059 response time in milliseconds: 502.56
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:19:36 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["27.10.2020 13:19:21 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:19:21 UTC 2020)","27.10.2020 13:19:21 - Resolving Executable Test Suite dependencies","27.10.2020 13:19:21 - Preparing 1 Test Task:","27.10.2020 13:19:21 -  TestTask 1 (dc10decb-fc2b-480e-a323-54781f7350fb)","27.10.2020 13:19:21 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:19:21 -  with parameters: ","27.10.2020 13:19:21 - etf.testcases = *","27.10.2020 13:19:21 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:19:21 - Setting state to CREATED","27.10.2020 13:19:21 - Changed state from CREATED to INITIALIZING","27.10.2020 13:19:21 - Starting TestRun.777edef3-2d43-4b34-83a4-94204a6fa23d at 2020-10-27T13:19:23Z","27.10.2020 13:19:23 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:19:23 - Project Properties: ","27.10.2020 13:19:23 - etf.testcases - * ","27.10.2020 13:19:23 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:19:23 - username -  ","27.10.2020 13:19:23 - authUser -  ","27.10.2020 13:19:23 - authMethod - basic ","27.10.2020 13:19:23 - TestRunTask initialized","27.10.2020 13:19:27 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:19:27 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:19:29 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:19:31 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:19:31 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:19:32 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:19:32 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:19:32 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:19:32 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:19:32 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:19:32 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:19:32 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:19:32 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:19:32 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:19:32 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:19:32 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:19:33 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:19:33 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:19:33 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:19:33 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:19:33 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:19:33 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:19:33 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:19:33 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:19:33 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:19:33 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:19:35 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:19:35 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:19:35 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:19:35 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:19:37.059 retry condition not satisfied: response.val == response.max
13:19:37.059 sleeping before retry #3
13:19:42.060 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID777edef3-2d43-4b34-83a4-94204a6fa23d/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:42.567 response time in milliseconds: 506.36
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:19:42 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"100","max":"100","log":["Already completed"]}

13:19:42.568 retry condition satisfied
* print response 0.000
13:19:42.568 [print] {
  "val": "100",
  "max": "100",
  "log": [
    "Already completed"
  ]
}
Given path statuspath 0.000
When method GET 4.461
13:19:42.570 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID777edef3-2d43-4b34-83a4-94204a6fa23d
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:19:47.026 response time in milliseconds: 3503.43
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Cache-Control: public, max-age=120
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:19:46 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Last-Modified: Tue, 27 Oct 2020 13:19:39 GMT
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/777edef3-2d43-4b34-83a4-94204a6fa23d.json","testRuns":{"TestRun":{"id":"EID777edef3-2d43-4b34-83a4-94204a6fa23d","status":"FAILED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:19:21.24Z","testTasks":{"TestTask":{"id":"EIDdc10decb-fc2b-480e-a323-54781f7350fb","parent":{"ref":"EID777edef3-2d43-4b34-83a4-94204a6fa23d"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID31fd6516-3dd1-464b-b481-c02e5b371ce3"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}},"testTaskResult":{"ref":"EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d"}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID777edef3-2d43-4b34-83a4-94204a6fa23d/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID31fd6516-3dd1-464b-b481-c02e5b371ce3","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:19:19.943Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:19:20.814Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":{"TestTaskResult":{"schemaLocation":"http://www.interactive-instruments.de/etf/2.0 http://resources.etf-validator.net/schema/v2/model/result.xsd","id":"EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d","testObject":{"ref":"EID31fd6516-3dd1-464b-b481-c02e5b371ce3"},"testModuleResults":{"TestModuleResult":[{"id":"EID6a369565-0175-1000-7064-ca51c5391f59","testCaseResults":{"TestCaseResult":[{"id":"EID6a369565-0175-1000-cce5-3aa39ded7a68","testStepResults":{"TestStepResult":[{"id":"EID6a369565-0175-1000-18cc-5a1355bf109a","parent":{"ref":"EID6a369565-0175-1000-cce5-3aa39ded7a68"},"resultedFrom":{"ref":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28"},"startTimestamp":"2020-10-27T13:19:23Z","duration":16,"status":"PASSED"},{"id":"EID6a369575-0175-1000-a1cb-ed7e0b615459","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3696c3-0175-1000-9128-e07ae71807f4","parent":{"ref":"EID6a369575-0175-1000-a1cb-ed7e0b615459"},"resultedFrom":{"ref":"EID602d9d35-1c42-4497-a386-7befaa3320eb"},"startTimestamp":"2020-10-27T13:19:23Z","duration":0,"status":"PASSED"},{"id":"EID6a3696c3-0175-1000-f4a3-9cbb55862813","parent":{"ref":"EID6a369575-0175-1000-a1cb-ed7e0b615459"},"resultedFrom":{"ref":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c"},"startTimestamp":"2020-10-27T13:19:23Z","duration":0,"status":"PASSED"},{"id":"EID6a3696c3-0175-1000-6829-e567650089c3","parent":{"ref":"EID6a369575-0175-1000-a1cb-ed7e0b615459"},"resultedFrom":{"ref":"EID60ac748d-9fae-47f9-bc88-f7073077cc62"},"startTimestamp":"2020-10-27T13:19:23Z","duration":0,"status":"PASSED"},{"id":"EID6a3696c3-0175-1000-7fb7-3a4a2ec945eb","parent":{"ref":"EID6a369575-0175-1000-a1cb-ed7e0b615459"},"resultedFrom":{"ref":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b"},"startTimestamp":"2020-10-27T13:19:23Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb3aef367-e54a-44dc-b324-0aee05f335a1"},{"ref":"EID19eda465-13f6-4112-8231-84e0a18ce549"},{"ref":"EID62815392-e471-4b12-afd9-ce1114ff62bd"}]},"parent":{"ref":"EID6a369565-0175-1000-cce5-3aa39ded7a68"},"resultedFrom":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"startTimestamp":"2020-10-27T13:19:23Z","duration":141,"status":"PASSED"}]},"parent":{"ref":"EID6a369565-0175-1000-7064-ca51c5391f59"},"resultedFrom":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"startTimestamp":"2020-10-27T13:19:23Z","duration":350,"status":"PASSED"},{"id":"EID6a3696c3-0175-1000-5af9-6d0644ad5531","testStepResults":{"TestStepResult":{"id":"EID6a3696c3-0175-1000-78c1-c2ae8dac4a89","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3697c1-0175-1000-2e37-c675dad9b80f","parent":{"ref":"EID6a3696c3-0175-1000-78c1-c2ae8dac4a89"},"resultedFrom":{"ref":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e"},"startTimestamp":"2020-10-27T13:19:24Z","duration":0,"status":"PASSED"},{"id":"EID6a3697c1-0175-1000-33c8-664e076bc8dc","parent":{"ref":"EID6a3696c3-0175-1000-78c1-c2ae8dac4a89"},"resultedFrom":{"ref":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4"},"startTimestamp":"2020-10-27T13:19:24Z","duration":0,"status":"PASSED"},{"id":"EID6a3697c1-0175-1000-4893-20af5846cbe9","parent":{"ref":"EID6a3696c3-0175-1000-78c1-c2ae8dac4a89"},"resultedFrom":{"ref":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359"},"startTimestamp":"2020-10-27T13:19:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2a6b446d-5e01-4d4e-83e7-f72a55041ea6"},{"ref":"EIDf9d5f6f2-4d7e-46d4-b1fa-f07e0c753860"},{"ref":"EID0c2ffb5e-460a-415a-b11a-2066ae7799c3"}]},"parent":{"ref":"EID6a3696c3-0175-1000-5af9-6d0644ad5531"},"resultedFrom":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"startTimestamp":"2020-10-27T13:19:23Z","duration":43,"status":"PASSED"}},"parent":{"ref":"EID6a369565-0175-1000-7064-ca51c5391f59"},"resultedFrom":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"startTimestamp":"2020-10-27T13:19:23Z","duration":254,"status":"PASSED"}]},"parent":{"ref":"EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d"},"resultedFrom":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"startTimestamp":"2020-10-27T13:19:23Z","duration":604,"status":"PASSED"},{"id":"EID6a3697c1-0175-1000-9c97-82e950121f4d","testCaseResults":{"TestCaseResult":[{"id":"EID6a3697c1-0175-1000-ca49-099f9148f054","testStepResults":{"TestStepResult":[{"id":"EID6a3697c1-0175-1000-e757-316589c5ec36","parent":{"ref":"EID6a3697c1-0175-1000-ca49-099f9148f054"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/7d695871-e4c6-4360-a562-8d2da96ba906.json"},"startTimestamp":"2020-10-27T13:19:24Z","duration":42,"status":"PASSED"},{"id":"EID6a3697c1-0175-1000-c11e-3b96d1021689","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a3698b3-0175-1000-e4b4-6bd49626d595","parent":{"ref":"EID6a3697c1-0175-1000-c11e-3b96d1021689"},"resultedFrom":{"ref":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94"},"startTimestamp":"2020-10-27T13:19:24Z","duration":0,"status":"PASSED"},{"id":"EID6a3698b3-0175-1000-5a3b-5ce54bbcb237","parent":{"ref":"EID6a3697c1-0175-1000-c11e-3b96d1021689"},"resultedFrom":{"ref":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0"},"startTimestamp":"2020-10-27T13:19:24Z","duration":0,"status":"PASSED"},{"id":"EID6a3698b3-0175-1000-4268-0fb1ea8297fc","parent":{"ref":"EID6a3697c1-0175-1000-c11e-3b96d1021689"},"resultedFrom":{"ref":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a"},"startTimestamp":"2020-10-27T13:19:24Z","duration":0,"status":"PASSED"},{"id":"EID6a3698b3-0175-1000-4923-95c166c46394","parent":{"ref":"EID6a3697c1-0175-1000-c11e-3b96d1021689"},"resultedFrom":{"ref":"EID9809e089-828d-4e58-a091-0b8a0d28956d"},"startTimestamp":"2020-10-27T13:19:24Z","duration":0,"status":"PASSED"},{"id":"EID6a3698b3-0175-1000-edb5-406655d790cc","parent":{"ref":"EID6a3697c1-0175-1000-c11e-3b96d1021689"},"resultedFrom":{"ref":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd"},"startTimestamp":"2020-10-27T13:19:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcac6c30d-6cd2-4238-8d03-1d65d2b208b0"},{"ref":"EIDc6c13441-cf16-482e-8a37-54144fc5b439"},{"ref":"EID357b9c5c-aad1-48e4-8a63-ac8d659a31dd"}]},"parent":{"ref":"EID6a3697c1-0175-1000-ca49-099f9148f054"},"resultedFrom":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"startTimestamp":"2020-10-27T13:19:24Z","duration":88,"status":"PASSED"}]},"parent":{"ref":"EID6a3697c1-0175-1000-9c97-82e950121f4d"},"resultedFrom":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"startTimestamp":"2020-10-27T13:19:24Z","duration":253,"status":"PASSED"},{"id":"EID6a3698be-0175-1000-dee4-206c6c56aeb4","testStepResults":{"TestStepResult":[{"id":"EID6a3698be-0175-1000-cf0c-ee13053937a2","attachments":{"attachment":[{"ref":"EID80a7ab43-6449-44be-ac20-2ac2d1e39146"},{"ref":"EID84c21078-84df-472f-97aa-41f1424740fb"}]},"parent":{"ref":"EID6a3698be-0175-1000-dee4-206c6c56aeb4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/40bb7f94-25d8-462b-ab3f-975a7402bde0.json"},"startTimestamp":"2020-10-27T13:19:24Z","duration":142,"status":"PASSED"},{"id":"EID6a369995-0175-1000-bcea-37966117541e","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a369a71-0175-1000-349c-848fe37e3b10","parent":{"ref":"EID6a369995-0175-1000-bcea-37966117541e"},"resultedFrom":{"ref":"EID3f96da73-0f0b-4b82-8fee-582f70950c69"},"startTimestamp":"2020-10-27T13:19:24Z","duration":0,"status":"PASSED"},{"id":"EID6a369a71-0175-1000-8ddf-070063191e9c","parent":{"ref":"EID6a369995-0175-1000-bcea-37966117541e"},"resultedFrom":{"ref":"EID6c31a150-52db-4ba1-bad6-c374dc60359b"},"startTimestamp":"2020-10-27T13:19:24Z","duration":0,"status":"PASSED"},{"id":"EID6a369a71-0175-1000-c96a-06b22b67348f","parent":{"ref":"EID6a369995-0175-1000-bcea-37966117541e"},"resultedFrom":{"ref":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629"},"startTimestamp":"2020-10-27T13:19:24Z","duration":0,"status":"PASSED"},{"id":"EID6a369a71-0175-1000-82bf-82612a453a52","parent":{"ref":"EID6a369995-0175-1000-bcea-37966117541e"},"resultedFrom":{"ref":"EID84104201-71c4-4f32-8291-5f5ac49e6b20"},"startTimestamp":"2020-10-27T13:19:24Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID1e1f284e-da21-4042-8740-59173512c1c2"},{"ref":"EIDd270db6c-c865-4651-8f2d-abcb9650e2ea"},{"ref":"EIDc81e7084-5738-432a-a66c-fb650c18639b"}]},"parent":{"ref":"EID6a3698be-0175-1000-dee4-206c6c56aeb4"},"resultedFrom":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"startTimestamp":"2020-10-27T13:19:24Z","duration":96,"status":"PASSED"}]},"parent":{"ref":"EID6a3697c1-0175-1000-9c97-82e950121f4d"},"resultedFrom":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"startTimestamp":"2020-10-27T13:19:24Z","duration":435,"status":"PASSED"},{"id":"EID6a369a72-0175-1000-b800-19ccd2e827b4","testStepResults":{"TestStepResult":[{"id":"EID6a369a72-0175-1000-6560-468d2bf86912","attachments":{"attachment":[{"ref":"EID49b8a8ee-6c1d-402d-8d4c-ca61c550b94e"},{"ref":"EID870b371c-1b40-46c2-83f5-dcd321938dcc"}]},"parent":{"ref":"EID6a369a72-0175-1000-b800-19ccd2e827b4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/de6d0b18-45fe-4795-a4d6-ffe08ae08b4f.json"},"startTimestamp":"2020-10-27T13:19:24Z","duration":198,"status":"PASSED"},{"id":"EID6a369bda-0175-1000-26d0-c579fa2e40a2","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a369cde-0175-1000-31eb-e8d4594ea7ee","parent":{"ref":"EID6a369bda-0175-1000-26d0-c579fa2e40a2"},"resultedFrom":{"ref":"EID342e431e-e031-4057-bb93-4a7d9d858b7d"},"startTimestamp":"2020-10-27T13:19:25Z","duration":0,"status":"PASSED"},{"id":"EID6a369cde-0175-1000-319d-eb99149e85c0","parent":{"ref":"EID6a369bda-0175-1000-26d0-c579fa2e40a2"},"resultedFrom":{"ref":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81"},"startTimestamp":"2020-10-27T13:19:25Z","duration":0,"status":"PASSED"},{"id":"EID6a369cde-0175-1000-48ec-58a8160b1a0e","parent":{"ref":"EID6a369bda-0175-1000-26d0-c579fa2e40a2"},"resultedFrom":{"ref":"EIDcbcffce3-745e-490a-bd2f-2d64069409af"},"startTimestamp":"2020-10-27T13:19:25Z","duration":0,"status":"PASSED"},{"id":"EID6a369cde-0175-1000-baa2-bc995ca170aa","parent":{"ref":"EID6a369bda-0175-1000-26d0-c579fa2e40a2"},"resultedFrom":{"ref":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a"},"startTimestamp":"2020-10-27T13:19:25Z","duration":0,"status":"PASSED"},{"id":"EID6a369cde-0175-1000-4156-378196934cc2","parent":{"ref":"EID6a369bda-0175-1000-26d0-c579fa2e40a2"},"resultedFrom":{"ref":"EID5c449c08-4578-41ee-a7ea-a168c61005b7"},"startTimestamp":"2020-10-27T13:19:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID8d8bdedb-0250-448c-930a-ffafcc8fc0d1"},{"ref":"EIDd22690f9-1d4f-43af-a68c-07fa57e7acb3"},{"ref":"EIDf7de1832-7eb2-4471-b41f-8e7609ce6360"}]},"parent":{"ref":"EID6a369a72-0175-1000-b800-19ccd2e827b4"},"resultedFrom":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"startTimestamp":"2020-10-27T13:19:25Z","duration":62,"status":"PASSED"}]},"parent":{"ref":"EID6a3697c1-0175-1000-9c97-82e950121f4d"},"resultedFrom":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"startTimestamp":"2020-10-27T13:19:24Z","duration":620,"status":"PASSED"},{"id":"EID6a369cdf-0175-1000-4829-abf5c7daa26c","testStepResults":{"TestStepResult":[{"id":"EID6a369cdf-0175-1000-2817-4b055b5228da","attachments":{"attachment":[{"ref":"EIDfcfbbe8e-575a-44b7-856a-3f67dffa9d0e"},{"ref":"EID34569a6e-a1ae-4c7e-a74c-59e6e0b4811e"}]},"parent":{"ref":"EID6a369cdf-0175-1000-4829-abf5c7daa26c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d3d7d1e5-47cb-4624-ad67-076cf69538ac.json"},"startTimestamp":"2020-10-27T13:19:25Z","duration":185,"status":"PASSED"},{"id":"EID6a369dc8-0175-1000-c3ee-a9030fab26ed","parent":{"ref":"EID6a369cdf-0175-1000-4829-abf5c7daa26c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3e1478ca-676b-4786-b733-a7eef7597ede.json"},"startTimestamp":"2020-10-27T13:19:25Z","duration":0,"status":"PASSED"},{"id":"EID6a369dd1-0175-1000-ef17-6d61a0482535","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a369ee0-0175-1000-8165-9fe91ccffba9","parent":{"ref":"EID6a369dd1-0175-1000-ef17-6d61a0482535"},"resultedFrom":{"ref":"EID52a40318-a6fb-4b29-9064-8903ddf448df"},"startTimestamp":"2020-10-27T13:19:25Z","duration":0,"status":"PASSED"},{"id":"EID6a369ee0-0175-1000-f2ad-9ffdc5d38e97","parent":{"ref":"EID6a369dd1-0175-1000-ef17-6d61a0482535"},"resultedFrom":{"ref":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648"},"startTimestamp":"2020-10-27T13:19:25Z","duration":0,"status":"PASSED"},{"id":"EID6a369ee1-0175-1000-daf9-86eed3d5cda2","parent":{"ref":"EID6a369dd1-0175-1000-ef17-6d61a0482535"},"resultedFrom":{"ref":"EID43518c24-2fc2-448a-817a-c8e4944baa64"},"startTimestamp":"2020-10-27T13:19:25Z","duration":0,"status":"PASSED"},{"id":"EID6a369ee1-0175-1000-b881-24527d14f8c0","parent":{"ref":"EID6a369dd1-0175-1000-ef17-6d61a0482535"},"resultedFrom":{"ref":"EIDf0d32900-8648-42a9-8e47-0681f34af745"},"startTimestamp":"2020-10-27T13:19:25Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID19562d65-d9fe-474b-8cf5-ad02d759f914"},{"ref":"EID036dcf91-c58a-46f8-b8b7-83e22dae95c0"},{"ref":"EIDfa51d6c4-a09c-4c69-a18c-cff97c266ade"}]},"parent":{"ref":"EID6a369cdf-0175-1000-4829-abf5c7daa26c"},"resultedFrom":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"startTimestamp":"2020-10-27T13:19:25Z","duration":86,"status":"PASSED"},{"id":"EID6a369ee1-0175-1000-ecd8-7bfaae362298","attachments":{"attachment":{"ref":"EID96f49086-4a93-45ee-b4bc-af4adcdd7632"}},"parent":{"ref":"EID6a369cdf-0175-1000-4829-abf5c7daa26c"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/4c2c9ab0-dce9-4b6e-8c79-1cdb120781e1.json"},"startTimestamp":"2020-10-27T13:19:25Z","duration":1,"status":"PASSED"},{"id":"EID6a369f0c-0175-1000-67e8-bf12bc012cb9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36a094-0175-1000-2a25-b657f8816177","parent":{"ref":"EID6a369f0c-0175-1000-67e8-bf12bc012cb9"},"resultedFrom":{"ref":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"},{"id":"EID6a36a094-0175-1000-6858-89919c732870","parent":{"ref":"EID6a369f0c-0175-1000-67e8-bf12bc012cb9"},"resultedFrom":{"ref":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"},{"id":"EID6a36a094-0175-1000-77b2-50b7ec3c6e10","parent":{"ref":"EID6a369f0c-0175-1000-67e8-bf12bc012cb9"},"resultedFrom":{"ref":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"},{"id":"EID6a36a094-0175-1000-2090-f56393a60387","parent":{"ref":"EID6a369f0c-0175-1000-67e8-bf12bc012cb9"},"resultedFrom":{"ref":"EID05e473b5-9caa-407d-90e8-49820284df45"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"},{"id":"EID6a36a094-0175-1000-19ea-2f7d134fcc0b","parent":{"ref":"EID6a369f0c-0175-1000-67e8-bf12bc012cb9"},"resultedFrom":{"ref":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID73453e99-6806-4496-b615-4d5f1a45b506"},{"ref":"EIDb9201ed4-87f0-4855-96f3-b9de40fc6fe4"},{"ref":"EID9e7d44cf-fe5b-4469-b783-88e1a5feeafb"}]},"parent":{"ref":"EID6a369cdf-0175-1000-4829-abf5c7daa26c"},"resultedFrom":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"startTimestamp":"2020-10-27T13:19:25Z","duration":54,"status":"PASSED"}]},"parent":{"ref":"EID6a3697c1-0175-1000-9c97-82e950121f4d"},"resultedFrom":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"startTimestamp":"2020-10-27T13:19:25Z","duration":949,"status":"PASSED"},{"id":"EID6a36a095-0175-1000-f747-e6453da7cd68","testStepResults":{"TestStepResult":[{"id":"EID6a36a095-0175-1000-9ab2-87328e517d1c","attachments":{"attachment":[{"ref":"EIDc1aefda4-314d-42df-a28c-754730bbf0ab"},{"ref":"EID169a134e-07a4-4a4f-8572-b3e9c7b15ae6"}]},"parent":{"ref":"EID6a36a095-0175-1000-f747-e6453da7cd68"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/5404b3db-ed62-40ca-990b-6a5a7ba58574.json"},"startTimestamp":"2020-10-27T13:19:26Z","duration":157,"status":"PASSED"},{"id":"EID6a36a15f-0175-1000-8e2f-0638f7d3b89c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36a22d-0175-1000-1bcb-c76085d20e75","parent":{"ref":"EID6a36a15f-0175-1000-8e2f-0638f7d3b89c"},"resultedFrom":{"ref":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"},{"id":"EID6a36a22d-0175-1000-38c8-b7f3f773275d","parent":{"ref":"EID6a36a15f-0175-1000-8e2f-0638f7d3b89c"},"resultedFrom":{"ref":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"},{"id":"EID6a36a22d-0175-1000-9b20-ed808468897b","parent":{"ref":"EID6a36a15f-0175-1000-8e2f-0638f7d3b89c"},"resultedFrom":{"ref":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"},{"id":"EID6a36a22d-0175-1000-0baf-4b7a838a6d69","parent":{"ref":"EID6a36a15f-0175-1000-8e2f-0638f7d3b89c"},"resultedFrom":{"ref":"EID794b3dfa-4d1b-42ca-878d-93431f397473"},"startTimestamp":"2020-10-27T13:19:26Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID0d207da1-871e-49df-a66b-07f2feb40799"},{"ref":"EID0e134ecb-30f2-49c4-92d3-6d9ef1557d78"},{"ref":"EIDa2a7976b-6212-48b5-a329-aa50b323a7a8"}]},"parent":{"ref":"EID6a36a095-0175-1000-f747-e6453da7cd68"},"resultedFrom":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"startTimestamp":"2020-10-27T13:19:26Z","duration":73,"status":"PASSED"}]},"parent":{"ref":"EID6a3697c1-0175-1000-9c97-82e950121f4d"},"resultedFrom":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"startTimestamp":"2020-10-27T13:19:26Z","duration":408,"status":"PASSED"},{"id":"EID6a36a22d-0175-1000-0c8a-844aeac03bbb","testStepResults":{"TestStepResult":[{"id":"EID6a36a22e-0175-1000-9508-5909a3cf5b18","attachments":{"attachment":[{"ref":"EIDc613db59-574a-465a-8a8d-43ecb3df5df0"},{"ref":"EID9996fe53-5726-4dab-9a2f-e0ad4b65c165"}]},"parent":{"ref":"EID6a36a22d-0175-1000-0c8a-844aeac03bbb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3d5c4205-a68c-4d85-9483-0cc734eca54f.json"},"startTimestamp":"2020-10-27T13:19:26Z","duration":173,"status":"PASSED"},{"id":"EID6a36a331-0175-1000-e82b-d3388ba68a1f","parent":{"ref":"EID6a36a22d-0175-1000-0c8a-844aeac03bbb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/f4de0046-1805-45c3-992c-bb4c350463f0.json"},"startTimestamp":"2020-10-27T13:19:27Z","duration":0,"status":"PASSED"},{"id":"EID6a36a331-0175-1000-8618-66387014e5b0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36a454-0175-1000-b9f5-0246a346435c","parent":{"ref":"EID6a36a331-0175-1000-8618-66387014e5b0"},"resultedFrom":{"ref":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61"},"startTimestamp":"2020-10-27T13:19:27Z","duration":0,"status":"PASSED"},{"id":"EID6a36a454-0175-1000-de89-3958445880f8","parent":{"ref":"EID6a36a331-0175-1000-8618-66387014e5b0"},"resultedFrom":{"ref":"EID341a8eae-c6c1-4880-a893-80bd7448fecf"},"startTimestamp":"2020-10-27T13:19:27Z","duration":0,"status":"PASSED"},{"id":"EID6a36a454-0175-1000-363d-35fb5da125ae","parent":{"ref":"EID6a36a331-0175-1000-8618-66387014e5b0"},"resultedFrom":{"ref":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15"},"startTimestamp":"2020-10-27T13:19:27Z","duration":0,"status":"PASSED"},{"id":"EID6a36a454-0175-1000-b637-7f225b52fe0a","parent":{"ref":"EID6a36a331-0175-1000-8618-66387014e5b0"},"resultedFrom":{"ref":"EID68a277ac-f823-4fd1-96cd-6429651777bd"},"startTimestamp":"2020-10-27T13:19:27Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID738ba5e0-338f-4b3b-abf3-f48b598be1e7"},{"ref":"EID70a3456e-67f9-4294-b5f4-079ed736c4d5"},{"ref":"EID5f91ea0b-deee-4497-86f8-f8d82735a5c9"}]},"parent":{"ref":"EID6a36a22d-0175-1000-0c8a-844aeac03bbb"},"resultedFrom":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"startTimestamp":"2020-10-27T13:19:27Z","duration":41,"status":"PASSED"},{"id":"EID6a36a454-0175-1000-7513-e7a3842f8bc7","attachments":{"attachment":{"ref":"EIDbdd659bd-9d87-4060-a2f9-1ee5554af3be"}},"parent":{"ref":"EID6a36a22d-0175-1000-0c8a-844aeac03bbb"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/c8495b13-1b57-4cb9-95ae-3f688240b451.json"},"startTimestamp":"2020-10-27T13:19:27Z","duration":2,"status":"PASSED"},{"id":"EID6a36a466-0175-1000-a882-a692ad38036d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36a5a9-0175-1000-da18-fde66c997504","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:500 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a36a466-0175-1000-a882-a692ad38036d"},"resultedFrom":{"ref":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c"},"startTimestamp":"2020-10-27T13:19:27Z","duration":85,"status":"FAILED"},{"id":"EID6a36a5fe-0175-1000-5e64-1710b76c7263","parent":{"ref":"EID6a36a466-0175-1000-a882-a692ad38036d"},"resultedFrom":{"ref":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3"},"startTimestamp":"2020-10-27T13:19:27Z","duration":0,"status":"PASSED"},{"id":"EID6a36a5fe-0175-1000-3d9f-697511fb5ce2","messages":{"message":{"ref":"TR.unexpectedHtml"}},"parent":{"ref":"EID6a36a466-0175-1000-a882-a692ad38036d"},"resultedFrom":{"ref":"EID5213157c-3e2a-40fd-9ee9-9557678f0260"},"startTimestamp":"2020-10-27T13:19:27Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID143fd6ad-3070-461c-97d3-1228d63d50fa"},{"ref":"EID05ef6b64-eb27-4316-bcba-a31ee30a91e5"},{"ref":"EID92b4efd3-1a82-49de-9409-b4bdfd5d4716"}]},"parent":{"ref":"EID6a36a22d-0175-1000-0c8a-844aeac03bbb"},"resultedFrom":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"startTimestamp":"2020-10-27T13:19:27Z","duration":236,"status":"FAILED"}]},"parent":{"ref":"EID6a3697c1-0175-1000-9c97-82e950121f4d"},"resultedFrom":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"startTimestamp":"2020-10-27T13:19:26Z","duration":977,"status":"FAILED"},{"id":"EID6a36a5fe-0175-1000-6141-24d0e5ad4d7e","testStepResults":{"TestStepResult":[{"id":"EID6a36a5fe-0175-1000-8dd6-4a1f425c95af","attachments":{"attachment":[{"ref":"EID1dc1df75-b0fd-47e2-af7b-9bd59334d8ce"},{"ref":"EID81b19dbf-22aa-4e4f-bd44-cba7766903a6"}]},"parent":{"ref":"EID6a36a5fe-0175-1000-6141-24d0e5ad4d7e"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/0a1d5f53-3f92-45bc-9f1d-8a6512e64f9a.json"},"startTimestamp":"2020-10-27T13:19:27Z","duration":119,"status":"PASSED"},{"id":"EID6a36a6a2-0175-1000-81bd-677d6aa5f479","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36a803-0175-1000-fff0-e00fd2241a84","parent":{"ref":"EID6a36a6a2-0175-1000-81bd-677d6aa5f479"},"resultedFrom":{"ref":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3"},"startTimestamp":"2020-10-27T13:19:28Z","duration":0,"status":"PASSED"},{"id":"EID6a36a803-0175-1000-da09-5710368dc944","parent":{"ref":"EID6a36a6a2-0175-1000-81bd-677d6aa5f479"},"resultedFrom":{"ref":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135"},"startTimestamp":"2020-10-27T13:19:28Z","duration":0,"status":"PASSED"},{"id":"EID6a36a803-0175-1000-3a05-cd50e2b40c72","parent":{"ref":"EID6a36a6a2-0175-1000-81bd-677d6aa5f479"},"resultedFrom":{"ref":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104"},"startTimestamp":"2020-10-27T13:19:28Z","duration":0,"status":"PASSED"},{"id":"EID6a36a803-0175-1000-1483-530383529260","messages":{"message":{"ref":"TR.manual.checkLinkToDirectAccessDownloadService","translationArguments":{"argument":[{"token":"elementName","$":"feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a36a6a2-0175-1000-81bd-677d6aa5f479"},"resultedFrom":{"ref":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1"},"startTimestamp":"2020-10-27T13:19:28Z","duration":0,"status":"PASSED_MANUAL"}]},"attachments":{"attachment":[{"ref":"EIDfca248c4-0078-4765-81fe-a701c548f5c8"},{"ref":"EID724b7b18-4f91-4317-b336-d25a812df290"},{"ref":"EID613203cd-dbb5-40dd-9715-cacec411d2a6"}]},"parent":{"ref":"EID6a36a5fe-0175-1000-6141-24d0e5ad4d7e"},"resultedFrom":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"startTimestamp":"2020-10-27T13:19:27Z","duration":162,"status":"PASSED_MANUAL"}]},"parent":{"ref":"EID6a3697c1-0175-1000-9c97-82e950121f4d"},"resultedFrom":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"startTimestamp":"2020-10-27T13:19:27Z","duration":517,"status":"PASSED_MANUAL"},{"id":"EID6a36a803-0175-1000-92e2-6b90f7234efa","testStepResults":{"TestStepResult":{"id":"EID6a36a803-0175-1000-d43f-77aed0562e6d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36a8f5-0175-1000-9597-3a28058ff7c2","parent":{"ref":"EID6a36a803-0175-1000-d43f-77aed0562e6d"},"resultedFrom":{"ref":"EID735c1133-f7b2-450d-a76d-2233016fe4b2"},"startTimestamp":"2020-10-27T13:19:28Z","duration":0,"status":"PASSED"},{"id":"EID6a36a8f5-0175-1000-376c-e5e9a91b6d00","parent":{"ref":"EID6a36a803-0175-1000-d43f-77aed0562e6d"},"resultedFrom":{"ref":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78"},"startTimestamp":"2020-10-27T13:19:28Z","duration":0,"status":"PASSED"},{"id":"EID6a36a8f5-0175-1000-9f4e-a85813fc8586","parent":{"ref":"EID6a36a803-0175-1000-d43f-77aed0562e6d"},"resultedFrom":{"ref":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf"},"startTimestamp":"2020-10-27T13:19:28Z","duration":0,"status":"PASSED"},{"id":"EID6a36a8f5-0175-1000-a1d5-60f2cba720ba","parent":{"ref":"EID6a36a803-0175-1000-d43f-77aed0562e6d"},"resultedFrom":{"ref":"EID725bc702-044a-4404-b09e-d001ca93d527"},"startTimestamp":"2020-10-27T13:19:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID220d284a-1aee-4872-aef5-8cb93d4832af"},{"ref":"EID499e471a-4076-4ab8-8416-0340cb47054e"},{"ref":"EID42498c0c-d82f-4948-9b9b-0cc6fdcb2c78"}]},"parent":{"ref":"EID6a36a803-0175-1000-92e2-6b90f7234efa"},"resultedFrom":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"startTimestamp":"2020-10-27T13:19:28Z","duration":71,"status":"PASSED"}},"parent":{"ref":"EID6a3697c1-0175-1000-9c97-82e950121f4d"},"resultedFrom":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"startTimestamp":"2020-10-27T13:19:28Z","duration":251,"status":"PASSED"},{"id":"EID6a36a8fe-0175-1000-6f4f-bfd49855124c","testStepResults":{"TestStepResult":{"id":"EID6a36a8ff-0175-1000-aa1e-66942217be95","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36a9d5-0175-1000-5f22-73869358f4db","parent":{"ref":"EID6a36a8ff-0175-1000-aa1e-66942217be95"},"resultedFrom":{"ref":"EIDfc854807-b285-4a38-8aa5-d97cd2044247"},"startTimestamp":"2020-10-27T13:19:28Z","duration":0,"status":"PASSED"},{"id":"EID6a36a9d6-0175-1000-e541-258408471e81","parent":{"ref":"EID6a36a8ff-0175-1000-aa1e-66942217be95"},"resultedFrom":{"ref":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e"},"startTimestamp":"2020-10-27T13:19:28Z","duration":0,"status":"PASSED"},{"id":"EID6a36a9d6-0175-1000-3be3-968cb8f8856d","parent":{"ref":"EID6a36a8ff-0175-1000-aa1e-66942217be95"},"resultedFrom":{"ref":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c"},"startTimestamp":"2020-10-27T13:19:28Z","duration":0,"status":"PASSED"},{"id":"EID6a36a9d6-0175-1000-c320-f60bd76f312f","parent":{"ref":"EID6a36a8ff-0175-1000-aa1e-66942217be95"},"resultedFrom":{"ref":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd"},"startTimestamp":"2020-10-27T13:19:28Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDb7c1a5da-a3d6-4c06-ad32-aee853bd2bf9"},{"ref":"EID7c17ca51-1353-4dd4-a9a5-1a08951214be"},{"ref":"EID641c6446-231f-4c38-b434-598ff4c17355"}]},"parent":{"ref":"EID6a36a8fe-0175-1000-6f4f-bfd49855124c"},"resultedFrom":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"startTimestamp":"2020-10-27T13:19:28Z","duration":96,"status":"PASSED"}},"parent":{"ref":"EID6a3697c1-0175-1000-9c97-82e950121f4d"},"resultedFrom":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"startTimestamp":"2020-10-27T13:19:28Z","duration":216,"status":"PASSED"},{"id":"EID6a36a9d6-0175-1000-2e32-bf85657df9a3","testStepResults":{"TestStepResult":{"id":"EID6a36a9d6-0175-1000-037e-38ed1803bf2b","messages":{"message":{"ref":"TR.unexpectedHtml"}},"attachments":{"attachment":[{"ref":"EID9b0722e2-afad-4cb4-a6ec-c40917f4176c"},{"ref":"EIDb1d8d06e-48da-4b78-95a9-6e67eb11eb0a"},{"ref":"EIDd8ae77be-1ad6-4f7a-be18-2b66c1c2515c"},{"ref":"EID3df54649-62b4-43cc-bbdb-0aebacab5e4b"},{"ref":"EIDabd34276-7c73-4e19-b4fb-9d5462c7e8a4"},{"ref":"EID644b8f6c-a897-47e3-bdf7-0fc6d7cbe069"},{"ref":"EIDca16e445-1ccc-442d-bead-b13291128548"},{"ref":"EID79e82844-5d20-4f29-930e-c3be55440974"},{"ref":"EIDa8b228a1-3eb2-44dd-9d8e-687064cdfe55"}]},"parent":{"ref":"EID6a36a9d6-0175-1000-2e32-bf85657df9a3"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/07e52606-e155-4314-9ddd-9f1b498690be.json"},"startTimestamp":"2020-10-27T13:19:28Z","duration":726,"status":"SKIPPED"}},"parent":{"ref":"EID6a3697c1-0175-1000-9c97-82e950121f4d"},"resultedFrom":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"startTimestamp":"2020-10-27T13:19:28Z","duration":965,"status":"SKIPPED"},{"id":"EID6a36ad9b-0175-1000-1404-9c0a48d38bb8","testStepResults":{"TestStepResult":{"id":"EID6a36ad9b-0175-1000-e5fd-c07fc2808530","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36ae9c-0175-1000-3b48-787cb7a860f9","parent":{"ref":"EID6a36ad9b-0175-1000-e5fd-c07fc2808530"},"resultedFrom":{"ref":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36ae9c-0175-1000-e8db-281ef40c41b7","parent":{"ref":"EID6a36ad9b-0175-1000-e5fd-c07fc2808530"},"resultedFrom":{"ref":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36ae9c-0175-1000-a5f8-00084858e374","parent":{"ref":"EID6a36ad9b-0175-1000-e5fd-c07fc2808530"},"resultedFrom":{"ref":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"},{"id":"EID6a36ae9c-0175-1000-225e-bdc290c687d0","parent":{"ref":"EID6a36ad9b-0175-1000-e5fd-c07fc2808530"},"resultedFrom":{"ref":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e"},"startTimestamp":"2020-10-27T13:19:29Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID294433f8-8637-4180-9b5f-0b9bd0d691c8"},{"ref":"EID426fd9c0-c8ac-48cf-b0ef-e03945dbc935"},{"ref":"EIDca4c8dd7-11eb-4e15-8527-bb24514f3d86"}]},"parent":{"ref":"EID6a36ad9b-0175-1000-1404-9c0a48d38bb8"},"resultedFrom":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"startTimestamp":"2020-10-27T13:19:29Z","duration":136,"status":"PASSED"}},"parent":{"ref":"EID6a3697c1-0175-1000-9c97-82e950121f4d"},"resultedFrom":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"startTimestamp":"2020-10-27T13:19:29Z","duration":257,"status":"PASSED"},{"id":"EID6a36ae9c-0175-1000-4414-78df8e9682ef","testStepResults":{"TestStepResult":{"id":"EID6a36ae9c-0175-1000-5795-e1edb49f6b35","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36af7a-0175-1000-be85-00c96816111c","parent":{"ref":"EID6a36ae9c-0175-1000-5795-e1edb49f6b35"},"resultedFrom":{"ref":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"},{"id":"EID6a36af7a-0175-1000-6157-01cb19f5599c","parent":{"ref":"EID6a36ae9c-0175-1000-5795-e1edb49f6b35"},"resultedFrom":{"ref":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"},{"id":"EID6a36af7a-0175-1000-2afd-8ddecd4b2d09","parent":{"ref":"EID6a36ae9c-0175-1000-5795-e1edb49f6b35"},"resultedFrom":{"ref":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"},{"id":"EID6a36af7a-0175-1000-1588-8f92e426b54d","parent":{"ref":"EID6a36ae9c-0175-1000-5795-e1edb49f6b35"},"resultedFrom":{"ref":"EID44374564-e394-4c06-b685-46c9369e29d1"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"},{"id":"EID6a36af7a-0175-1000-f54e-b7919eaa71dd","parent":{"ref":"EID6a36ae9c-0175-1000-5795-e1edb49f6b35"},"resultedFrom":{"ref":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"},{"id":"EID6a36af7a-0175-1000-4834-9d31790a04f3","parent":{"ref":"EID6a36ae9c-0175-1000-5795-e1edb49f6b35"},"resultedFrom":{"ref":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID3455222e-33cc-44e1-b856-9ed39e9a6c64"},{"ref":"EID4f0ab5c4-75c0-451b-9a3e-c74821ce8acc"},{"ref":"EIDf27b51e2-1a27-4422-b900-0705b8d474e3"}]},"parent":{"ref":"EID6a36ae9c-0175-1000-4414-78df8e9682ef"},"resultedFrom":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"startTimestamp":"2020-10-27T13:19:29Z","duration":64,"status":"PASSED"}},"parent":{"ref":"EID6a3697c1-0175-1000-9c97-82e950121f4d"},"resultedFrom":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"startTimestamp":"2020-10-27T13:19:29Z","duration":222,"status":"PASSED"},{"id":"EID6a36af7a-0175-1000-61fa-8bf088535cc1","testStepResults":{"TestStepResult":{"id":"EID6a36af7b-0175-1000-f468-fd285018ccb6","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36b072-0175-1000-b8ea-f52c1e9e1e1b","parent":{"ref":"EID6a36af7b-0175-1000-f468-fd285018ccb6"},"resultedFrom":{"ref":"EID1a696ecb-91f0-4291-992d-d50309f756c9"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"},{"id":"EID6a36b072-0175-1000-c27e-0db436466488","parent":{"ref":"EID6a36af7b-0175-1000-f468-fd285018ccb6"},"resultedFrom":{"ref":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"},{"id":"EID6a36b072-0175-1000-99ea-73528518ca01","parent":{"ref":"EID6a36af7b-0175-1000-f468-fd285018ccb6"},"resultedFrom":{"ref":"EID97f57414-5b41-465a-95b0-596c884bc25a"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"},{"id":"EID6a36b072-0175-1000-de5c-922f6b3d5fbe","parent":{"ref":"EID6a36af7b-0175-1000-f468-fd285018ccb6"},"resultedFrom":{"ref":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"},{"id":"EID6a36b072-0175-1000-6f48-2e63ba429bec","parent":{"ref":"EID6a36af7b-0175-1000-f468-fd285018ccb6"},"resultedFrom":{"ref":"EID94ae8e41-ca18-4c83-87d8-81de55891d86"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"},{"id":"EID6a36b072-0175-1000-f6fd-3eb5f55359e3","parent":{"ref":"EID6a36af7b-0175-1000-f468-fd285018ccb6"},"resultedFrom":{"ref":"EID68cf959b-8629-4c39-89f2-1988e0fa5487"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID50ac5732-0913-45e7-a985-0dc70c6fc66c"},{"ref":"EIDae43d5f6-cb5b-4a05-bc6c-1b883275468c"},{"ref":"EID82080a68-ccfd-44e9-8854-72d6355e4020"}]},"parent":{"ref":"EID6a36af7a-0175-1000-61fa-8bf088535cc1"},"resultedFrom":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"startTimestamp":"2020-10-27T13:19:30Z","duration":67,"status":"PASSED"}},"parent":{"ref":"EID6a3697c1-0175-1000-9c97-82e950121f4d"},"resultedFrom":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"startTimestamp":"2020-10-27T13:19:30Z","duration":248,"status":"PASSED"},{"id":"EID6a36b072-0175-1000-e21c-a4836c0b41ab","testStepResults":{"TestStepResult":{"id":"EID6a36b072-0175-1000-c6e2-da0c6e2c3cc9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36b209-0175-1000-9f34-788a9f07619b","parent":{"ref":"EID6a36b072-0175-1000-c6e2-da0c6e2c3cc9"},"resultedFrom":{"ref":"EID816b487c-0309-416b-a9b0-2cf5ed326e08"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"},{"id":"EID6a36b209-0175-1000-45fa-19bc880353e0","parent":{"ref":"EID6a36b072-0175-1000-c6e2-da0c6e2c3cc9"},"resultedFrom":{"ref":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"},{"id":"EID6a36b209-0175-1000-67fb-24c483aad015","parent":{"ref":"EID6a36b072-0175-1000-c6e2-da0c6e2c3cc9"},"resultedFrom":{"ref":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"},{"id":"EID6a36b209-0175-1000-9e58-9c866421c0ca","parent":{"ref":"EID6a36b072-0175-1000-c6e2-da0c6e2c3cc9"},"resultedFrom":{"ref":"EID9e5db714-8cae-4709-8efd-c793aca80c4c"},"startTimestamp":"2020-10-27T13:19:30Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID6dc09f4b-5011-4bf9-8d85-a50a03d69545"},{"ref":"EID45d75410-e6b4-4396-8b97-d8c858a82f81"},{"ref":"EID6a4f0028-dde5-4475-a2e7-174ea21bc369"}]},"parent":{"ref":"EID6a36b072-0175-1000-e21c-a4836c0b41ab"},"resultedFrom":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"startTimestamp":"2020-10-27T13:19:30Z","duration":103,"status":"PASSED"}},"parent":{"ref":"EID6a3697c1-0175-1000-9c97-82e950121f4d"},"resultedFrom":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"startTimestamp":"2020-10-27T13:19:30Z","duration":408,"status":"PASSED"},{"id":"EID6a36b20a-0175-1000-2017-95f654ec2826","testStepResults":{"TestStepResult":[{"id":"EID6a36b20a-0175-1000-d106-a6f41b6f252e","attachments":{"attachment":[{"ref":"EIDa67e19fe-bfb5-44aa-a9d5-b1966a053060"},{"ref":"EID98804704-bc74-4919-bbaf-0be3b7f387a9"},{"ref":"EIDda4d0715-db3c-4870-b303-bbf10e2742b3"},{"ref":"EID7be24583-2c8e-4794-a7f0-8dcf5db1360d"}]},"parent":{"ref":"EID6a36b20a-0175-1000-2017-95f654ec2826"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/71933598-4183-43b0-8ba7-cd280b7b59eb.json"},"startTimestamp":"2020-10-27T13:19:30Z","duration":262,"status":"PASSED"},{"id":"EID6a36b379-0175-1000-5308-f29dc1bcbb85","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36b44c-0175-1000-2c95-864a3b8295cb","parent":{"ref":"EID6a36b379-0175-1000-5308-f29dc1bcbb85"},"resultedFrom":{"ref":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"PASSED"},{"id":"EID6a36b44c-0175-1000-1d32-127f19fb0dc1","parent":{"ref":"EID6a36b379-0175-1000-5308-f29dc1bcbb85"},"resultedFrom":{"ref":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"PASSED"},{"id":"EID6a36b44c-0175-1000-f6fe-bda772672ad0","parent":{"ref":"EID6a36b379-0175-1000-5308-f29dc1bcbb85"},"resultedFrom":{"ref":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"PASSED"},{"id":"EID6a36b44c-0175-1000-cda6-6a5a9f354eba","messages":{"message":{"ref":"TR.uniqueDatasetIdentifiers","translationArguments":{"argument":[{"token":"actual","$":1},{"token":"element","$":"#text"},{"token":"expected","$":0},{"token":"xpath","$":"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and *:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])"}]}}},"parent":{"ref":"EID6a36b379-0175-1000-5308-f29dc1bcbb85"},"resultedFrom":{"ref":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID8272bcbb-e447-44d9-8b53-9af86f9cdd5b"},{"ref":"EID19b00647-2cd7-4c24-b7ed-0ca8f51524ef"},{"ref":"EID4715dff5-3c35-4d31-bacf-ee761a1546df"}]},"parent":{"ref":"EID6a36b20a-0175-1000-2017-95f654ec2826"},"resultedFrom":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"startTimestamp":"2020-10-27T13:19:31Z","duration":41,"status":"FAILED"}]},"parent":{"ref":"EID6a3697c1-0175-1000-9c97-82e950121f4d"},"resultedFrom":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"startTimestamp":"2020-10-27T13:19:30Z","duration":586,"status":"FAILED"},{"id":"EID6a36b454-0175-1000-0566-6167c2a8c16b","testStepResults":{"TestStepResult":{"id":"EID6a36b454-0175-1000-51f3-700204f48851","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36b553-0175-1000-211d-44c9c572c2a0","parent":{"ref":"EID6a36b454-0175-1000-51f3-700204f48851"},"resultedFrom":{"ref":"EID33789d28-70d9-49eb-be72-66ea2805a04e"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"PASSED"},{"id":"EID6a36b553-0175-1000-274d-ba8b62a07363","parent":{"ref":"EID6a36b454-0175-1000-51f3-700204f48851"},"resultedFrom":{"ref":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"PASSED"},{"id":"EID6a36b553-0175-1000-9fe5-ddd432d4035b","parent":{"ref":"EID6a36b454-0175-1000-51f3-700204f48851"},"resultedFrom":{"ref":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"PASSED"},{"id":"EID6a36b553-0175-1000-4539-62e0d59727f2","parent":{"ref":"EID6a36b454-0175-1000-51f3-700204f48851"},"resultedFrom":{"ref":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDbd3e2939-474e-42cf-ac30-655ac2c1e969"},{"ref":"EIDee73fa60-1a08-4ccc-a00d-da9284797159"},{"ref":"EID0bfdbef9-3341-42fb-b487-ecb3f4328721"}]},"parent":{"ref":"EID6a36b454-0175-1000-0566-6167c2a8c16b"},"resultedFrom":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"startTimestamp":"2020-10-27T13:19:31Z","duration":97,"status":"PASSED"}},"parent":{"ref":"EID6a3697c1-0175-1000-9c97-82e950121f4d"},"resultedFrom":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"startTimestamp":"2020-10-27T13:19:31Z","duration":255,"status":"PASSED"},{"id":"EID6a36b553-0175-1000-3849-0372edd811c7","testStepResults":{"TestStepResult":[{"id":"EID6a36b553-0175-1000-2139-688084131ca5","parent":{"ref":"EID6a36b553-0175-1000-3849-0372edd811c7"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/96ce6b09-638f-40cd-919b-785cb006117d.json"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"PASSED"},{"id":"EID6a36b553-0175-1000-f7f5-e9e58c5783e0","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36b609-0175-1000-718a-1e80fc2d2972","parent":{"ref":"EID6a36b553-0175-1000-f7f5-e9e58c5783e0"},"resultedFrom":{"ref":"EID51637bcb-84c0-43de-a410-39cfe7214d42"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"PASSED"},{"id":"EID6a36b609-0175-1000-1bfb-015bf6661b47","parent":{"ref":"EID6a36b553-0175-1000-f7f5-e9e58c5783e0"},"resultedFrom":{"ref":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"PASSED"},{"id":"EID6a36b609-0175-1000-e2a6-e4d364ef8199","parent":{"ref":"EID6a36b553-0175-1000-f7f5-e9e58c5783e0"},"resultedFrom":{"ref":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"PASSED"},{"id":"EID6a36b609-0175-1000-075b-9ad9905ed254","messages":{"message":{"ref":"TR.missingLinkToMetadataRecordForDownloadService","translationArguments":{"argument":[{"token":"element","$":"vnd.ogc.csw.GetRecordByIdResponse_xml']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']"}]}}},"parent":{"ref":"EID6a36b553-0175-1000-f7f5-e9e58c5783e0"},"resultedFrom":{"ref":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID41e1e947-ae37-4c14-b59c-44a01bb08705"},{"ref":"EIDf2bcad58-5a33-477d-9f40-78424676f006"},{"ref":"EIDd17d6222-e68d-4b6b-90ad-915a5f16b841"}]},"parent":{"ref":"EID6a36b553-0175-1000-3849-0372edd811c7"},"resultedFrom":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"startTimestamp":"2020-10-27T13:19:31Z","duration":74,"status":"FAILED"}]},"parent":{"ref":"EID6a3697c1-0175-1000-9c97-82e950121f4d"},"resultedFrom":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"startTimestamp":"2020-10-27T13:19:31Z","duration":182,"status":"FAILED"}]},"parent":{"ref":"EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d"},"resultedFrom":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"startTimestamp":"2020-10-27T13:19:24Z","duration":7752,"status":"FAILED"},{"id":"EID6a36b609-0175-1000-389b-b1cb2d49d8d3","testCaseResults":{"TestCaseResult":[{"id":"EID6a36b609-0175-1000-7e60-776209fb2671","testStepResults":{"TestStepResult":[{"id":"EID6a36b609-0175-1000-c627-2fddd50627cb","parent":{"ref":"EID6a36b609-0175-1000-7e60-776209fb2671"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/cd9fd714-929c-4557-acf1-bf5e4f7623b7.json"},"startTimestamp":"2020-10-27T13:19:31Z","duration":0,"status":"PASSED"},{"id":"EID6a36b609-0175-1000-d23f-a55095e433a5","parent":{"ref":"EID6a36b609-0175-1000-7e60-776209fb2671"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/d46091ed-55ea-4804-b575-d8921a120ffe.json"},"startTimestamp":"2020-10-27T13:19:31Z","duration":96,"status":"PASSED"},{"id":"EID6a36b609-0175-1000-38ba-73aac9e0c3cd","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36b6fc-0175-1000-9b9a-5007fd01756f","parent":{"ref":"EID6a36b609-0175-1000-38ba-73aac9e0c3cd"},"resultedFrom":{"ref":"EID7e59dda7-5894-467a-8898-aab1452b2ca8"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"},{"id":"EID6a36b6fc-0175-1000-2daf-8e3ec5ddbdbc","parent":{"ref":"EID6a36b609-0175-1000-38ba-73aac9e0c3cd"},"resultedFrom":{"ref":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"},{"id":"EID6a36b6fc-0175-1000-b915-65ced0b240d5","parent":{"ref":"EID6a36b609-0175-1000-38ba-73aac9e0c3cd"},"resultedFrom":{"ref":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd861fa77-ddce-4bfb-8a6d-eb379419b635"},{"ref":"EIDa79afd92-16c2-477d-a671-e591abaa6c50"},{"ref":"EID736f7a2b-0ec3-45e9-8542-e7dfe5dfb26b"}]},"parent":{"ref":"EID6a36b609-0175-1000-7e60-776209fb2671"},"resultedFrom":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"startTimestamp":"2020-10-27T13:19:31Z","duration":98,"status":"PASSED"},{"id":"EID6a36b6fd-0175-1000-1ae0-7f947f20bc49","attachments":{"attachment":{"ref":"EIDd3994ad9-870b-490f-b161-d638be3c4d4f"}},"parent":{"ref":"EID6a36b609-0175-1000-7e60-776209fb2671"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/2a0045bd-d9f0-462c-95f3-340afb510c4a.json"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"},{"id":"EID6a36b707-0175-1000-5c3c-37f55c5c4bbb","parent":{"ref":"EID6a36b609-0175-1000-7e60-776209fb2671"},"resultedFrom":{"ref":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90"},"startTimestamp":"2020-10-27T13:19:32Z","duration":25,"status":"PASSED"}]},"parent":{"ref":"EID6a36b609-0175-1000-389b-b1cb2d49d8d3"},"resultedFrom":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"startTimestamp":"2020-10-27T13:19:31Z","duration":279,"status":"PASSED"},{"id":"EID6a36b720-0175-1000-cf5c-4d5b1c2bc561","testStepResults":{"TestStepResult":[{"id":"EID6a36b720-0175-1000-402a-793ae28ad578","parent":{"ref":"EID6a36b720-0175-1000-cf5c-4d5b1c2bc561"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6911c18d-4c5b-4d61-bb81-13c1d8f6e591.json"},"startTimestamp":"2020-10-27T13:19:32Z","duration":42,"status":"PASSED"},{"id":"EID6a36b720-0175-1000-3890-41fac4bcaae7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36b78d-0175-1000-956d-3e71017f44a6","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a36b720-0175-1000-3890-41fac4bcaae7"},"resultedFrom":{"ref":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48"},"startTimestamp":"2020-10-27T13:19:32Z","duration":21,"status":"FAILED"},{"id":"EID6a36b7a2-0175-1000-7917-97d7c6c80ea3","parent":{"ref":"EID6a36b720-0175-1000-3890-41fac4bcaae7"},"resultedFrom":{"ref":"EID42507c13-e6d6-4919-93b4-407ad56671b9"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"},{"id":"EID6a36b7a2-0175-1000-8360-e560b7cd4e39","parent":{"ref":"EID6a36b720-0175-1000-3890-41fac4bcaae7"},"resultedFrom":{"ref":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"},{"id":"EID6a36b7a2-0175-1000-88c4-14d84b8c3179","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:name"},{"token":"xpath","$":"/atom:feed/atom:author/atom:name"}]}}},"parent":{"ref":"EID6a36b720-0175-1000-3890-41fac4bcaae7"},"resultedFrom":{"ref":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"FAILED"},{"id":"EID6a36b7a2-0175-1000-434c-05eba8a9f9d2","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:email"},{"token":"xpath","$":"/atom:feed/atom:author/atom:email"}]}}},"parent":{"ref":"EID6a36b720-0175-1000-3890-41fac4bcaae7"},"resultedFrom":{"ref":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDb4170873-4387-40a0-b2e8-ef318435ca2f"},{"ref":"EID19236f97-9ff2-4a23-99cb-9e9c86a34a62"},{"ref":"EID4dd09c1d-d080-417c-84ed-d4b94db3586d"}]},"parent":{"ref":"EID6a36b720-0175-1000-cf5c-4d5b1c2bc561"},"resultedFrom":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"startTimestamp":"2020-10-27T13:19:32Z","duration":29,"status":"FAILED"}]},"parent":{"ref":"EID6a36b609-0175-1000-389b-b1cb2d49d8d3"},"resultedFrom":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"startTimestamp":"2020-10-27T13:19:32Z","duration":130,"status":"FAILED"},{"id":"EID6a36b7a2-0175-1000-1d96-5a2221a501dd","testStepResults":{"TestStepResult":{"id":"EID6a36b7a2-0175-1000-1ad5-d172c2361755","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36b7f9-0175-1000-1b84-ec2801ae1d86","parent":{"ref":"EID6a36b7a2-0175-1000-1ad5-d172c2361755"},"resultedFrom":{"ref":"EIDed94db52-6a1d-4103-8645-2128cd464847"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"},{"id":"EID6a36b7f9-0175-1000-cc78-8477eb81f9b8","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a36b7a2-0175-1000-1ad5-d172c2361755"},"resultedFrom":{"ref":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd"},"startTimestamp":"2020-10-27T13:19:32Z","duration":87,"status":"FAILED"},{"id":"EID6a36b850-0175-1000-195d-36e73296ba61","parent":{"ref":"EID6a36b7a2-0175-1000-1ad5-d172c2361755"},"resultedFrom":{"ref":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDcfb4408e-b358-4099-86b5-a0aac8d0d5a8"},{"ref":"EID812963c5-7a7d-4d6b-a44d-a6e8cd04cb25"},{"ref":"EIDa1d51bd8-e499-487a-980e-46d05bf394b8"}]},"parent":{"ref":"EID6a36b7a2-0175-1000-1d96-5a2221a501dd"},"resultedFrom":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"startTimestamp":"2020-10-27T13:19:32Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6a36b609-0175-1000-389b-b1cb2d49d8d3"},"resultedFrom":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"startTimestamp":"2020-10-27T13:19:32Z","duration":174,"status":"FAILED"},{"id":"EID6a36b850-0175-1000-4b76-ce839d918b1e","testStepResults":{"TestStepResult":{"id":"EID6a36b850-0175-1000-0bfa-126d0c96aac8","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36b8c2-0175-1000-97e5-544a4f850e24","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a36b850-0175-1000-0bfa-126d0c96aac8"},"resultedFrom":{"ref":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"FAILED"},{"id":"EID6a36b8c2-0175-1000-02bf-8b9b7cf2f0f3","parent":{"ref":"EID6a36b850-0175-1000-0bfa-126d0c96aac8"},"resultedFrom":{"ref":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"},{"id":"EID6a36b8c2-0175-1000-fcc7-b00c0b7c2079","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a36b850-0175-1000-0bfa-126d0c96aac8"},"resultedFrom":{"ref":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed"},"startTimestamp":"2020-10-27T13:19:32Z","duration":15,"status":"FAILED"},{"id":"EID6a36b8d1-0175-1000-3903-f52bfcb395ae","messages":{"message":{"ref":"TR.missingOneFeedEntryWithDlFile","translationArguments":{"argument":[{"token":"element","$":"@href"},{"token":"xpath","$":"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href"}]}}},"parent":{"ref":"EID6a36b850-0175-1000-0bfa-126d0c96aac8"},"resultedFrom":{"ref":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EIDefe4f82e-78fa-41ec-a025-d15f2aa6f610"},{"ref":"EID90ebca86-d55c-4770-b6f4-d5d44496a75f"},{"ref":"EID97406ddf-27c4-458c-a25d-6230d9c2c085"}]},"parent":{"ref":"EID6a36b850-0175-1000-4b76-ce839d918b1e"},"resultedFrom":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"startTimestamp":"2020-10-27T13:19:32Z","duration":27,"status":"FAILED"}},"parent":{"ref":"EID6a36b609-0175-1000-389b-b1cb2d49d8d3"},"resultedFrom":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"startTimestamp":"2020-10-27T13:19:32Z","duration":143,"status":"FAILED"},{"id":"EID6a36b8df-0175-1000-8052-943ccd0dd2b3","testStepResults":{"TestStepResult":{"id":"EID6a36b8df-0175-1000-040a-84f50053b64c","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36b934-0175-1000-135a-f466fc89e961","parent":{"ref":"EID6a36b8df-0175-1000-040a-84f50053b64c"},"resultedFrom":{"ref":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"},{"id":"EID6a36b934-0175-1000-44b4-016d898ffddb","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a36b8df-0175-1000-040a-84f50053b64c"},"resultedFrom":{"ref":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296"},"startTimestamp":"2020-10-27T13:19:32Z","duration":11,"status":"FAILED"},{"id":"EID6a36b93f-0175-1000-fb14-584e50e49b5c","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:rights"},{"token":"xpath","$":"/atom:feed/atom:rights"}]}}},"parent":{"ref":"EID6a36b8df-0175-1000-040a-84f50053b64c"},"resultedFrom":{"ref":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID73def759-9530-4553-9ece-10a64457a015"},{"ref":"EID61359755-1414-4219-80a7-1831f792b7c7"},{"ref":"EID414a50eb-dbdc-4ceb-8927-abfb496134f1"}]},"parent":{"ref":"EID6a36b8df-0175-1000-8052-943ccd0dd2b3"},"resultedFrom":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"startTimestamp":"2020-10-27T13:19:32Z","duration":31,"status":"FAILED"}},"parent":{"ref":"EID6a36b609-0175-1000-389b-b1cb2d49d8d3"},"resultedFrom":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"startTimestamp":"2020-10-27T13:19:32Z","duration":96,"status":"FAILED"},{"id":"EID6a36b940-0175-1000-b34e-43707606fd98","testStepResults":{"TestStepResult":{"id":"EID6a36b940-0175-1000-7dbe-bd560e6f6162","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36b9cd-0175-1000-5333-904058a218a5","parent":{"ref":"EID6a36b940-0175-1000-7dbe-bd560e6f6162"},"resultedFrom":{"ref":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"PASSED"},{"id":"EID6a36b9cd-0175-1000-1a06-aa213f96aae4","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a36b940-0175-1000-7dbe-bd560e6f6162"},"resultedFrom":{"ref":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d"},"startTimestamp":"2020-10-27T13:19:32Z","duration":95,"status":"FAILED"},{"id":"EID6a36ba2c-0175-1000-9777-0fcb07f4f6f9","messages":{"message":{"ref":"TR.missingElement","translationArguments":{"argument":[{"token":"element","$":"atom:title"},{"token":"xpath","$":"/atom:feed/atom:title"}]}}},"parent":{"ref":"EID6a36b940-0175-1000-7dbe-bd560e6f6162"},"resultedFrom":{"ref":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf"},"startTimestamp":"2020-10-27T13:19:32Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID317477b1-8238-4e5c-914a-85a6a283199f"},{"ref":"EIDbc19adab-f4cd-4240-866b-8685e99f2df4"},{"ref":"EID1ab9c28a-a9cd-4ba1-bea3-10673faa98c0"}]},"parent":{"ref":"EID6a36b940-0175-1000-b34e-43707606fd98"},"resultedFrom":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"startTimestamp":"2020-10-27T13:19:32Z","duration":29,"status":"FAILED"}},"parent":{"ref":"EID6a36b609-0175-1000-389b-b1cb2d49d8d3"},"resultedFrom":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"startTimestamp":"2020-10-27T13:19:32Z","duration":236,"status":"FAILED"},{"id":"EID6a36ba2c-0175-1000-77e0-587b80058c1e","testStepResults":{"TestStepResult":{"id":"EID6a36ba2c-0175-1000-c1eb-e332ac2cb397","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36baa4-0175-1000-ead1-197aef0db968","parent":{"ref":"EID6a36ba2c-0175-1000-c1eb-e332ac2cb397"},"resultedFrom":{"ref":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36baa4-0175-1000-0ea8-9f898b073a02","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a36ba2c-0175-1000-c1eb-e332ac2cb397"},"resultedFrom":{"ref":"EID1690699e-6bcd-4c07-bd29-aced03506d36"},"startTimestamp":"2020-10-27T13:19:33Z","duration":10,"status":"FAILED"},{"id":"EID6a36baae-0175-1000-4728-57e11d4363cc","messages":{"message":{"ref":"TR.missingFeedUpdatedInformation"}},"parent":{"ref":"EID6a36ba2c-0175-1000-c1eb-e332ac2cb397"},"resultedFrom":{"ref":"EIDe785106d-a4fe-448f-8167-9eeb514661e7"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"FAILED"},{"id":"EID6a36baae-0175-1000-9801-30dc5ade86ef","parent":{"ref":"EID6a36ba2c-0175-1000-c1eb-e332ac2cb397"},"resultedFrom":{"ref":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f"},"startTimestamp":"2020-10-27T13:19:33Z","duration":1,"status":"PASSED"},{"id":"EID6a36baaf-0175-1000-17db-dcc66021cad7","parent":{"ref":"EID6a36ba2c-0175-1000-c1eb-e332ac2cb397"},"resultedFrom":{"ref":"EIDca40e458-362b-440c-a992-6efabf463339"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID30f7e195-8dca-4f24-b409-9b25d1c2ac64"},{"ref":"EID2d926ae9-162c-4a47-b9b4-9804b0d165a1"},{"ref":"EID60f71a84-25b6-415c-945c-507a5c972b31"}]},"parent":{"ref":"EID6a36ba2c-0175-1000-77e0-587b80058c1e"},"resultedFrom":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"startTimestamp":"2020-10-27T13:19:32Z","duration":31,"status":"FAILED"}},"parent":{"ref":"EID6a36b609-0175-1000-389b-b1cb2d49d8d3"},"resultedFrom":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"startTimestamp":"2020-10-27T13:19:32Z","duration":131,"status":"FAILED"},{"id":"EID6a36baaf-0175-1000-160d-6971be5ac03c","testStepResults":{"TestStepResult":{"id":"EID6a36baaf-0175-1000-f7d1-3a730e8697b4","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36bb06-0175-1000-c172-c1551c195820","parent":{"ref":"EID6a36baaf-0175-1000-f7d1-3a730e8697b4"},"resultedFrom":{"ref":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bb06-0175-1000-1998-81903f1f5576","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a36baaf-0175-1000-f7d1-3a730e8697b4"},"resultedFrom":{"ref":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef"},"startTimestamp":"2020-10-27T13:19:33Z","duration":16,"status":"FAILED"},{"id":"EID6a36bb17-0175-1000-878c-0a102fc6afa4","parent":{"ref":"EID6a36baaf-0175-1000-f7d1-3a730e8697b4"},"resultedFrom":{"ref":"EIDc5baa617-99df-453c-89d5-889050c29330"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID9a891e5e-eb22-4cbf-8456-93f18cd4ae92"},{"ref":"EID8b9184d2-3ff9-420e-a951-7f1de4982fef"},{"ref":"EIDc79290e6-2c62-43fc-9886-cb81006020c4"}]},"parent":{"ref":"EID6a36baaf-0175-1000-160d-6971be5ac03c"},"resultedFrom":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"startTimestamp":"2020-10-27T13:19:33Z","duration":28,"status":"FAILED"}},"parent":{"ref":"EID6a36b609-0175-1000-389b-b1cb2d49d8d3"},"resultedFrom":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"startTimestamp":"2020-10-27T13:19:33Z","duration":104,"status":"FAILED"},{"id":"EID6a36bb17-0175-1000-723a-a47fc7c59ab4","testStepResults":{"TestStepResult":{"id":"EID6a36bb17-0175-1000-3e72-1aba080aec52","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36bb76-0175-1000-b900-2d0c577bb85a","parent":{"ref":"EID6a36bb17-0175-1000-3e72-1aba080aec52"},"resultedFrom":{"ref":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bb76-0175-1000-be14-b8332d81f52b","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a36bb17-0175-1000-3e72-1aba080aec52"},"resultedFrom":{"ref":"EID49422432-0c1b-4af3-bfa2-251d5ae79228"},"startTimestamp":"2020-10-27T13:19:33Z","duration":9,"status":"FAILED"},{"id":"EID6a36bb7f-0175-1000-953b-283d8d8501be","parent":{"ref":"EID6a36bb17-0175-1000-3e72-1aba080aec52"},"resultedFrom":{"ref":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDd35f7381-dbf5-477e-b016-2b36656953e4"},{"ref":"EID2168ee12-6433-4b43-9de1-c86c1a177c77"},{"ref":"EIDf2e16ea2-9d47-47ae-893e-758bb5b9e414"}]},"parent":{"ref":"EID6a36bb17-0175-1000-723a-a47fc7c59ab4"},"resultedFrom":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"startTimestamp":"2020-10-27T13:19:33Z","duration":30,"status":"FAILED"}},"parent":{"ref":"EID6a36b609-0175-1000-389b-b1cb2d49d8d3"},"resultedFrom":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"startTimestamp":"2020-10-27T13:19:33Z","duration":104,"status":"FAILED"},{"id":"EID6a36bb80-0175-1000-50c3-3dad2601cadd","testStepResults":{"TestStepResult":{"id":"EID6a36bb80-0175-1000-1e69-6c8f343201f1","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36bbf1-0175-1000-3578-c96d9bf1af35","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a36bb80-0175-1000-1e69-6c8f343201f1"},"resultedFrom":{"ref":"EID76133e1d-5614-401d-852e-4ef8815a1cef"},"startTimestamp":"2020-10-27T13:19:33Z","duration":11,"status":"FAILED"},{"id":"EID6a36bbfc-0175-1000-e0b2-9e4426aa3257","parent":{"ref":"EID6a36bb80-0175-1000-1e69-6c8f343201f1"},"resultedFrom":{"ref":"EIDabd27331-1785-46d9-86f2-d2139848a4c7"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bbfc-0175-1000-5937-f1d306a7cfd2","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a36bb80-0175-1000-1e69-6c8f343201f1"},"resultedFrom":{"ref":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17"},"startTimestamp":"2020-10-27T13:19:33Z","duration":1,"status":"FAILED"},{"id":"EID6a36bbfd-0175-1000-2a17-96139b82067a","messages":{"message":{"ref":"TR.missingLinkToRegistry","translationArguments":{"argument":[{"token":"element","$":"html']"},{"token":"xpath","$":"/atom:feed/atom:link[@rel='describedby' and @type='text/html']"}]}}},"parent":{"ref":"EID6a36bb80-0175-1000-1e69-6c8f343201f1"},"resultedFrom":{"ref":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"FAILED"}]},"attachments":{"attachment":[{"ref":"EID135930bc-1de7-4190-b046-5449803ae829"},{"ref":"EIDe889658e-2e9d-4dea-b656-27ef04447e90"},{"ref":"EIDf122ef9a-4375-4010-84d2-c2954514cdd1"}]},"parent":{"ref":"EID6a36bb80-0175-1000-50c3-3dad2601cadd"},"resultedFrom":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"startTimestamp":"2020-10-27T13:19:33Z","duration":25,"status":"FAILED"}},"parent":{"ref":"EID6a36b609-0175-1000-389b-b1cb2d49d8d3"},"resultedFrom":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"startTimestamp":"2020-10-27T13:19:33Z","duration":125,"status":"FAILED"},{"id":"EID6a36bbfd-0175-1000-a6fe-46969dea681b","testStepResults":{"TestStepResult":{"id":"EID6a36bbfd-0175-1000-a1df-0e0e5b85611a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36bc5a-0175-1000-8798-2254b30c8e72","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a36bbfd-0175-1000-a1df-0e0e5b85611a"},"resultedFrom":{"ref":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b"},"startTimestamp":"2020-10-27T13:19:33Z","duration":12,"status":"FAILED"},{"id":"EID6a36bc66-0175-1000-5e25-b8b8f20bc688","parent":{"ref":"EID6a36bbfd-0175-1000-a1df-0e0e5b85611a"},"resultedFrom":{"ref":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bc66-0175-1000-5821-904abcee20a9","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a36bbfd-0175-1000-a1df-0e0e5b85611a"},"resultedFrom":{"ref":"EID63eeee36-af99-4c6b-8afb-470859d16828"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"FAILED"},{"id":"EID6a36bc66-0175-1000-8136-267bd3ace033","parent":{"ref":"EID6a36bbfd-0175-1000-a1df-0e0e5b85611a"},"resultedFrom":{"ref":"EID3c96db82-a589-4a37-bcfd-73164aa74438"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID96ce246c-d95e-41c8-aec0-28c06b1e907b"},{"ref":"EID664f30be-3f68-4159-bfad-618e4724a74b"},{"ref":"EIDa9cfbca7-beeb-4dbf-897d-a741e9d6b48e"}]},"parent":{"ref":"EID6a36bbfd-0175-1000-a6fe-46969dea681b"},"resultedFrom":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"startTimestamp":"2020-10-27T13:19:33Z","duration":26,"status":"FAILED"}},"parent":{"ref":"EID6a36b609-0175-1000-389b-b1cb2d49d8d3"},"resultedFrom":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"startTimestamp":"2020-10-27T13:19:33Z","duration":105,"status":"FAILED"},{"id":"EID6a36bc66-0175-1000-b789-4a5faca983b4","testStepResults":{"TestStepResult":[{"id":"EID6a36bc66-0175-1000-33af-1d4056812583","parent":{"ref":"EID6a36bc66-0175-1000-b789-4a5faca983b4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/db77efab-6a81-4e08-814d-cad3b6af1275.json"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bc66-0175-1000-cd37-1366a6312aa0","parent":{"ref":"EID6a36bc66-0175-1000-b789-4a5faca983b4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1c20a4dc-c5ee-4442-8014-8910c2ac9b4e.json"},"startTimestamp":"2020-10-27T13:19:33Z","duration":129,"status":"PASSED"},{"id":"EID6a36bc66-0175-1000-c7c5-4652bd83bde5","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36bd16-0175-1000-d546-f1a555ca18c3","parent":{"ref":"EID6a36bc66-0175-1000-c7c5-4652bd83bde5"},"resultedFrom":{"ref":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bd16-0175-1000-4f57-568f7467f026","parent":{"ref":"EID6a36bc66-0175-1000-c7c5-4652bd83bde5"},"resultedFrom":{"ref":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bd16-0175-1000-d5df-0d8fa06fd335","parent":{"ref":"EID6a36bc66-0175-1000-c7c5-4652bd83bde5"},"resultedFrom":{"ref":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bd16-0175-1000-b05a-14bb6b85b304","parent":{"ref":"EID6a36bc66-0175-1000-c7c5-4652bd83bde5"},"resultedFrom":{"ref":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc841af67-b90f-4cca-a8ca-c46f0887f1ac"},{"ref":"EID5068c822-9fe8-4ea4-8ec9-a57f35c77717"},{"ref":"EIDe8440b6d-3dfb-4816-a174-81be0d2900ec"}]},"parent":{"ref":"EID6a36bc66-0175-1000-b789-4a5faca983b4"},"resultedFrom":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"startTimestamp":"2020-10-27T13:19:33Z","duration":56,"status":"PASSED"},{"id":"EID6a36bd17-0175-1000-ed3e-38d8dd01757e","attachments":{"attachment":{"ref":"EIDc862bb18-d83d-4183-a73d-914f18b41320"}},"parent":{"ref":"EID6a36bc66-0175-1000-b789-4a5faca983b4"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/a0a2ff26-1e10-40ab-960c-4423c452a197.json"},"startTimestamp":"2020-10-27T13:19:33Z","duration":2,"status":"PASSED"},{"id":"EID6a36bd28-0175-1000-ab93-e22fa1a63302","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36bda4-0175-1000-f57d-61ac95dedd90","parent":{"ref":"EID6a36bd28-0175-1000-ab93-e22fa1a63302"},"resultedFrom":{"ref":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bda4-0175-1000-9ef5-a9bebcb2617c","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a36bd28-0175-1000-ab93-e22fa1a63302"},"resultedFrom":{"ref":"EID03b95227-e284-4279-87f2-9928c6a4eccc"},"startTimestamp":"2020-10-27T13:19:33Z","duration":13,"status":"FAILED"},{"id":"EID6a36bdb1-0175-1000-99de-7635b19822f7","parent":{"ref":"EID6a36bd28-0175-1000-ab93-e22fa1a63302"},"resultedFrom":{"ref":"EID450d4218-9461-496d-aa2f-33a2b3b8389b"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bdb1-0175-1000-7959-58d0d7d2e0fa","parent":{"ref":"EID6a36bd28-0175-1000-ab93-e22fa1a63302"},"resultedFrom":{"ref":"EIDc15a6218-8819-40b8-a364-eb9720a3838b"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bdb1-0175-1000-7e27-7c66ecc0cd4e","parent":{"ref":"EID6a36bd28-0175-1000-ab93-e22fa1a63302"},"resultedFrom":{"ref":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bdb1-0175-1000-274c-46cfb6b1e2c8","parent":{"ref":"EID6a36bd28-0175-1000-ab93-e22fa1a63302"},"resultedFrom":{"ref":"EID81bdd847-687d-4597-ba58-99963ff3635a"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bdb1-0175-1000-db30-e1f89a1b7df5","parent":{"ref":"EID6a36bd28-0175-1000-ab93-e22fa1a63302"},"resultedFrom":{"ref":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID05547623-383d-42a8-aa30-3a7ceb3ffea1"},{"ref":"EID3191d6ba-b7a6-472a-b218-319cbfe7d1d5"},{"ref":"EID17d9e8de-3be7-4b7f-bd1b-e8581d67e5f1"}]},"parent":{"ref":"EID6a36bc66-0175-1000-b789-4a5faca983b4"},"resultedFrom":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"startTimestamp":"2020-10-27T13:19:33Z","duration":26,"status":"FAILED"}]},"parent":{"ref":"EID6a36b609-0175-1000-389b-b1cb2d49d8d3"},"resultedFrom":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"startTimestamp":"2020-10-27T13:19:33Z","duration":331,"status":"FAILED"},{"id":"EID6a36bdb1-0175-1000-2a0e-2ec67f84c9c5","testStepResults":{"TestStepResult":[{"id":"EID6a36bdb1-0175-1000-50ba-48b0706a0100","parent":{"ref":"EID6a36bdb1-0175-1000-2a0e-2ec67f84c9c5"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3bda7cfc-b100-44bb-90e6-c3592561f0e1.json"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36bdb1-0175-1000-6153-9f42318ca67b","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36be3a-0175-1000-8409-52e1c178f971","parent":{"ref":"EID6a36bdb1-0175-1000-6153-9f42318ca67b"},"resultedFrom":{"ref":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36be3a-0175-1000-cfe5-0481d119e070","parent":{"ref":"EID6a36bdb1-0175-1000-6153-9f42318ca67b"},"resultedFrom":{"ref":"EIDe3c9511c-4101-4915-81b9-aba6e2072815"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36be3a-0175-1000-190a-34393bbd9caa","parent":{"ref":"EID6a36bdb1-0175-1000-6153-9f42318ca67b"},"resultedFrom":{"ref":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"},{"id":"EID6a36be3a-0175-1000-2921-b0cdd610a0bb","parent":{"ref":"EID6a36bdb1-0175-1000-6153-9f42318ca67b"},"resultedFrom":{"ref":"EID3df8c60f-a520-4f3a-afa0-1446c757112c"},"startTimestamp":"2020-10-27T13:19:33Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDe6549504-ba20-4666-abcb-6dfc5c106bf0"},{"ref":"EIDb5eb1192-8251-4e71-b70c-d3f20c562cec"},{"ref":"EIDc6a43fae-2fc4-4af2-840c-ff548134f5ac"}]},"parent":{"ref":"EID6a36bdb1-0175-1000-2a0e-2ec67f84c9c5"},"resultedFrom":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"startTimestamp":"2020-10-27T13:19:33Z","duration":42,"status":"PASSED"},{"id":"EID6a36be48-0175-1000-50e2-0ab7724f311c","invokedTests":{"":null,"TestStepResult":[{"id":"EID6a36be59-0175-1000-b1ca-fa55392a529d","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36bf45-0175-1000-4661-2c340b5d5202","parent":{"ref":"EID6a36be59-0175-1000-b1ca-fa55392a529d"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:19:34Z","duration":0,"status":"PASSED"},{"id":"EID6a36bf45-0175-1000-5643-3c53fe85985d","parent":{"ref":"EID6a36be59-0175-1000-b1ca-fa55392a529d"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:19:34Z","duration":0,"status":"PASSED"},{"id":"EID6a36bf45-0175-1000-aa88-0f42a2858f61","parent":{"ref":"EID6a36be59-0175-1000-b1ca-fa55392a529d"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:19:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDc5d4ae98-71bd-4fd0-9183-586213898c5f"},{"ref":"EID894230b3-e089-4229-b21b-4a2d79c1049a"},{"ref":"EID89a943a4-1ada-4cf4-816f-1604c1180cb8"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:19:33Z","duration":150,"status":"PASSED"},{"id":"EID6a36bf47-0175-1000-2b47-5a6ec2552846","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36bfaa-0175-1000-3615-4ec3d6f8fa1c","parent":{"ref":"EID6a36bf47-0175-1000-2b47-5a6ec2552846"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:19:34Z","duration":0,"status":"PASSED"},{"id":"EID6a36bfaa-0175-1000-f322-0d5744f25bde","parent":{"ref":"EID6a36bf47-0175-1000-2b47-5a6ec2552846"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:19:34Z","duration":0,"status":"PASSED"},{"id":"EID6a36bfaa-0175-1000-f4f2-34a34f5c5f03","parent":{"ref":"EID6a36bf47-0175-1000-2b47-5a6ec2552846"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:19:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID2223d4cf-187a-437a-a7b3-3ff13d20c8c1"},{"ref":"EID68df2a89-027b-45af-a8b8-a74eff02770d"},{"ref":"EID4fc9fab4-fb6f-4062-beba-1e4ca79849e4"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:19:34Z","duration":40,"status":"PASSED"},{"id":"EID6a36bfab-0175-1000-ba54-720d33e16da7","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36c1da-0175-1000-7634-6a7c86bfe95a","parent":{"ref":"EID6a36bfab-0175-1000-ba54-720d33e16da7"},"resultedFrom":{"ref":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d"},"startTimestamp":"2020-10-27T13:19:34Z","duration":0,"status":"PASSED"},{"id":"EID6a36c1da-0175-1000-244f-f0ddf012da2f","parent":{"ref":"EID6a36bfab-0175-1000-ba54-720d33e16da7"},"resultedFrom":{"ref":"EID7389eee5-84b7-4333-8848-9f5b394c9d67"},"startTimestamp":"2020-10-27T13:19:34Z","duration":0,"status":"PASSED"},{"id":"EID6a36c1da-0175-1000-3f01-12d678c95318","parent":{"ref":"EID6a36bfab-0175-1000-ba54-720d33e16da7"},"resultedFrom":{"ref":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819"},"startTimestamp":"2020-10-27T13:19:34Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EIDa1b1babb-e8a4-4fc9-bbd8-f39355243b40"},{"ref":"EIDcf651d5c-06c7-492f-acc0-75eda6e1e24a"},{"ref":"EID4a917da0-54d6-44a1-bbda-c67046d2c5e6"}]},"resultedFrom":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"startTimestamp":"2020-10-27T13:19:34Z","duration":419,"status":"PASSED"}]},"parent":{"ref":"EID6a36bdb1-0175-1000-2a0e-2ec67f84c9c5"},"resultedFrom":{"ref":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f"},"startTimestamp":"2020-10-27T13:19:33Z","duration":915,"status":"PASSED"},{"id":"EID6a36c1dc-0175-1000-c400-8720c3b0d1d9","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36c25e-0175-1000-095f-43f9ed6d4444","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a36c1dc-0175-1000-c400-8720c3b0d1d9"},"resultedFrom":{"ref":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4"},"startTimestamp":"2020-10-27T13:19:35Z","duration":17,"status":"FAILED"},{"id":"EID6a36c270-0175-1000-8d9e-2c0ef93dc8c1","parent":{"ref":"EID6a36c1dc-0175-1000-c400-8720c3b0d1d9"},"resultedFrom":{"ref":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113"},"startTimestamp":"2020-10-27T13:19:35Z","duration":0,"status":"PASSED"},{"id":"EID6a36c270-0175-1000-6cb4-92c0c35ecbd8","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a36c1dc-0175-1000-c400-8720c3b0d1d9"},"resultedFrom":{"ref":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84"},"startTimestamp":"2020-10-27T13:19:35Z","duration":0,"status":"FAILED"},{"id":"EID6a36c270-0175-1000-4c02-e0e2204eeb35","parent":{"ref":"EID6a36c1dc-0175-1000-c400-8720c3b0d1d9"},"resultedFrom":{"ref":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6"},"startTimestamp":"2020-10-27T13:19:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID82e93f68-38c9-4b2c-9ce1-b2ac72928a30"},{"ref":"EID34a4ced2-94ef-4113-b38b-13c93fe6dfbd"},{"ref":"EID18483bf3-6d35-4884-95e7-ab14eddfba39"}]},"parent":{"ref":"EID6a36bdb1-0175-1000-2a0e-2ec67f84c9c5"},"resultedFrom":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"startTimestamp":"2020-10-27T13:19:34Z","duration":27,"status":"FAILED"}]},"parent":{"ref":"EID6a36b609-0175-1000-389b-b1cb2d49d8d3"},"resultedFrom":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"startTimestamp":"2020-10-27T13:19:33Z","duration":1215,"status":"FAILED"},{"id":"EID6a36c270-0175-1000-8caf-38ae6d85a63d","testStepResults":{"TestStepResult":{"id":"EID6a36c270-0175-1000-dfc8-6d051053e75a","testAssertionResults":{"TestAssertionResult":[{"id":"EID6a36c2dd-0175-1000-a061-a84d2b452e3b","messages":{"message":{"ref":"TR.fallbackInfo","translationArguments":{"argument":{"token":"INFO","$":"Response status code:404 is not in acceptable list of status codes"}}}},"parent":{"ref":"EID6a36c270-0175-1000-dfc8-6d051053e75a"},"resultedFrom":{"ref":"EID10178b9c-8e01-498c-8975-2d49fff98a21"},"startTimestamp":"2020-10-27T13:19:35Z","duration":35,"status":"FAILED"},{"id":"EID6a36c300-0175-1000-caea-b9a5546c508a","parent":{"ref":"EID6a36c270-0175-1000-dfc8-6d051053e75a"},"resultedFrom":{"ref":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96"},"startTimestamp":"2020-10-27T13:19:35Z","duration":0,"status":"PASSED"},{"id":"EID6a36c300-0175-1000-2347-c3543311d5f3","messages":{"message":{"ref":"TR.missingFeedRootElement","translationArguments":{"argument":[{"token":"element","$":"atom:feed"},{"token":"xpath","$":"/atom:feed"}]}}},"parent":{"ref":"EID6a36c270-0175-1000-dfc8-6d051053e75a"},"resultedFrom":{"ref":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7"},"startTimestamp":"2020-10-27T13:19:35Z","duration":1,"status":"FAILED"},{"id":"EID6a36c301-0175-1000-8a94-0394925bb569","parent":{"ref":"EID6a36c270-0175-1000-dfc8-6d051053e75a"},"resultedFrom":{"ref":"EIDf22143da-6d29-44de-8723-b11e85e7b441"},"startTimestamp":"2020-10-27T13:19:35Z","duration":0,"status":"PASSED"}]},"attachments":{"attachment":[{"ref":"EID272fdcb1-a900-4a40-aaed-25c081c2c3b3"},{"ref":"EIDb53549bd-eb3e-457b-b46f-56c81238d58d"},{"ref":"EID6a27df45-262f-4c1a-acd8-2d682b8c9ff9"}]},"parent":{"ref":"EID6a36c270-0175-1000-8caf-38ae6d85a63d"},"resultedFrom":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"startTimestamp":"2020-10-27T13:19:35Z","duration":36,"status":"FAILED"}},"parent":{"ref":"EID6a36b609-0175-1000-389b-b1cb2d49d8d3"},"resultedFrom":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"startTimestamp":"2020-10-27T13:19:35Z","duration":145,"status":"FAILED"}]},"parent":{"ref":"EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d"},"resultedFrom":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"startTimestamp":"2020-10-27T13:19:31Z","duration":3320,"status":"FAILED"},{"id":"EID6a36c301-0175-1000-a97a-392bcceafd0f","testCaseResults":{"TestCaseResult":[{"id":"EID6a36c301-0175-1000-e35f-c7710c608336","testStepResults":{"TestStepResult":{"id":"EID6a36c301-0175-1000-a1da-c9af47df763b","parent":{"ref":"EID6a36c301-0175-1000-e35f-c7710c608336"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3713d57c-f2b6-4c66-819f-49c493039e5f.json"},"startTimestamp":"2020-10-27T13:19:35Z","duration":450,"status":"SKIPPED"}},"parent":{"ref":"EID6a36c301-0175-1000-a97a-392bcceafd0f"},"resultedFrom":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"startTimestamp":"2020-10-27T13:19:35Z","duration":0,"status":"SKIPPED"},{"id":"EID6a36c301-0175-1000-199d-cc061d454a63","testStepResults":{"TestStepResult":{"id":"EID6a36c301-0175-1000-3d7b-703351506fd5","parent":{"ref":"EID6a36c301-0175-1000-199d-cc061d454a63"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/1a9f56cc-8f12-434b-a67f-0cd96d60af91.json"},"startTimestamp":"2020-10-27T13:19:35Z","duration":450,"status":"SKIPPED"}},"parent":{"ref":"EID6a36c301-0175-1000-a97a-392bcceafd0f"},"resultedFrom":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"startTimestamp":"2020-10-27T13:19:35Z","duration":0,"status":"SKIPPED"},{"id":"EID6a36c301-0175-1000-d3d0-eef173693866","testStepResults":{"TestStepResult":{"id":"EID6a36c301-0175-1000-571e-bac73fadb3e0","parent":{"ref":"EID6a36c301-0175-1000-d3d0-eef173693866"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/568f86c7-2e5c-419d-ba8b-50afb405ecd9.json"},"startTimestamp":"2020-10-27T13:19:35Z","duration":458,"status":"SKIPPED"}},"parent":{"ref":"EID6a36c301-0175-1000-a97a-392bcceafd0f"},"resultedFrom":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"startTimestamp":"2020-10-27T13:19:35Z","duration":8,"status":"SKIPPED"},{"id":"EID6a36c309-0175-1000-9b3b-97849df5dad1","testStepResults":{"TestStepResult":{"id":"EID6a36c309-0175-1000-0ecf-d1bc4ea1733d","parent":{"ref":"EID6a36c309-0175-1000-9b3b-97849df5dad1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/703f1938-368b-4d87-8015-a91ba132f77f.json"},"startTimestamp":"2020-10-27T13:19:35Z","duration":450,"status":"SKIPPED"}},"parent":{"ref":"EID6a36c301-0175-1000-a97a-392bcceafd0f"},"resultedFrom":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"startTimestamp":"2020-10-27T13:19:35Z","duration":0,"status":"SKIPPED"},{"id":"EID6a36c309-0175-1000-3f05-f3f134457fa0","testStepResults":{"TestStepResult":{"id":"EID6a36c309-0175-1000-3074-f365f751101c","parent":{"ref":"EID6a36c309-0175-1000-3f05-f3f134457fa0"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/6a075205-f19c-428c-90b0-f84aae3f4f1e.json"},"startTimestamp":"2020-10-27T13:19:35Z","duration":450,"status":"SKIPPED"}},"parent":{"ref":"EID6a36c301-0175-1000-a97a-392bcceafd0f"},"resultedFrom":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"startTimestamp":"2020-10-27T13:19:35Z","duration":0,"status":"SKIPPED"},{"id":"EID6a36c309-0175-1000-d8a8-64a20bdec6d1","testStepResults":{"TestStepResult":{"id":"EID6a36c309-0175-1000-c127-68228fbb9baf","parent":{"ref":"EID6a36c309-0175-1000-d8a8-64a20bdec6d1"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/3cd2b17d-7d70-4bb5-b793-152e3cc8a262.json"},"startTimestamp":"2020-10-27T13:19:35Z","duration":450,"status":"SKIPPED"}},"parent":{"ref":"EID6a36c301-0175-1000-a97a-392bcceafd0f"},"resultedFrom":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"startTimestamp":"2020-10-27T13:19:35Z","duration":0,"status":"SKIPPED"},{"id":"EID6a36c309-0175-1000-8606-b9e5fa9f393a","testStepResults":{"TestStepResult":{"id":"EID6a36c309-0175-1000-d248-329c3795fb20","parent":{"ref":"EID6a36c309-0175-1000-8606-b9e5fa9f393a"},"resultedFrom":{"href":"https://inspire.ec.europa.eu/validator//v2/TestSteps/66b6fc90-c345-4864-a512-508acc63ca2d.json"},"startTimestamp":"2020-10-27T13:19:35Z","duration":450,"status":"SKIPPED"}},"parent":{"ref":"EID6a36c301-0175-1000-a97a-392bcceafd0f"},"resultedFrom":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"startTimestamp":"2020-10-27T13:19:35Z","duration":0,"status":"SKIPPED"}]},"parent":{"ref":"EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d"},"resultedFrom":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"startTimestamp":"2020-10-27T13:19:35Z","duration":9,"status":"SKIPPED"}]},"attachments":{"Attachment":[{"type":"ServiceEndpoint","id":"EID73def759-9530-4553-9ece-10a64457a015","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID19b00647-2cd7-4c24-b7ed-0ca8f51524ef","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID19b00647-2cd7-4c24-b7ed-0ca8f51524ef"}},{"type":"GetParameter","id":"EIDc79290e6-2c62-43fc-9886-cb81006020c4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDcac6c30d-6cd2-4238-8d03-1d65d2b208b0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID1e1f284e-da21-4042-8740-59173512c1c2","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"LogFile","id":"EID2feb940d-35db-4abf-b3da-83c7746bc47a","label":"Log file","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID2feb940d-35db-4abf-b3da-83c7746bc47a"}},{"type":"Message","id":"EID49b8a8ee-6c1d-402d-8d4c-ca61c550b94e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID49b8a8ee-6c1d-402d-8d4c-ca61c550b94e"}},{"type":"Error","id":"EIDb79dc473-8368-48d9-a73b-6af760f8c856","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDb79dc473-8368-48d9-a73b-6af760f8c856"}},{"type":"ServiceResponse","id":"EIDd22690f9-1d4f-43af-a68c-07fa57e7acb3","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDd22690f9-1d4f-43af-a68c-07fa57e7acb3"}},{"type":"Message","id":"EID7be24583-2c8e-4794-a7f0-8dcf5db1360d","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID7be24583-2c8e-4794-a7f0-8dcf5db1360d"}},{"type":"ServiceEndpoint","id":"EID294433f8-8637-4180-9b5f-0b9bd0d691c8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDd0c86a0b-429b-4bfb-8009-24235ad564cc","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDd0c86a0b-429b-4bfb-8009-24235ad564cc"}},{"type":"GetParameter","id":"EID6a27df45-262f-4c1a-acd8-2d682b8c9ff9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID9996fe53-5726-4dab-9a2f-e0ad4b65c165","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID9996fe53-5726-4dab-9a2f-e0ad4b65c165"}},{"type":"ServiceEndpoint","id":"EIDb3aef367-e54a-44dc-b324-0aee05f335a1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID3191d6ba-b7a6-472a-b218-319cbfe7d1d5","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID3191d6ba-b7a6-472a-b218-319cbfe7d1d5"}},{"type":"ServiceResponse","id":"EIDb53549bd-eb3e-457b-b46f-56c81238d58d","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDb53549bd-eb3e-457b-b46f-56c81238d58d"}},{"type":"GetParameter","id":"EIDca4c8dd7-11eb-4e15-8527-bb24514f3d86","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDf2bcad58-5a33-477d-9f40-78424676f006","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDf2bcad58-5a33-477d-9f40-78424676f006"}},{"type":"ServiceEndpoint","id":"EID82e93f68-38c9-4b2c-9ce1-b2ac72928a30","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EIDf9d5f6f2-4d7e-46d4-b1fa-f07e0c753860","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDf9d5f6f2-4d7e-46d4-b1fa-f07e0c753860"}},{"type":"ServiceEndpoint","id":"EIDa1b1babb-e8a4-4fc9-bbd8-f39355243b40","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceEndpoint","id":"EID8d8bdedb-0250-448c-930a-ffafcc8fc0d1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID0bfdbef9-3341-42fb-b487-ecb3f4328721","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID664f30be-3f68-4159-bfad-618e4724a74b","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID664f30be-3f68-4159-bfad-618e4724a74b"}},{"type":"Message","id":"EIDc613db59-574a-465a-8a8d-43ecb3df5df0","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDc613db59-574a-465a-8a8d-43ecb3df5df0"}},{"type":"Message","id":"EIDa8b228a1-3eb2-44dd-9d8e-687064cdfe55","label":"Message.9","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDa8b228a1-3eb2-44dd-9d8e-687064cdfe55"}},{"type":"ServiceResponse","id":"EID036dcf91-c58a-46f8-b8b7-83e22dae95c0","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID036dcf91-c58a-46f8-b8b7-83e22dae95c0"}},{"type":"ServiceEndpoint","id":"EIDfca248c4-0078-4765-81fe-a701c548f5c8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID143fd6ad-3070-461c-97d3-1228d63d50fa","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"ServiceEndpoint","id":"EID9a891e5e-eb22-4cbf-8456-93f18cd4ae92","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID05547623-383d-42a8-aa30-3a7ceb3ffea1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID98804704-bc74-4919-bbaf-0be3b7f387a9","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID98804704-bc74-4919-bbaf-0be3b7f387a9"}},{"type":"Error","id":"EIDa08a43e2-5603-472d-89a9-fd3cbbdb7205","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDa08a43e2-5603-472d-89a9-fd3cbbdb7205"}},{"type":"ServiceResponse","id":"EID45d75410-e6b4-4396-8b97-d8c858a82f81","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID45d75410-e6b4-4396-8b97-d8c858a82f81"}},{"type":"Message","id":"EIDda4d0715-db3c-4870-b303-bbf10e2742b3","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDda4d0715-db3c-4870-b303-bbf10e2742b3"}},{"type":"ServiceResponse","id":"EID5068c822-9fe8-4ea4-8ec9-a57f35c77717","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID5068c822-9fe8-4ea4-8ec9-a57f35c77717"}},{"type":"Message","id":"EID79e82844-5d20-4f29-930e-c3be55440974","label":"Message.8","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID79e82844-5d20-4f29-930e-c3be55440974"}},{"type":"GetParameter","id":"EID414a50eb-dbdc-4ceb-8927-abfb496134f1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDcfb4408e-b358-4099-86b5-a0aac8d0d5a8","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID426fd9c0-c8ac-48cf-b0ef-e03945dbc935","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID426fd9c0-c8ac-48cf-b0ef-e03945dbc935"}},{"type":"ServiceResponse","id":"EIDbc19adab-f4cd-4240-866b-8685e99f2df4","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDbc19adab-f4cd-4240-866b-8685e99f2df4"}},{"type":"Message","id":"EID84c21078-84df-472f-97aa-41f1424740fb","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID84c21078-84df-472f-97aa-41f1424740fb"}},{"type":"GetParameter","id":"EID4dd09c1d-d080-417c-84ed-d4b94db3586d","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDf2e16ea2-9d47-47ae-893e-758bb5b9e414","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID2223d4cf-187a-437a-a7b3-3ff13d20c8c1","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"GetParameter","id":"EIDfa51d6c4-a09c-4c69-a18c-cff97c266ade","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDbe463a5f-baad-4b0d-b517-0a5f4505965f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDbe463a5f-baad-4b0d-b517-0a5f4505965f"}},{"type":"ServiceEndpoint","id":"EIDc841af67-b90f-4cca-a8ca-c46f0887f1ac","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID724b7b18-4f91-4317-b336-d25a812df290","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID724b7b18-4f91-4317-b336-d25a812df290"}},{"type":"GetParameter","id":"EID4a917da0-54d6-44a1-bbda-c67046d2c5e6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL3RleHQ="},{"type":"ServiceResponse","id":"EID34a4ced2-94ef-4113-b38b-13c93fe6dfbd","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID34a4ced2-94ef-4113-b38b-13c93fe6dfbd"}},{"type":"ServiceResponse","id":"EIDd270db6c-c865-4651-8f2d-abcb9650e2ea","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDd270db6c-c865-4651-8f2d-abcb9650e2ea"}},{"type":"ServiceResponse","id":"EID68df2a89-027b-45af-a8b8-a74eff02770d","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID68df2a89-027b-45af-a8b8-a74eff02770d"}},{"type":"Message","id":"EIDb1d8d06e-48da-4b78-95a9-6e67eb11eb0a","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDb1d8d06e-48da-4b78-95a9-6e67eb11eb0a"}},{"type":"GetParameter","id":"EID4715dff5-3c35-4d31-bacf-ee761a1546df","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDe8440b6d-3dfb-4816-a174-81be0d2900ec","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID613203cd-dbb5-40dd-9715-cacec411d2a6","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID2d535f46-fc20-4d4f-b6ed-55697a6736ce","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID2d535f46-fc20-4d4f-b6ed-55697a6736ce"}},{"type":"ServiceResponse","id":"EIDa79afd92-16c2-477d-a671-e591abaa6c50","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDa79afd92-16c2-477d-a671-e591abaa6c50"}},{"type":"ServiceResponse","id":"EID499e471a-4076-4ab8-8416-0340cb47054e","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID499e471a-4076-4ab8-8416-0340cb47054e"}},{"type":"GetParameter","id":"EID89a943a4-1ada-4cf4-816f-1604c1180cb8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"Message","id":"EIDd8ae77be-1ad6-4f7a-be18-2b66c1c2515c","label":"Message.3","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDd8ae77be-1ad6-4f7a-be18-2b66c1c2515c"}},{"type":"Message","id":"EIDd3994ad9-870b-490f-b161-d638be3c4d4f","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDd3994ad9-870b-490f-b161-d638be3c4d4f"}},{"type":"ServiceEndpoint","id":"EID3455222e-33cc-44e1-b856-9ed39e9a6c64","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID169a134e-07a4-4a4f-8572-b3e9c7b15ae6","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID169a134e-07a4-4a4f-8572-b3e9c7b15ae6"}},{"type":"GetParameter","id":"EID82080a68-ccfd-44e9-8854-72d6355e4020","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID1ab9c28a-a9cd-4ba1-bea3-10673faa98c0","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDa2a7976b-6212-48b5-a329-aa50b323a7a8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID73453e99-6806-4496-b615-4d5f1a45b506","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"ServiceResponse","id":"EIDcf651d5c-06c7-492f-acc0-75eda6e1e24a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDcf651d5c-06c7-492f-acc0-75eda6e1e24a"}},{"type":"ServiceEndpoint","id":"EID317477b1-8238-4e5c-914a-85a6a283199f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EIDd35f7381-dbf5-477e-b016-2b36656953e4","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID894230b3-e089-4229-b21b-4a2d79c1049a","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID894230b3-e089-4229-b21b-4a2d79c1049a"}},{"type":"ServiceResponse","id":"EID2d926ae9-162c-4a47-b9b4-9804b0d165a1","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID2d926ae9-162c-4a47-b9b4-9804b0d165a1"}},{"type":"Message","id":"EIDc1aefda4-314d-42df-a28c-754730bbf0ab","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDc1aefda4-314d-42df-a28c-754730bbf0ab"}},{"type":"Message","id":"EIDca16e445-1ccc-442d-bead-b13291128548","label":"Message.7","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDca16e445-1ccc-442d-bead-b13291128548"}},{"type":"ServiceEndpoint","id":"EIDbd3e2939-474e-42cf-ac30-655ac2c1e969","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDee73fa60-1a08-4ccc-a00d-da9284797159","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDee73fa60-1a08-4ccc-a00d-da9284797159"}},{"type":"Error","id":"EID5d111784-81b4-46be-a66c-119bb7266193","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID5d111784-81b4-46be-a66c-119bb7266193"}},{"type":"ServiceEndpoint","id":"EID96ce246c-d95e-41c8-aec0-28c06b1e907b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceResponse","id":"EID0e134ecb-30f2-49c4-92d3-6d9ef1557d78","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID0e134ecb-30f2-49c4-92d3-6d9ef1557d78"}},{"type":"ServiceResponse","id":"EIDae43d5f6-cb5b-4a05-bc6c-1b883275468c","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDae43d5f6-cb5b-4a05-bc6c-1b883275468c"}},{"type":"Error","id":"EIDe40ecc84-5bf2-431e-aa96-e91048ab299e","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDe40ecc84-5bf2-431e-aa96-e91048ab299e"}},{"type":"Error","id":"EIDd4400507-fb40-4857-8304-f5627992e2d5","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDd4400507-fb40-4857-8304-f5627992e2d5"}},{"type":"ServiceResponse","id":"EID812963c5-7a7d-4d6b-a44d-a6e8cd04cb25","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID812963c5-7a7d-4d6b-a44d-a6e8cd04cb25"}},{"type":"ServiceEndpoint","id":"EIDefe4f82e-78fa-41ec-a025-d15f2aa6f610","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDa1d51bd8-e499-487a-980e-46d05bf394b8","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID644b8f6c-a897-47e3-bdf7-0fc6d7cbe069","label":"Message.6","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID644b8f6c-a897-47e3-bdf7-0fc6d7cbe069"}},{"type":"ServiceResponse","id":"EIDc6c13441-cf16-482e-8a37-54144fc5b439","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDc6c13441-cf16-482e-8a37-54144fc5b439"}},{"type":"ServiceEndpoint","id":"EID30f7e195-8dca-4f24-b409-9b25d1c2ac64","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID220d284a-1aee-4872-aef5-8cb93d4832af","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID129892e1-296c-49d1-bd1b-0489f56eba12","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID129892e1-296c-49d1-bd1b-0489f56eba12"}},{"type":"GetParameter","id":"EID9e7d44cf-fe5b-4469-b783-88e1a5feeafb","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvYXRvbS9pbmRleC54bWw="},{"type":"GetParameter","id":"EIDd17d6222-e68d-4b6b-90ad-915a5f16b841","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID272fdcb1-a900-4a40-aaed-25c081c2c3b3","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID18483bf3-6d35-4884-95e7-ab14eddfba39","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EID34569a6e-a1ae-4c7e-a74c-59e6e0b4811e","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID34569a6e-a1ae-4c7e-a74c-59e6e0b4811e"}},{"type":"GetParameter","id":"EID17d9e8de-3be7-4b7f-bd1b-e8581d67e5f1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"Message","id":"EIDabd34276-7c73-4e19-b4fb-9d5462c7e8a4","label":"Message.5","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDabd34276-7c73-4e19-b4fb-9d5462c7e8a4"}},{"type":"GetParameter","id":"EID641c6446-231f-4c38-b434-598ff4c17355","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID90ebca86-d55c-4770-b6f4-d5d44496a75f","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID90ebca86-d55c-4770-b6f4-d5d44496a75f"}},{"type":"Message","id":"EID81b19dbf-22aa-4e4f-bd44-cba7766903a6","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID81b19dbf-22aa-4e4f-bd44-cba7766903a6"}},{"type":"ServiceEndpoint","id":"EID738ba5e0-338f-4b3b-abf3-f48b598be1e7","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EID0b40f94d-c55a-49d8-be77-ef38a546bdbe","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID0b40f94d-c55a-49d8-be77-ef38a546bdbe"}},{"type":"Message","id":"EID96f49086-4a93-45ee-b4bc-af4adcdd7632","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID96f49086-4a93-45ee-b4bc-af4adcdd7632"}},{"type":"ServiceResponse","id":"EID70a3456e-67f9-4294-b5f4-079ed736c4d5","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID70a3456e-67f9-4294-b5f4-079ed736c4d5"}},{"type":"ServiceResponse","id":"EID7c17ca51-1353-4dd4-a9a5-1a08951214be","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID7c17ca51-1353-4dd4-a9a5-1a08951214be"}},{"type":"ServiceEndpoint","id":"EIDb7c1a5da-a3d6-4c06-ad32-aee853bd2bf9","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID3df54649-62b4-43cc-bbdb-0aebacab5e4b","label":"Message.4","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID3df54649-62b4-43cc-bbdb-0aebacab5e4b"}},{"type":"ServiceEndpoint","id":"EIDe6549504-ba20-4666-abcb-6dfc5c106bf0","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"GetParameter","id":"EID62815392-e471-4b12-afd9-ce1114ff62bd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDb5eb1192-8251-4e71-b70c-d3f20c562cec","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDb5eb1192-8251-4e71-b70c-d3f20c562cec"}},{"type":"GetParameter","id":"EID42498c0c-d82f-4948-9b9b-0cc6fdcb2c78","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID19562d65-d9fe-474b-8cf5-ad02d759f914","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID05ef6b64-eb27-4316-bcba-a31ee30a91e5","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID05ef6b64-eb27-4316-bcba-a31ee30a91e5"}},{"type":"ServiceResponse","id":"EID19236f97-9ff2-4a23-99cb-9e9c86a34a62","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID19236f97-9ff2-4a23-99cb-9e9c86a34a62"}},{"type":"ServiceResponse","id":"EIDe889658e-2e9d-4dea-b656-27ef04447e90","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDe889658e-2e9d-4dea-b656-27ef04447e90"}},{"type":"ServiceEndpoint","id":"EID0d207da1-871e-49df-a66b-07f2feb40799","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EIDa67e19fe-bfb5-44aa-a9d5-b1966a053060","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDa67e19fe-bfb5-44aa-a9d5-b1966a053060"}},{"type":"GetParameter","id":"EIDf122ef9a-4375-4010-84d2-c2954514cdd1","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID5f91ea0b-deee-4497-86f8-f8d82735a5c9","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID41e1e947-ae37-4c14-b59c-44a01bb08705","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EIDb9201ed4-87f0-4855-96f3-b9de40fc6fe4","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDb9201ed4-87f0-4855-96f3-b9de40fc6fe4"}},{"type":"ServiceEndpoint","id":"EID50ac5732-0913-45e7-a985-0dc70c6fc66c","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDc5d4ae98-71bd-4fd0-9183-586213898c5f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2FwcGxpY2F0aW9u"},{"type":"GetParameter","id":"EIDc6a43fae-2fc4-4af2-840c-ff548134f5ac","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9pbnNwaXJlLmVjLmV1cm9wYS5ldS9tZWRpYS10eXBlcw=="},{"type":"ServiceResponse","id":"EID2168ee12-6433-4b43-9de1-c86c1a177c77","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID2168ee12-6433-4b43-9de1-c86c1a177c77"}},{"type":"Message","id":"EID80a7ab43-6449-44be-ac20-2ac2d1e39146","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID80a7ab43-6449-44be-ac20-2ac2d1e39146"}},{"type":"GetParameter","id":"EIDa9cfbca7-beeb-4dbf-897d-a741e9d6b48e","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EIDf27b51e2-1a27-4422-b900-0705b8d474e3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Error","id":"EIDa406f11b-8d1f-4cdc-9bfd-b3c8b153a02f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDa406f11b-8d1f-4cdc-9bfd-b3c8b153a02f"}},{"type":"Message","id":"EIDfcfbbe8e-575a-44b7-856a-3f67dffa9d0e","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDfcfbbe8e-575a-44b7-856a-3f67dffa9d0e"}},{"type":"ServiceEndpoint","id":"EID8272bcbb-e447-44d9-8b53-9af86f9cdd5b","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID0c2ffb5e-460a-415a-b11a-2066ae7799c3","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID97406ddf-27c4-458c-a25d-6230d9c2c085","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID60f71a84-25b6-415c-945c-507a5c972b31","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"ServiceEndpoint","id":"EID2a6b446d-5e01-4d4e-83e7-f72a55041ea6","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceResponse","id":"EID4f0ab5c4-75c0-451b-9a3e-c74821ce8acc","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID4f0ab5c4-75c0-451b-9a3e-c74821ce8acc"}},{"type":"Error","id":"EID2857c35b-c3c8-434f-b5ed-df11f60bd46f","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID2857c35b-c3c8-434f-b5ed-df11f60bd46f"}},{"type":"ServiceResponse","id":"EID61359755-1414-4219-80a7-1831f792b7c7","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID61359755-1414-4219-80a7-1831f792b7c7"}},{"type":"Error","id":"EID71d1a433-b37f-4c5b-9412-0af03a2b3fcb","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID71d1a433-b37f-4c5b-9412-0af03a2b3fcb"}},{"type":"Message","id":"EID9b0722e2-afad-4cb4-a6ec-c40917f4176c","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID9b0722e2-afad-4cb4-a6ec-c40917f4176c"}},{"type":"Message","id":"EID870b371c-1b40-46c2-83f5-dcd321938dcc","label":"Message.2","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID870b371c-1b40-46c2-83f5-dcd321938dcc"}},{"type":"GetParameter","id":"EID4fc9fab4-fb6f-4062-beba-1e4ca79849e4","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2luc3BpcmUuZWMuZXVyb3BhLmV1L21lZGlhLXR5cGVzL2ltYWdl"},{"type":"Message","id":"EIDbdd659bd-9d87-4060-a2f9-1ee5554af3be","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDbdd659bd-9d87-4060-a2f9-1ee5554af3be"}},{"type":"Message","id":"EIDc862bb18-d83d-4183-a73d-914f18b41320","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EIDc862bb18-d83d-4183-a73d-914f18b41320"}},{"type":"ServiceResponse","id":"EID19eda465-13f6-4112-8231-84e0a18ce549","label":"Service Response","encoding":"UTF-8","mimeType":"application/atom+xml","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID19eda465-13f6-4112-8231-84e0a18ce549"}},{"type":"ServiceEndpoint","id":"EIDb4170873-4387-40a0-b2e8-ef318435ca2f","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="},{"type":"GetParameter","id":"EID736f7a2b-0ec3-45e9-8542-e7dfe5dfb26b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID6a4f0028-dde5-4475-a2e7-174ea21bc369","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EIDd861fa77-ddce-4bfb-8a6d-eb379419b635","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDf7de1832-7eb2-4471-b41f-8e7609ce6360","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"Message","id":"EID1dc1df75-b0fd-47e2-af7b-9bd59334d8ce","label":"Message.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID1dc1df75-b0fd-47e2-af7b-9bd59334d8ce"}},{"type":"ServiceResponse","id":"EID8b9184d2-3ff9-420e-a951-7f1de4982fef","label":"Service Response","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID8b9184d2-3ff9-420e-a951-7f1de4982fef"}},{"type":"GetParameter","id":"EID357b9c5c-aad1-48e4-8a63-ac8d659a31dd","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EIDc81e7084-5738-432a-a66c-fb650c18639b","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"GetParameter","id":"EID92b4efd3-1a82-49de-9409-b4bdfd5d4716","label":"Request Parameter","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly93d3cubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvZ2VvbmV0d29yay9vcGVuc2VhcmNoL2R1dC85ZmYxYTEzYy1kMWUwLTQxNTAtODUyMy05MWNiNDg5YWUxYTQvT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbA=="},{"type":"Error","id":"EID4f8980f4-e5b0-4c89-a04a-cc5d6fa826f0","label":"Error.1","encoding":"UTF-8","mimeType":"text/plain","referencedData":{"href":"https://inspire.ec.europa.eu/validator//v2/TestTaskResults/EIDa101a46d-64b4-497e-ba27-a5fa5cdf515d/Attachments/EID4f8980f4-e5b0-4c89-a04a-cc5d6fa826f0"}},{"type":"ServiceEndpoint","id":"EID6dc09f4b-5011-4bf9-8d85-a50a03d69545","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cHM6Ly9nZW9kYXRhLm5hdGlvbmFhbGdlb3JlZ2lzdGVyLm5sL2F0b20vaW5kZXgueG1s"},{"type":"ServiceEndpoint","id":"EID135930bc-1de7-4190-b046-5449803ae829","label":"Endpoint","encoding":"UTF-8","mimeType":"text/plain","embeddedData":"aHR0cDovL2dlb2RhdGEubmF0aW9uYWFsZ2VvcmVnaXN0ZXIubmwvcmNlX3BzLWNoL2F0b20vcmNlX3BzLWNoLnhtbA=="}]},"resultedFrom":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"startTimestamp":"2020-10-27T13:19:23Z","duration":11735,"status":"FAILED"}}}}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:19:47.030 [print] EID777edef3-2d43-4b34-83a4-94204a6fa23d
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:19:47.030 [print] FAILED
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
13:19:47.030 [print] FAILED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:19:47.030 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:19:47.030 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/777edef3-2d43-4b34-83a4-94204a6fa23d.json
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
13:19:47.031 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/777edef3-2d43-4b34-83a4-94204a6fa23d.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:19:47.031 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID777edef3-2d43-4b34-83a4-94204a6fa23d/log
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.004
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.019
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
13:19:47.056 [print] [
]
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
13:19:47.057 [print] [
  "TR.fallbackInfo",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.fallbackInfo",
  "TR.missingFeedUpdatedInformation",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.missingLinkToRegistry",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement",
  "TR.fallbackInfo",
  "TR.missingFeedRootElement"
]
* print sortedrefs 0.000
13:19:47.057 [print] [
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.fallbackInfo",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedRootElement",
  "TR.missingFeedUpdatedInformation",
  "TR.missingLinkToMetadataRecordForDownloadService",
  "TR.missingLinkToRegistry",
  "TR.missingOneFeedEntryWithDlFile",
  "TR.unexpectedHtml",
  "TR.uniqueDatasetIdentifiers"
]
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
4.629
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.001
13:12:32.343 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nhi/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 4.624
13:12:32.346 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/nhi/wfs?request=GetCapabilities"}}}

13:12:36.968 response time in milliseconds: 4514.66
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:12:36 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804356786","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.003
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:12:36.971 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
2.856
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:19:12.432 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/windkaart/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.855
13:19:12.433 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 276
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/windkaart/wfs?request=GetCapabilities"}}}

13:19:15.288 response time in milliseconds: 2748.79
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:19:15 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804755108","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:19:15.289 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
2:4.338
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:13:30.258 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 15.683
13:13:30.259 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 270
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}}}

13:13:45.939 response time in milliseconds: 14898.08
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:13:45 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:13:40 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/634407d7-c77e-4922-ac71-2ecd386c8e7c.json","testRuns":{"TestRun":{"id":"EID634407d7-c77e-4922-ac71-2ecd386c8e7c","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:13:35.89Z","testTasks":{"TestTask":{"id":"EID181eb868-531e-48b6-a72f-ac7d87839bb2","parent":{"ref":"EID634407d7-c77e-4922-ac71-2ecd386c8e7c"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID1835fe8c-4e6f-4450-8b04-e7aea41d42d6"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID1835fe8c-4e6f-4450-8b04-e7aea41d42d6","remoteResource":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:13:30.697Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:13:32.991Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:13:45.943 [print] EID634407d7-c77e-4922-ac71-2ecd386c8e7c
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:13:45.943 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:13:45.943 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:13:45.943 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/634407d7-c77e-4922-ac71-2ecd386c8e7c.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:13:45.943 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:13:45.944 [print] statuspath TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c
* print 'progresspath ', progresspath 0.000
13:13:45.944 [print] progresspath  TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
Given path progresspath 0.000
When method GET 0.538
13:13:45.945 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:46.483 response time in milliseconds: 536.84
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:13:46 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)","27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:35 - Preparing 1 Test Task:","27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)","27.10.2020 13:13:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:35 -  with parameters: ","27.10.2020 13:13:35 - etf.testcases = *","27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:35 - Setting state to CREATED","27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:13:46.483 [print] {
  "val": "0",
  "max": "240",
  "log": [
    "27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)",
    "27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:13:35 - Preparing 1 Test Task:",
    "27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)",
    "27.10.2020 13:13:35 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:13:35 -  with parameters: ",
    "27.10.2020 13:13:35 - etf.testcases = *",
    "27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:13:35 - Setting state to CREATED",
    "27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING"
  ]
}
Given path progresspath 0.000
When method GET 1:48.114
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:62 - too many retry attempts: 20
13:13:46.484 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:47.001 response time in milliseconds: 516.87
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:13:46 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)","27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:35 - Preparing 1 Test Task:","27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)","27.10.2020 13:13:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:35 -  with parameters: ","27.10.2020 13:13:35 - etf.testcases = *","27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:35 - Setting state to CREATED","27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING"]}

13:13:47.002 retry condition not satisfied: response.val == response.max
13:13:47.002 sleeping before retry #1
13:13:52.002 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:52.518 response time in milliseconds: 514.31
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:13:52 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)","27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:35 - Preparing 1 Test Task:","27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)","27.10.2020 13:13:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:35 -  with parameters: ","27.10.2020 13:13:35 - etf.testcases = *","27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:35 - Setting state to CREATED","27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING"]}

13:13:52.520 retry condition not satisfied: response.val == response.max
13:13:52.520 sleeping before retry #2
13:13:57.521 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:13:58.046 response time in milliseconds: 523.83
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:13:57 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)","27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:35 - Preparing 1 Test Task:","27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)","27.10.2020 13:13:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:35 -  with parameters: ","27.10.2020 13:13:35 - etf.testcases = *","27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:35 - Setting state to CREATED","27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:13:52 - Starting TestRun.634407d7-c77e-4922-ac71-2ecd386c8e7c at 2020-10-27T13:13:54Z","27.10.2020 13:13:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:13:54 - Project Properties: ","27.10.2020 13:13:54 - etf.testcases - * ","27.10.2020 13:13:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:13:54 - username -  ","27.10.2020 13:13:54 - authUser -  ","27.10.2020 13:13:54 - authMethod - basic ","27.10.2020 13:13:54 - TestRunTask initialized"]}

13:13:58.046 retry condition not satisfied: response.val == response.max
13:13:58.046 sleeping before retry #3
13:14:03.047 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:03.562 response time in milliseconds: 514.19
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:14:03 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"30","max":"31","log":["27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)","27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:35 - Preparing 1 Test Task:","27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)","27.10.2020 13:13:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:35 -  with parameters: ","27.10.2020 13:13:35 - etf.testcases = *","27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:35 - Setting state to CREATED","27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:13:52 - Starting TestRun.634407d7-c77e-4922-ac71-2ecd386c8e7c at 2020-10-27T13:13:54Z","27.10.2020 13:13:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:13:54 - Project Properties: ","27.10.2020 13:13:54 - etf.testcases - * ","27.10.2020 13:13:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:13:54 - username -  ","27.10.2020 13:13:54 - authUser -  ","27.10.2020 13:13:54 - authMethod - basic ","27.10.2020 13:13:54 - TestRunTask initialized"]}

13:14:03.562 retry condition not satisfied: response.val == response.max
13:14:03.562 sleeping before retry #4
13:14:08.563 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:09.084 response time in milliseconds: 519.44
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:14:09 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"49","max":"50","log":["27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)","27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:35 - Preparing 1 Test Task:","27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)","27.10.2020 13:13:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:35 -  with parameters: ","27.10.2020 13:13:35 - etf.testcases = *","27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:35 - Setting state to CREATED","27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:13:52 - Starting TestRun.634407d7-c77e-4922-ac71-2ecd386c8e7c at 2020-10-27T13:13:54Z","27.10.2020 13:13:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:13:54 - Project Properties: ","27.10.2020 13:13:54 - etf.testcases - * ","27.10.2020 13:13:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:13:54 - username -  ","27.10.2020 13:13:54 - authUser -  ","27.10.2020 13:13:54 - authMethod - basic ","27.10.2020 13:13:54 - TestRunTask initialized"]}

13:14:09.084 retry condition not satisfied: response.val == response.max
13:14:09.084 sleeping before retry #5
13:14:14.085 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:14.631 response time in milliseconds: 545.44
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:14:14 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"53","max":"54","log":["27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)","27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:35 - Preparing 1 Test Task:","27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)","27.10.2020 13:13:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:35 -  with parameters: ","27.10.2020 13:13:35 - etf.testcases = *","27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:35 - Setting state to CREATED","27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:13:52 - Starting TestRun.634407d7-c77e-4922-ac71-2ecd386c8e7c at 2020-10-27T13:13:54Z","27.10.2020 13:13:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:13:54 - Project Properties: ","27.10.2020 13:13:54 - etf.testcases - * ","27.10.2020 13:13:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:13:54 - username -  ","27.10.2020 13:13:54 - authUser -  ","27.10.2020 13:13:54 - authMethod - basic ","27.10.2020 13:13:54 - TestRunTask initialized"]}

13:14:14.631 retry condition not satisfied: response.val == response.max
13:14:14.631 sleeping before retry #6
13:14:19.633 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:20.143 response time in milliseconds: 509.57
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:14:20 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"82","max":"83","log":["27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)","27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:35 - Preparing 1 Test Task:","27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)","27.10.2020 13:13:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:35 -  with parameters: ","27.10.2020 13:13:35 - etf.testcases = *","27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:35 - Setting state to CREATED","27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:13:52 - Starting TestRun.634407d7-c77e-4922-ac71-2ecd386c8e7c at 2020-10-27T13:13:54Z","27.10.2020 13:13:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:13:54 - Project Properties: ","27.10.2020 13:13:54 - etf.testcases - * ","27.10.2020 13:13:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:13:54 - username -  ","27.10.2020 13:13:54 - authUser -  ","27.10.2020 13:13:54 - authMethod - basic ","27.10.2020 13:13:54 - TestRunTask initialized","27.10.2020 13:14:14 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027"]}

13:14:20.143 retry condition not satisfied: response.val == response.max
13:14:20.143 sleeping before retry #7
13:14:25.144 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:25.681 response time in milliseconds: 528.95
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Tue, 27 Oct 2020 13:14:25 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"val":"152","max":"153","log":["27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)","27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:35 - Preparing 1 Test Task:","27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)","27.10.2020 13:13:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:35 -  with parameters: ","27.10.2020 13:13:35 - etf.testcases = *","27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:35 - Setting state to CREATED","27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:13:52 - Starting TestRun.634407d7-c77e-4922-ac71-2ecd386c8e7c at 2020-10-27T13:13:54Z","27.10.2020 13:13:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:13:54 - Project Properties: ","27.10.2020 13:13:54 - etf.testcases - * ","27.10.2020 13:13:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:13:54 - username -  ","27.10.2020 13:13:54 - authUser -  ","27.10.2020 13:13:54 - authMethod - basic ","27.10.2020 13:13:54 - TestRunTask initialized","27.10.2020 13:14:14 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:20 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:14:25.681 retry condition not satisfied: response.val == response.max
13:14:25.681 sleeping before retry #8
13:14:30.682 request:
11 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
11 > Accept-Encoding: gzip,deflate
11 > Connection: Keep-Alive
11 > Host: inspire.ec.europa.eu
11 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:31.197 response time in milliseconds: 509.47
11 < 200
11 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
11 < Connection: Keep-Alive
11 < Content-Type: application/json;charset=UTF-8
11 < Date: Tue, 27 Oct 2020 13:14:31 GMT
11 < Keep-Alive: timeout=3, max=100
11 < Server: nginx/1.16.1
11 < Vary: Origin
11 < X-Frame-Options: SAMEORIGIN
11 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)","27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:35 - Preparing 1 Test Task:","27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)","27.10.2020 13:13:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:35 -  with parameters: ","27.10.2020 13:13:35 - etf.testcases = *","27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:35 - Setting state to CREATED","27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:13:52 - Starting TestRun.634407d7-c77e-4922-ac71-2ecd386c8e7c at 2020-10-27T13:13:54Z","27.10.2020 13:13:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:13:54 - Project Properties: ","27.10.2020 13:13:54 - etf.testcases - * ","27.10.2020 13:13:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:13:54 - username -  ","27.10.2020 13:13:54 - authUser -  ","27.10.2020 13:13:54 - authMethod - basic ","27.10.2020 13:13:54 - TestRunTask initialized","27.10.2020 13:14:14 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:20 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:14:31.198 retry condition not satisfied: response.val == response.max
13:14:31.198 sleeping before retry #9
13:14:36.199 request:
12 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
12 > Accept-Encoding: gzip,deflate
12 > Connection: Keep-Alive
12 > Host: inspire.ec.europa.eu
12 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:36.711 response time in milliseconds: 511.76
12 < 200
12 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
12 < Connection: Keep-Alive
12 < Content-Type: application/json;charset=UTF-8
12 < Date: Tue, 27 Oct 2020 13:14:36 GMT
12 < Keep-Alive: timeout=3, max=100
12 < Server: nginx/1.16.1
12 < Vary: Origin
12 < X-Frame-Options: SAMEORIGIN
12 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)","27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:35 - Preparing 1 Test Task:","27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)","27.10.2020 13:13:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:35 -  with parameters: ","27.10.2020 13:13:35 - etf.testcases = *","27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:35 - Setting state to CREATED","27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:13:52 - Starting TestRun.634407d7-c77e-4922-ac71-2ecd386c8e7c at 2020-10-27T13:13:54Z","27.10.2020 13:13:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:13:54 - Project Properties: ","27.10.2020 13:13:54 - etf.testcases - * ","27.10.2020 13:13:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:13:54 - username -  ","27.10.2020 13:13:54 - authUser -  ","27.10.2020 13:13:54 - authMethod - basic ","27.10.2020 13:13:54 - TestRunTask initialized","27.10.2020 13:14:14 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:20 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:14:36.712 retry condition not satisfied: response.val == response.max
13:14:36.712 sleeping before retry #10
13:14:41.713 request:
13 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
13 > Accept-Encoding: gzip,deflate
13 > Connection: Keep-Alive
13 > Host: inspire.ec.europa.eu
13 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:42.617 response time in milliseconds: 903.73
13 < 200
13 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
13 < Connection: Keep-Alive
13 < Content-Type: application/json;charset=UTF-8
13 < Date: Tue, 27 Oct 2020 13:14:42 GMT
13 < Keep-Alive: timeout=3, max=100
13 < Server: nginx/1.16.1
13 < Vary: Origin
13 < X-Frame-Options: SAMEORIGIN
13 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)","27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:35 - Preparing 1 Test Task:","27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)","27.10.2020 13:13:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:35 -  with parameters: ","27.10.2020 13:13:35 - etf.testcases = *","27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:35 - Setting state to CREATED","27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:13:52 - Starting TestRun.634407d7-c77e-4922-ac71-2ecd386c8e7c at 2020-10-27T13:13:54Z","27.10.2020 13:13:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:13:54 - Project Properties: ","27.10.2020 13:13:54 - etf.testcases - * ","27.10.2020 13:13:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:13:54 - username -  ","27.10.2020 13:13:54 - authUser -  ","27.10.2020 13:13:54 - authMethod - basic ","27.10.2020 13:13:54 - TestRunTask initialized","27.10.2020 13:14:14 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:20 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:14:42.618 retry condition not satisfied: response.val == response.max
13:14:42.618 sleeping before retry #11
13:14:47.619 request:
14 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
14 > Accept-Encoding: gzip,deflate
14 > Connection: Keep-Alive
14 > Host: inspire.ec.europa.eu
14 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:48.139 response time in milliseconds: 518.88
14 < 200
14 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
14 < Connection: Keep-Alive
14 < Content-Type: application/json;charset=UTF-8
14 < Date: Tue, 27 Oct 2020 13:14:48 GMT
14 < Keep-Alive: timeout=3, max=100
14 < Server: nginx/1.16.1
14 < Vary: Origin
14 < X-Frame-Options: SAMEORIGIN
14 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)","27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:35 - Preparing 1 Test Task:","27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)","27.10.2020 13:13:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:35 -  with parameters: ","27.10.2020 13:13:35 - etf.testcases = *","27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:35 - Setting state to CREATED","27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:13:52 - Starting TestRun.634407d7-c77e-4922-ac71-2ecd386c8e7c at 2020-10-27T13:13:54Z","27.10.2020 13:13:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:13:54 - Project Properties: ","27.10.2020 13:13:54 - etf.testcases - * ","27.10.2020 13:13:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:13:54 - username -  ","27.10.2020 13:13:54 - authUser -  ","27.10.2020 13:13:54 - authMethod - basic ","27.10.2020 13:13:54 - TestRunTask initialized","27.10.2020 13:14:14 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:20 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:14:48.139 retry condition not satisfied: response.val == response.max
13:14:48.139 sleeping before retry #12
13:14:53.140 request:
15 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
15 > Accept-Encoding: gzip,deflate
15 > Connection: Keep-Alive
15 > Host: inspire.ec.europa.eu
15 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:53.652 response time in milliseconds: 510.42
15 < 200
15 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
15 < Connection: Keep-Alive
15 < Content-Type: application/json;charset=UTF-8
15 < Date: Tue, 27 Oct 2020 13:14:53 GMT
15 < Keep-Alive: timeout=3, max=100
15 < Server: nginx/1.16.1
15 < Vary: Origin
15 < X-Frame-Options: SAMEORIGIN
15 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)","27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:35 - Preparing 1 Test Task:","27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)","27.10.2020 13:13:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:35 -  with parameters: ","27.10.2020 13:13:35 - etf.testcases = *","27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:35 - Setting state to CREATED","27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:13:52 - Starting TestRun.634407d7-c77e-4922-ac71-2ecd386c8e7c at 2020-10-27T13:13:54Z","27.10.2020 13:13:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:13:54 - Project Properties: ","27.10.2020 13:13:54 - etf.testcases - * ","27.10.2020 13:13:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:13:54 - username -  ","27.10.2020 13:13:54 - authUser -  ","27.10.2020 13:13:54 - authMethod - basic ","27.10.2020 13:13:54 - TestRunTask initialized","27.10.2020 13:14:14 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:20 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:14:53.656 retry condition not satisfied: response.val == response.max
13:14:53.656 sleeping before retry #13
13:14:58.657 request:
16 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
16 > Accept-Encoding: gzip,deflate
16 > Connection: Keep-Alive
16 > Host: inspire.ec.europa.eu
16 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:14:59.308 response time in milliseconds: 646.42
16 < 200
16 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
16 < Connection: Keep-Alive
16 < Content-Type: application/json;charset=UTF-8
16 < Date: Tue, 27 Oct 2020 13:14:59 GMT
16 < Keep-Alive: timeout=3, max=100
16 < Server: nginx/1.16.1
16 < Vary: Origin
16 < X-Frame-Options: SAMEORIGIN
16 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)","27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:35 - Preparing 1 Test Task:","27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)","27.10.2020 13:13:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:35 -  with parameters: ","27.10.2020 13:13:35 - etf.testcases = *","27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:35 - Setting state to CREATED","27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:13:52 - Starting TestRun.634407d7-c77e-4922-ac71-2ecd386c8e7c at 2020-10-27T13:13:54Z","27.10.2020 13:13:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:13:54 - Project Properties: ","27.10.2020 13:13:54 - etf.testcases - * ","27.10.2020 13:13:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:13:54 - username -  ","27.10.2020 13:13:54 - authUser -  ","27.10.2020 13:13:54 - authMethod - basic ","27.10.2020 13:13:54 - TestRunTask initialized","27.10.2020 13:14:14 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:20 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:14:59.313 retry condition not satisfied: response.val == response.max
13:14:59.313 sleeping before retry #14
13:15:04.314 request:
17 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
17 > Accept-Encoding: gzip,deflate
17 > Connection: Keep-Alive
17 > Host: inspire.ec.europa.eu
17 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:04.829 response time in milliseconds: 514.67
17 < 200
17 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
17 < Connection: Keep-Alive
17 < Content-Type: application/json;charset=UTF-8
17 < Date: Tue, 27 Oct 2020 13:15:04 GMT
17 < Keep-Alive: timeout=3, max=100
17 < Server: nginx/1.16.1
17 < Vary: Origin
17 < X-Frame-Options: SAMEORIGIN
17 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)","27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:35 - Preparing 1 Test Task:","27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)","27.10.2020 13:13:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:35 -  with parameters: ","27.10.2020 13:13:35 - etf.testcases = *","27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:35 - Setting state to CREATED","27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:13:52 - Starting TestRun.634407d7-c77e-4922-ac71-2ecd386c8e7c at 2020-10-27T13:13:54Z","27.10.2020 13:13:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:13:54 - Project Properties: ","27.10.2020 13:13:54 - etf.testcases - * ","27.10.2020 13:13:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:13:54 - username -  ","27.10.2020 13:13:54 - authUser -  ","27.10.2020 13:13:54 - authMethod - basic ","27.10.2020 13:13:54 - TestRunTask initialized","27.10.2020 13:14:14 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:20 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:15:04.829 retry condition not satisfied: response.val == response.max
13:15:04.829 sleeping before retry #15
13:15:09.830 request:
18 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
18 > Accept-Encoding: gzip,deflate
18 > Connection: Keep-Alive
18 > Host: inspire.ec.europa.eu
18 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:10.355 response time in milliseconds: 520.08
18 < 200
18 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
18 < Connection: Keep-Alive
18 < Content-Type: application/json;charset=UTF-8
18 < Date: Tue, 27 Oct 2020 13:15:10 GMT
18 < Keep-Alive: timeout=3, max=100
18 < Server: nginx/1.16.1
18 < Vary: Origin
18 < X-Frame-Options: SAMEORIGIN
18 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)","27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:35 - Preparing 1 Test Task:","27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)","27.10.2020 13:13:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:35 -  with parameters: ","27.10.2020 13:13:35 - etf.testcases = *","27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:35 - Setting state to CREATED","27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:13:52 - Starting TestRun.634407d7-c77e-4922-ac71-2ecd386c8e7c at 2020-10-27T13:13:54Z","27.10.2020 13:13:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:13:54 - Project Properties: ","27.10.2020 13:13:54 - etf.testcases - * ","27.10.2020 13:13:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:13:54 - username -  ","27.10.2020 13:13:54 - authUser -  ","27.10.2020 13:13:54 - authMethod - basic ","27.10.2020 13:13:54 - TestRunTask initialized","27.10.2020 13:14:14 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:20 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:15:10.355 retry condition not satisfied: response.val == response.max
13:15:10.356 sleeping before retry #16
13:15:15.357 request:
19 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
19 > Accept-Encoding: gzip,deflate
19 > Connection: Keep-Alive
19 > Host: inspire.ec.europa.eu
19 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:15.867 response time in milliseconds: 508.85
19 < 200
19 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
19 < Connection: Keep-Alive
19 < Content-Type: application/json;charset=UTF-8
19 < Date: Tue, 27 Oct 2020 13:15:15 GMT
19 < Keep-Alive: timeout=3, max=100
19 < Server: nginx/1.16.1
19 < Vary: Origin
19 < X-Frame-Options: SAMEORIGIN
19 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)","27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:35 - Preparing 1 Test Task:","27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)","27.10.2020 13:13:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:35 -  with parameters: ","27.10.2020 13:13:35 - etf.testcases = *","27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:35 - Setting state to CREATED","27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:13:52 - Starting TestRun.634407d7-c77e-4922-ac71-2ecd386c8e7c at 2020-10-27T13:13:54Z","27.10.2020 13:13:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:13:54 - Project Properties: ","27.10.2020 13:13:54 - etf.testcases - * ","27.10.2020 13:13:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:13:54 - username -  ","27.10.2020 13:13:54 - authUser -  ","27.10.2020 13:13:54 - authMethod - basic ","27.10.2020 13:13:54 - TestRunTask initialized","27.10.2020 13:14:14 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:20 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:15:15.867 retry condition not satisfied: response.val == response.max
13:15:15.867 sleeping before retry #17
13:15:20.869 request:
20 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
20 > Accept-Encoding: gzip,deflate
20 > Connection: Keep-Alive
20 > Host: inspire.ec.europa.eu
20 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:23.528 response time in milliseconds: 2657.34
20 < 200
20 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
20 < Connection: Keep-Alive
20 < Content-Type: application/json;charset=UTF-8
20 < Date: Tue, 27 Oct 2020 13:15:23 GMT
20 < Keep-Alive: timeout=3, max=100
20 < Server: nginx/1.16.1
20 < Vary: Origin
20 < X-Frame-Options: SAMEORIGIN
20 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)","27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:35 - Preparing 1 Test Task:","27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)","27.10.2020 13:13:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:35 -  with parameters: ","27.10.2020 13:13:35 - etf.testcases = *","27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:35 - Setting state to CREATED","27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:13:52 - Starting TestRun.634407d7-c77e-4922-ac71-2ecd386c8e7c at 2020-10-27T13:13:54Z","27.10.2020 13:13:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:13:54 - Project Properties: ","27.10.2020 13:13:54 - etf.testcases - * ","27.10.2020 13:13:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:13:54 - username -  ","27.10.2020 13:13:54 - authUser -  ","27.10.2020 13:13:54 - authMethod - basic ","27.10.2020 13:13:54 - TestRunTask initialized","27.10.2020 13:14:14 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:20 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027"]}

13:15:23.528 retry condition not satisfied: response.val == response.max
13:15:23.528 sleeping before retry #18
13:15:28.529 request:
21 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
21 > Accept-Encoding: gzip,deflate
21 > Connection: Keep-Alive
21 > Host: inspire.ec.europa.eu
21 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:29.076 response time in milliseconds: 546.94
21 < 200
21 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
21 < Connection: Keep-Alive
21 < Content-Type: application/json;charset=UTF-8
21 < Date: Tue, 27 Oct 2020 13:15:29 GMT
21 < Keep-Alive: timeout=3, max=100
21 < Server: nginx/1.16.1
21 < Vary: Origin
21 < X-Frame-Options: SAMEORIGIN
21 < X-XSS-Protection: 1; mode=block
{"val":"178","max":"179","log":["27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)","27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:35 - Preparing 1 Test Task:","27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)","27.10.2020 13:13:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:35 -  with parameters: ","27.10.2020 13:13:35 - etf.testcases = *","27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:35 - Setting state to CREATED","27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:13:52 - Starting TestRun.634407d7-c77e-4922-ac71-2ecd386c8e7c at 2020-10-27T13:13:54Z","27.10.2020 13:13:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:13:54 - Project Properties: ","27.10.2020 13:13:54 - etf.testcases - * ","27.10.2020 13:13:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:13:54 - username -  ","27.10.2020 13:13:54 - authUser -  ","27.10.2020 13:13:54 - authMethod - basic ","27.10.2020 13:13:54 - TestRunTask initialized","27.10.2020 13:14:14 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:20 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:15:27 ERROR Response did not meet SLA 47546/30000","27.10.2020 13:15:27 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027"]}

13:15:29.077 retry condition not satisfied: response.val == response.max
13:15:29.077 sleeping before retry #19
13:15:34.078 request:
22 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EID634407d7-c77e-4922-ac71-2ecd386c8e7c/progress
22 > Accept-Encoding: gzip,deflate
22 > Connection: Keep-Alive
22 > Host: inspire.ec.europa.eu
22 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:15:34.597 response time in milliseconds: 518.22
22 < 200
22 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
22 < Connection: Keep-Alive
22 < Content-Type: application/json;charset=UTF-8
22 < Date: Tue, 27 Oct 2020 13:15:34 GMT
22 < Keep-Alive: timeout=3, max=100
22 < Server: nginx/1.16.1
22 < Vary: Origin
22 < X-Frame-Options: SAMEORIGIN
22 < X-XSS-Protection: 1; mode=block
{"val":"184","max":"185","log":["27.10.2020 13:13:35 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:13:35 UTC 2020)","27.10.2020 13:13:35 - Resolving Executable Test Suite dependencies","27.10.2020 13:13:35 - Preparing 1 Test Task:","27.10.2020 13:13:35 -  TestTask 1 (181eb868-531e-48b6-a72f-ac7d87839bb2)","27.10.2020 13:13:35 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:13:35 -  with parameters: ","27.10.2020 13:13:35 - etf.testcases = *","27.10.2020 13:13:35 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:13:35 - Setting state to CREATED","27.10.2020 13:13:35 - Changed state from CREATED to INITIALIZING","27.10.2020 13:13:52 - Starting TestRun.634407d7-c77e-4922-ac71-2ecd386c8e7c at 2020-10-27T13:13:54Z","27.10.2020 13:13:54 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:13:54 - Project Properties: ","27.10.2020 13:13:54 - etf.testcases - * ","27.10.2020 13:13:54 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/provincies/ps/atom/v1/index.xml ","27.10.2020 13:13:54 - username -  ","27.10.2020 13:13:54 - authUser -  ","27.10.2020 13:13:54 - authMethod - basic ","27.10.2020 13:13:54 - TestRunTask initialized","27.10.2020 13:14:14 ERROR Assertion failed with error \u0027TR.incorrectFeedSelfReference\u0027","27.10.2020 13:14:20 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:15:27 ERROR Response did not meet SLA 47546/30000","27.10.2020 13:15:27 ERROR Assertion failed with error \u0027TR.unexpectedContentType\u0027","27.10.2020 13:15:29 ERROR Exception occurred in Test Step: java.lang.NullPointerException"]}

13:15:34.598 retry condition not satisfied: response.val == response.max
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
44.459
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:16:02.979 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 6.822
13:16:02.981 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

13:16:09.799 response time in milliseconds: 5940.40
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:16:08 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:16:05 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/d2dc0165-b6db-41a0-b154-437afe5056a5.json","testRuns":{"TestRun":{"id":"EIDd2dc0165-b6db-41a0-b154-437afe5056a5","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:16:05.113Z","testTasks":{"TestTask":{"id":"EID100bc0c3-2727-421a-9b72-16e4512caf89","parent":{"ref":"EIDd2dc0165-b6db-41a0-b154-437afe5056a5"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID706eac4a-732e-4c03-a3e0-2aacdaac1907"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDd2dc0165-b6db-41a0-b154-437afe5056a5/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID706eac4a-732e-4c03-a3e0-2aacdaac1907","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:16:03.424Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:16:04.501Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.005
13:16:09.807 [print] EIDd2dc0165-b6db-41a0-b154-437afe5056a5
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:16:09.808 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:16:09.808 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:16:09.808 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/d2dc0165-b6db-41a0-b154-437afe5056a5.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:16:09.808 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDd2dc0165-b6db-41a0-b154-437afe5056a5/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:16:09.809 [print] statuspath TestRuns/EIDd2dc0165-b6db-41a0-b154-437afe5056a5
* print 'progresspath ', progresspath 0.000
13:16:09.809 [print] progresspath  TestRuns/EIDd2dc0165-b6db-41a0-b154-437afe5056a5/progress
Given path progresspath 0.000
When method GET 0.534
13:16:09.810 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd2dc0165-b6db-41a0-b154-437afe5056a5/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:10.343 response time in milliseconds: 532.72
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:16:10 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:16:05 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:05 UTC 2020)","27.10.2020 13:16:05 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:05 - Preparing 1 Test Task:","27.10.2020 13:16:05 -  TestTask 1 (100bc0c3-2727-421a-9b72-16e4512caf89)","27.10.2020 13:16:05 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:05 -  with parameters: ","27.10.2020 13:16:05 - etf.testcases = *","27.10.2020 13:16:05 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:05 - Setting state to CREATED","27.10.2020 13:16:05 - Changed state from CREATED to INITIALIZING"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:16:10.343 [print] {
  "val": "0",
  "max": "240",
  "log": [
    "27.10.2020 13:16:05 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:05 UTC 2020)",
    "27.10.2020 13:16:05 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:16:05 - Preparing 1 Test Task:",
    "27.10.2020 13:16:05 -  TestTask 1 (100bc0c3-2727-421a-9b72-16e4512caf89)",
    "27.10.2020 13:16:05 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:16:05 -  with parameters: ",
    "27.10.2020 13:16:05 - etf.testcases = *",
    "27.10.2020 13:16:05 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:16:05 - Setting state to CREATED",
    "27.10.2020 13:16:05 - Changed state from CREATED to INITIALIZING"
  ]
}
Given path progresspath 0.000
When method GET 35.734
13:16:10.344 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd2dc0165-b6db-41a0-b154-437afe5056a5/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:11.357 response time in milliseconds: 1012.15
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:16:11 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:16:05 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:05 UTC 2020)","27.10.2020 13:16:05 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:05 - Preparing 1 Test Task:","27.10.2020 13:16:05 -  TestTask 1 (100bc0c3-2727-421a-9b72-16e4512caf89)","27.10.2020 13:16:05 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:05 -  with parameters: ","27.10.2020 13:16:05 - etf.testcases = *","27.10.2020 13:16:05 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:05 - Setting state to CREATED","27.10.2020 13:16:05 - Changed state from CREATED to INITIALIZING"]}

13:16:11.358 retry condition not satisfied: response.val == response.max
13:16:11.358 sleeping before retry #1
13:16:16.359 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd2dc0165-b6db-41a0-b154-437afe5056a5/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:16.939 response time in milliseconds: 576.81
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:16:16 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"0","max":"240","log":["27.10.2020 13:16:05 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:05 UTC 2020)","27.10.2020 13:16:05 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:05 - Preparing 1 Test Task:","27.10.2020 13:16:05 -  TestTask 1 (100bc0c3-2727-421a-9b72-16e4512caf89)","27.10.2020 13:16:05 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:05 -  with parameters: ","27.10.2020 13:16:05 - etf.testcases = *","27.10.2020 13:16:05 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:05 - Setting state to CREATED","27.10.2020 13:16:05 - Changed state from CREATED to INITIALIZING"]}

13:16:16.939 retry condition not satisfied: response.val == response.max
13:16:16.940 sleeping before retry #2
13:16:21.940 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd2dc0165-b6db-41a0-b154-437afe5056a5/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:22.458 response time in milliseconds: 516.56
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:16:22 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"12","max":"13","log":["27.10.2020 13:16:05 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:05 UTC 2020)","27.10.2020 13:16:05 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:05 - Preparing 1 Test Task:","27.10.2020 13:16:05 -  TestTask 1 (100bc0c3-2727-421a-9b72-16e4512caf89)","27.10.2020 13:16:05 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:05 -  with parameters: ","27.10.2020 13:16:05 - etf.testcases = *","27.10.2020 13:16:05 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:05 - Setting state to CREATED","27.10.2020 13:16:05 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:19 - Starting TestRun.d2dc0165-b6db-41a0-b154-437afe5056a5 at 2020-10-27T13:16:21Z","27.10.2020 13:16:21 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:16:21 - Project Properties: ","27.10.2020 13:16:21 - etf.testcases - * ","27.10.2020 13:16:21 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:16:21 - username -  ","27.10.2020 13:16:21 - authUser -  ","27.10.2020 13:16:21 - authMethod - basic ","27.10.2020 13:16:21 - TestRunTask initialized"]}

13:16:22.458 retry condition not satisfied: response.val == response.max
13:16:22.458 sleeping before retry #3
13:16:27.459 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd2dc0165-b6db-41a0-b154-437afe5056a5/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:27.976 response time in milliseconds: 516.71
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:16:27 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"57","max":"58","log":["27.10.2020 13:16:05 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:05 UTC 2020)","27.10.2020 13:16:05 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:05 - Preparing 1 Test Task:","27.10.2020 13:16:05 -  TestTask 1 (100bc0c3-2727-421a-9b72-16e4512caf89)","27.10.2020 13:16:05 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:05 -  with parameters: ","27.10.2020 13:16:05 - etf.testcases = *","27.10.2020 13:16:05 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:05 - Setting state to CREATED","27.10.2020 13:16:05 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:19 - Starting TestRun.d2dc0165-b6db-41a0-b154-437afe5056a5 at 2020-10-27T13:16:21Z","27.10.2020 13:16:21 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:16:21 - Project Properties: ","27.10.2020 13:16:21 - etf.testcases - * ","27.10.2020 13:16:21 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:16:21 - username -  ","27.10.2020 13:16:21 - authUser -  ","27.10.2020 13:16:21 - authMethod - basic ","27.10.2020 13:16:21 - TestRunTask initialized","27.10.2020 13:16:25 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:16:25 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:16:27 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027"]}

13:16:27.977 retry condition not satisfied: response.val == response.max
13:16:27.977 sleeping before retry #4
13:16:32.978 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd2dc0165-b6db-41a0-b154-437afe5056a5/progress
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:33.503 response time in milliseconds: 524.73
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:16:33 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"val":"140","max":"141","log":["27.10.2020 13:16:05 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:05 UTC 2020)","27.10.2020 13:16:05 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:05 - Preparing 1 Test Task:","27.10.2020 13:16:05 -  TestTask 1 (100bc0c3-2727-421a-9b72-16e4512caf89)","27.10.2020 13:16:05 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:05 -  with parameters: ","27.10.2020 13:16:05 - etf.testcases = *","27.10.2020 13:16:05 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:05 - Setting state to CREATED","27.10.2020 13:16:05 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:19 - Starting TestRun.d2dc0165-b6db-41a0-b154-437afe5056a5 at 2020-10-27T13:16:21Z","27.10.2020 13:16:21 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:16:21 - Project Properties: ","27.10.2020 13:16:21 - etf.testcases - * ","27.10.2020 13:16:21 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:16:21 - username -  ","27.10.2020 13:16:21 - authUser -  ","27.10.2020 13:16:21 - authMethod - basic ","27.10.2020 13:16:21 - TestRunTask initialized","27.10.2020 13:16:25 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:16:25 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:16:27 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:16:29 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:16:29 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:16:30 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:30 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:30 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:30 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:16:30 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:31 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:31 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:31 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:31 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:16:31 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:32 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:32 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:32 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:16:32 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:16:32 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:32 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:16:33 ERROR Response status code:404 is not in acceptable list of status codes"]}

13:16:33.504 retry condition not satisfied: response.val == response.max
13:16:33.504 sleeping before retry #5
13:16:38.505 request:
8 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd2dc0165-b6db-41a0-b154-437afe5056a5/progress
8 > Accept-Encoding: gzip,deflate
8 > Connection: Keep-Alive
8 > Host: inspire.ec.europa.eu
8 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:39.019 response time in milliseconds: 513.84
8 < 200
8 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
8 < Connection: Keep-Alive
8 < Content-Type: application/json;charset=UTF-8
8 < Date: Tue, 27 Oct 2020 13:16:38 GMT
8 < Keep-Alive: timeout=3, max=100
8 < Server: nginx/1.16.1
8 < Vary: Origin
8 < X-Frame-Options: SAMEORIGIN
8 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["27.10.2020 13:16:05 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:16:05 UTC 2020)","27.10.2020 13:16:05 - Resolving Executable Test Suite dependencies","27.10.2020 13:16:05 - Preparing 1 Test Task:","27.10.2020 13:16:05 -  TestTask 1 (100bc0c3-2727-421a-9b72-16e4512caf89)","27.10.2020 13:16:05 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:16:05 -  with parameters: ","27.10.2020 13:16:05 - etf.testcases = *","27.10.2020 13:16:05 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:16:05 - Setting state to CREATED","27.10.2020 13:16:05 - Changed state from CREATED to INITIALIZING","27.10.2020 13:16:19 - Starting TestRun.d2dc0165-b6db-41a0-b154-437afe5056a5 at 2020-10-27T13:16:21Z","27.10.2020 13:16:21 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:16:21 - Project Properties: ","27.10.2020 13:16:21 - etf.testcases - * ","27.10.2020 13:16:21 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:16:21 - username -  ","27.10.2020 13:16:21 - authUser -  ","27.10.2020 13:16:21 - authMethod - basic ","27.10.2020 13:16:21 - TestRunTask initialized","27.10.2020 13:16:25 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:16:25 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:16:27 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:16:29 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:16:29 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:16:30 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:30 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:30 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:30 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:16:30 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:30 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:31 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:31 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:16:31 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:31 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:16:31 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:32 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:32 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:32 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:16:32 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:16:32 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:32 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:16:33 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:34 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:34 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:16:35 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:16:35 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:16:39.019 retry condition not satisfied: response.val == response.max
13:16:39.020 sleeping before retry #6
13:16:44.020 request:
9 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd2dc0165-b6db-41a0-b154-437afe5056a5/progress
9 > Accept-Encoding: gzip,deflate
9 > Connection: Keep-Alive
9 > Host: inspire.ec.europa.eu
9 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:46.078 response time in milliseconds: 2056.21
9 < 200
9 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
9 < Connection: Keep-Alive
9 < Content-Type: application/json;charset=UTF-8
9 < Date: Tue, 27 Oct 2020 13:16:46 GMT
9 < Keep-Alive: timeout=3, max=100
9 < Server: nginx/1.16.1
9 < Vary: Origin
9 < X-Frame-Options: SAMEORIGIN
9 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:16:46.078 retry condition satisfied
* print response 0.000
13:16:46.079 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 1.354
13:16:46.080 request:
10 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDd2dc0165-b6db-41a0-b154-437afe5056a5
10 > Accept-Encoding: gzip,deflate
10 > Connection: Keep-Alive
10 > Host: inspire.ec.europa.eu
10 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:16:47.434 response time in milliseconds: 1353.57
10 < 200
10 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
10 < Cache-Control: public, max-age=120
10 < Connection: Keep-Alive
10 < Content-Type: application/json;charset=UTF-8
10 < Date: Tue, 27 Oct 2020 13:16:47 GMT
10 < Keep-Alive: timeout=3, max=100
10 < Last-Modified: Tue, 27 Oct 2020 13:16:31 GMT
10 < Server: nginx/1.16.1
10 < Vary: Origin
10 < X-Frame-Options: SAMEORIGIN
10 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":0,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/.json"}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.004
13:16:47.438 [print]
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:16:47.439 [print]
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:71 - javascript evaluation failed: response.EtfItemCollection.testRuns.TestRun.status, TypeError: Cannot read property "TestRun" from undefined in <eval> at line number 1
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
2.242
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.001
13:19:48.267 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-cdda/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.240
13:19:48.270 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 282
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/ps-cdda/wfs?request=GetCapabilities"}}}

13:19:50.507 response time in milliseconds: 2131.80
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:19:50 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804790331","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:19:50.508 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1.047
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:14:33.256 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.045
13:14:33.257 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities"}}}

13:14:34.302 response time in milliseconds: 1040.50
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:14:34 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"Check the availability of the server. The URL could not be processed due to a server error: Returned HTTP status code was \u0027500\u0027","timestamp":"1603804474192","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.url.server.error","stacktrace":["java.io.IOException: Server returned HTTP response code: 500 for URL: https://geodata.nationaalgeoregister.nl/rwsgeluidskaarten/wfs?request=GetCapabilities","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)","\tat sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)","\tat sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:972)"," [wrapped] de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:978)","\tat de.interactive_instruments.UriUtils$HttpInputStream.\u003cinit\u003e(UriUtils.java:964)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:1010)","\tat de.interactive_instruments.UriUtils.openStream(UriUtils.java:997)","\tat de.interactive_instruments.UriUtils.hashFromContent(UriUtils.java:1082)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:298)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.createWithUrlResources(TestObjectController.java:307)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:428)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.UriUtils$ConnectionException: Returned HTTP status code was \u0027500\u0027","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:14:34.303 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
3.955
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:15:25.949 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ahn1/wcs?request=GetCapabilities&service=wcs"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.954
13:15:25.950 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 283
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/ahn1/wcs?request=GetCapabilities&service=wcs"}}}

13:15:29.904 response time in milliseconds: 3848.71
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:15:29 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804529727","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:15:29.905 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
1.555
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:18:02.081 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2016/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 1.555
13:18:02.082 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 284
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2016/wfs?request=GetCapabilities"}}}

13:18:03.636 response time in milliseconds: 1449.58
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:18:03 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804683460","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:18:03.637 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
28.070
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:18:00.721 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 6.056
13:18:00.721 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

13:18:06.775 response time in milliseconds: 5305.97
1 < 201
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Cache-Control: public, max-age=120
1 < Connection: Keep-Alive
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:18:05 GMT
1 < Keep-Alive: timeout=3, max=100
1 < Last-Modified: Tue, 27 Oct 2020 13:18:03 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":1,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/ffbc53f7-bba6-40e1-bc83-0d655ebae805.json","testRuns":{"TestRun":{"id":"EIDffbc53f7-bba6-40e1-bc83-0d655ebae805","status":"UNDEFINED","label":"Conformance Class Download Service - Pre-defined Atom","defaultLang":"en","startTimestamp":"2020-10-27T13:18:03.169Z","testTasks":{"TestTask":{"id":"EID37019408-86ca-43d8-b22a-a3df2bc50207","parent":{"ref":"EIDffbc53f7-bba6-40e1-bc83-0d655ebae805"},"executableTestSuite":{"ref":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"},"testObject":{"ref":"EID7870daaa-7e9e-4300-832e-c9e5f9d1f9ca"},"ArgumentList":{"arguments":{"argument":{"name":"etf.testcases","$":"*"}}}}},"logPath":"https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDffbc53f7-bba6-40e1-bc83-0d655ebae805/log"}},"referencedItems":{"testItemTypes":null,"executableTestSuites":{"ExecutableTestSuite":{"id":"EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93","remoteResource":"http://none","label":"Conformance Class: Download Service - Pre-defined Atom","description":"This test suite examines a Atom feed with Open Search description against the requirements related to the INSPIRE Pre-Defined Atom Download Service feed with sub-feeds for data sets. This test suite only examines requirements that are specific to a Pre-Defined Atom Download Service feed.\n<br/> <br/>\nThe test suite is divided into four test modules. In the first module 'Initialization and basic checks', basic queries are send to the Atom feed to ensure the endpoints are available. The 'Download Service Feed', 'Dataset Feed' and 'OpenSearch Description' test modules contain the actual test cases, derived from the Abstract Test Cases. If a test case in the first module fails, the three other modules are skipped!\n<br/> <br/>\nThere are a few test cases and test steps that are marked as 'technical test step' or 'technical test case' in the description. They are used to control the test execution flow of the steps. The description text of a technical test step indicates the test steps that are executed. If a technical test step fails, the other test steps, which have been called by the technical test step, should be checked first. To examine a reported issue, the assertion messages should be compared with the service responses which are included in the report. If the response contains an exception report, the request should be checked for 'incorrect' parameters (i.e. non-existing IDs). The test step description should refer to a point, from where the information has been gathered (i.e. from a previous request where the ID was listed).\n<br/> <br/> \n\nPlease report any issues or problems <a href=\"https://github.com/inspire-eu-validation/community/wiki/Your-feedback\" target=\"_blank\">in GitHub</a>.\n<br/> <br/>\nKnown limitations are documented in the description of the applicable test case or test assertion.\n<br/> <br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined\" target=\"_blank\">Conformance Class 'Pre-defined Atom'</a>","version":"1.0.5","author":"Geonovum and interactive instruments","creationDate":"2017-02-17T00:00:00Z","lastEditor":"interactive instruments GmbH","lastUpdateDate":"2019-09-24T14:42:00Z","disabled":false,"tags":{"tag":{"href":"https://inspire.ec.europa.eu/validator//v2/Tags/e51620af-bcf5-4719-ab0e-ef6226a572fa.json"}},"testDriver":{"href":"https://inspire.ec.europa.eu/validator//v2/Components/4838e01b-4186-4d2d-a93a-414b9e9a49a7.json"},"translationTemplateBundle":{"ref":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb"},"ParameterList":null,"supportedTestObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"testModules":{"TestModule":[{"id":"EID6266de5b-169b-4933-896b-803260ff568e","label":"Initialization and basic checks","description":"Perform basic check to ensure the top-level Download Service Feed is available and initialize the Executable Test Suite with gathered information.\n\nIf this test case fails, all other test cases will be skipped!\nEnsure that the schema locations and all endpoints can be queried!\n\nPlease note that for technical reasons this Executable Test Suite requires that schema locations must be accessible without any authentication mechanism.","testCases":{"TestCase":[{"id":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f","label":"Setup credentials and check if endpoint is available","description":"Technical test case. Initialize loggers and set credentials for the test run.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":[{"id":"EID4bafa73e-73b8-4153-a84b-c6cc0b04bd28","label":"Update Credentials","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"import de.interactive_instruments.xtf.Util;\n\n/** Set the credentials only if a username is provided */\ndef basicAuthUser = context.expand('${#Project#authUser}');\nif (basicAuthUser.length()>0) {\n\tlog.info(\"Setting credentials for user: \" + basicAuthUser);\n}\nUtil.updateCredentials(testRunner);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID602d9d35-1c42-4497-a386-7befaa3320eb","label":"HTTP status code 200 is returned","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ca63785-e385-4c4f-b8c6-d6742c415a0c","label":"30 seconds timeout","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID60ac748d-9fae-47f9-bc88-f7073077cc62","label":"No invalid characters before XML prolog","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.*\n\nif(!messageExchange.hasResponse()) {\n  throw new TranslatableAssertionError(\"TR.noDataReturned\")\n}\n\nif(messageExchange.responseContent.size()>7) {\n\tfinal String xmlProlog = messageExchange.responseContent.substring(0,7);\n\tif(!xmlProlog.trim().startsWith(\"<\")) {\n\t\tthrow new TranslatableAssertionError(\"TR.invalidXmlProlog\", \"prolog\", xmlProlog.replaceAll(\"\\\\p{C}\", \"?\") )\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5e954eb8-f4fb-49b6-a1e3-2bcec69dbd6b","label":"Root element 'feed' exists","parent":{"ref":"EID72c74c78-472f-4baa-bdd5-2dfb1c516bb7"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849","label":"Basic checks passed and Feed still accessible","description":"Check if the feed is available and the Test initialisation phase has been completed successfully.","parent":{"ref":"EID6266de5b-169b-4933-896b-803260ff568e"},"testSteps":{"TestStep":{"id":"EID7c915733-5218-4594-9e9a-066192707f1e","label":"Check URL is accessible","description":null,"parent":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6fb90bcf-0fb8-40d0-a34b-dc79e2392d4e","label":"HTTP status code 200 is returned","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID33c888b8-a272-4bc8-86b6-30966df1b6d4","label":"30 seconds timeout","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8e7403f0-6689-45d2-9eb2-3f83bc3be359","label":"root element 'feed' exists","parent":{"ref":"EID7c915733-5218-4594-9e9a-066192707f1e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}}]}},{"id":"EID59c49d09-616a-4a70-a918-2f31d345e38f","label":"Download Service Feed","description":"Test module for checking the top-level Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344","label":"Contact information","description":"The test case requests the Download Service feed and checks if the response contains the author name and email address.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 12: The 'author' element of a feed shall contain current contact information for an\nindividual or organisation responsible for the feed. At the minimum, a name\nand email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Download Service feed contact information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3b666b3e-f315-49be-b96a-2d27abf0ab94","label":"HTTP status code 200 is returned","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb3f699a6-e47b-4a89-a610-f01787de5ab0","label":"30 seconds timeout","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd2126146-4434-443a-8420-5b8adc6b1f6a","label":"Root element 'feed' exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9809e089-828d-4e58-a091-0b8a0d28956d","label":"Author name exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID4fe383ff-d457-4324-bdfd-d23c54dc6ebd","label":"Email address exists","parent":{"ref":"EID8857655a-05c6-461c-b0f8-09c88d7b1c44"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID035c2686-8af8-4972-a015-cd32b2ab17ac","label":"CRS information","description":"The test case requests the Download Service feed and checks if each feed entry contain an Atom 'category' element for each CRS.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 20: Each feed entry shall contain an Atom 'category' element for each CRS in\nwhich the pre-defined dataset is available. This category element shall refer to\na well-known definition of a coordinate reference system.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-crs-information\" target=\"_blank\">Abstract Test Case 'Download Service feed CRS information'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID035c2686-8af8-4972-a015-cd32b2ab17ac"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID3f96da73-0f0b-4b82-8fee-582f70950c69","label":"HTTP status code 200 is returned","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6c31a150-52db-4ba1-bad6-c374dc60359b","label":"30 seconds timeout","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e32f02f-28f0-4724-8a7b-9323a26ea629","label":"Root element 'feed' exists","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID84104201-71c4-4f32-8291-5f5ac49e6b20","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EID008e0867-010c-45e9-b9f3-1255ff2e74fb"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9","label":"Dataset identifiers","description":"The test case requests the Download Service feed and checks if each dataset has an INSPIRE Spatial Dataset Unique Resource Identifier 'dataset identifier code' and a 'dataset identifier namespace'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 13: Each feed 'entry' in a 'Download Service Feed' shall contain\nspatial_dataset_identifier_code and spatial_dataset_identifier_namespace\nelements which together contain the Spatial Dataset Unique Resource\nIdentifier for the dataset described by the feed. These elements are defined in\nthe inspire_dls schema which shall be included in the namespace declarations\nof the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-dataset-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed dataset identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785","label":"Get Service Feed","description":"Requests the Service Feed and checks the dataset identifiers.","parent":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID342e431e-e031-4057-bb93-4a7d9d858b7d","label":"HTTP status code 200 is returned","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4b4257d8-aee6-406b-8f16-8306c91d1b81","label":"30 seconds timeout","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcbcffce3-745e-490a-bd2f-2d64069409af","label":"Root element 'feed' exists","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9b404f5e-ebed-466b-a5e3-177c3c927f5a","label":"Each entry has an element INSPIRE identifier code","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_code)=0]\",\n  \"TR.missingSpatialDatasetIdentifierCode\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID5c449c08-4578-41ee-a7ea-a168c61005b7","label":"Each entry has an element INSPIRE identifier element namespace","parent":{"ref":"EID65cc6185-5f4b-4b9c-a01a-2b0b1cb4a785"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(inspire_dls:spatial_dataset_identifier_namespace)=0]\",\n  \"TR.missingSpatialDatasetIdentifierNamespace\"\n  \n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID82825850-f358-40d8-913c-5e61cac61fef","label":"HTTP URI","description":"The test case requests the Download Service feed and checks if provides the HTTP URI of the feed as ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 9: The 'id' element of a feed shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-id\" target=\"_blank\">Abstract Test Case 'Download Service feed: id'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID8c63752f-405c-422c-b91e-9b42a76eb720","label":"Get Service Feed","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID52a40318-a6fb-4b29-9064-8903ddf448df","label":"HTTP status code 200 is returned","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4ab0a840-2966-43ae-9ec7-8de9e7e24648","label":"30 seconds timeout","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID43518c24-2fc2-448a-817a-c8e4944baa64","label":"Root element 'feed' exists","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf0d32900-8648-42a9-8e47-0681f34af745","label":"Feed id is an URI","parent":{"ref":"EID8c63752f-405c-422c-b91e-9b42a76eb720"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDc106f883-041b-402d-8ada-33acc7b1d463","label":"Get Service Feed by ID","description":"Requests the Service Feed and checks the feed URL.","parent":{"ref":"EID82825850-f358-40d8-913c-5e61cac61fef"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID32a9b06a-0eee-45a1-9e7a-f69dcaa77471","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89e91ccc-2bfa-4af5-bc5e-286828d46465","label":"30 seconds timeout","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID40f8fcd1-ceb6-4587-bc5c-9a9f9ec8a6a2","label":"Root element 'feed' exists","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID05e473b5-9caa-407d-90e8-49820284df45","label":"Feed ID equals request URL","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID71e5f95e-93c5-4213-a2cb-2bc7b5a3cc1f","label":"Response equals response from test step 'Get Service Feed'","parent":{"ref":"EIDc106f883-041b-402d-8ada-33acc7b1d463"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Service Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Service Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f","label":"Identifiers","description":"The test case requests the Download Service feed and checks if each feed entry provides the HTTP URI of the feed as ATOM ID.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 17: The 'id' element of a feed entry in a Download Service Feed shall contain an\nidentifier for that feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-identifiers\" target=\"_blank\">Abstract Test Case 'Download Service feed identifiers'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180","label":"Get Service Feed","description":"Requests the Service Feed and checks each feed entry ID.","parent":{"ref":"EIDba93c8a4-2c83-40e3-8604-1e38b9a9456f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDdc7f4c35-09cf-4625-9815-71df592f9ab4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2fa4697e-1fe7-45ad-9f4a-c2ae0ebc2864","label":"30 seconds timeout","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDad30bd95-a379-400a-acc3-3cd0afb77c0a","label":"Root element 'feed' exists","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID794b3dfa-4d1b-42ca-878d-93431f397473","label":"Each entry has an id","parent":{"ref":"EID1840a793-e8dd-4cd3-8fe8-dea3a0f24180"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:id)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6359d6da-1e37-423f-b543-018979b665e2","label":"Link to OpenSearch Description document","description":"The test case requests the Download Service feed and checks if it provides a link to an 'OpenSearch Description document' and if the it can be retrieved.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 8: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains a link to an OpenSearch description document for the Download\nService. The value of the 'rel' attribute of this element shall be 'search', the\n'hreflang' attribute shall use the appropriate language code and the value of\nthe 'type' attribute shall be 'application/opensearchdescription+xml'.</li>\n<li>TG Requirement 39: A simple service to perform the Describe Spatial Dataset and Get Spatial Data\nSet operations shall be provided and described by an OpenSearch description\ndocument.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-opensearch-description-document\" target=\"_blank\">Abstract Test Case 'Download Service feed: link OpenSearch Description document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":[{"id":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef","label":"Get Service Feed","description":"Requests the Service Feed and checks OpenSearch description.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbc7cdeff-1374-4515-a92e-6113aef2da61","label":"HTTP status code 200 is returned","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID341a8eae-c6c1-4880-a893-80bd7448fecf","label":"30 seconds timeout","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7398b5e3-efc7-4f0e-9a19-48b560856e15","label":"Root element 'feed' exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68a277ac-f823-4fd1-96cd-6429651777bd","label":"Feed link to OpenSearch Description Document exists","parent":{"ref":"EID27bdfa40-4649-4452-b90a-8d5696cc6eef"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href\",\n\t\"TR.missingOpenSearchDescriptionDocumentLink\"\n);\n\na.isTrue(\n\t\"starts-with(/atom:feed/atom:link[@rel='search' and @type='application/opensearchdescription+xml']/@href, 'http')\",\n\t\"TR.openSearchDescriptionDocumentLinkNotAbsolute\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID342e7d50-b15d-446f-8f83-25807babfb2e","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6998a6f6-66a2-47e5-a70b-503e04415d7c","label":"HTTP status code 200 is returned","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c617c6-c3fe-4567-8173-33c5fa109cd3","label":"30 seconds timeout","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5213157c-3e2a-40fd-9ee9-9557678f0260","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID342e7d50-b15d-446f-8f83-25807babfb2e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EIDe12f3530-1b91-4278-9c5b-5470890835f7","label":"Link to WFS Capabilities document","description":"In case of a 'hybrid implementation' using WFS for implementing direct access: check manually that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\".\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 16: In case of a 'hybrid implementation' based on Atom for Part A of [INS NS,\nAnnex IV] and WFS for Parts B and C of [INS NS, Annex IV], a link shall be\nprovided to the WFS Capabilities document. Where this is done the 'rel'\nattribute shall have the value 'related' and the 'type' attribute shall have the\nvalue 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-wfs-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: link to WFS Capabilities document'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDbb8df909-494c-46d8-ace0-31e18b57b12f"}},"testSteps":{"TestStep":{"id":"EIDf9e282c5-9970-476c-8414-b840effb574a","label":"Get Service Feed","description":"Requests the Service Feed to let the Tester check a link to the WFS Capabilities,  if the same data set is available as a WFS 2.0.0 Direct Access Download Service.","parent":{"ref":"EIDe12f3530-1b91-4278-9c5b-5470890835f7"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe7139814-6e2e-46a0-9840-f5a4966e1fc3","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5d07157-04fd-49a7-abe9-ea9fa99df135","label":"30 seconds timeout","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2e97c6ff-cd40-4841-9e5a-75dd43206104","label":"Root element 'feed' exists","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID1b6abbe5-c210-4935-b480-5f9ef24744a1","label":"Check link to WFS Capabilities document","parent":{"ref":"EIDf9e282c5-9970-476c-8414-b840effb574a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"/atom:feed\",\n\t\"TR.manual.checkLinkToDirectAccessDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92","label":"Links dataset metadata records","description":"The test case requests the Download Service feed and checks if each feed entry has a link to a Dataset metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 14: Each feed 'entry' in a 'Download Service Feed' shall contain a link to a\nDataset metadata record. This link shall have a 'rel' attribute with a value of\n'describedby' and a 'type' attribute with a value 'application/xml'</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-metadata-records\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset metadata records'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID1b3fcafb-e884-4894-994c-60e9ca525c83","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset metadata links are set.","parent":{"ref":"EID5d7ccb56-cc7d-4517-81df-0efb0cca5c92"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID735c1133-f7b2-450d-a76d-2233016fe4b2","label":"HTTP status code 200 is returned","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0edfa98-cf55-4959-9fd2-40a0d7ea2c78","label":"30 seconds timeout","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID006e73e0-f55c-4a0e-bb00-f8a0b67c55bf","label":"Root element 'feed' exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID725bc702-044a-4404-b09e-d001ca93d527","label":"Link to Dataset Metadata record exists","parent":{"ref":"EID1b3fcafb-e884-4894-994c-60e9ca525c83"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:link[@rel='describedby' and @type='application/xml']/@href)=0]\",\n  \"TR.missingLinkToDatasetMetadataRecord\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID11de8ff5-6025-4a1c-939a-f65cda991b16","label":"Rights element","description":"The test case requests the Download Service feed and checks if it has a rights element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 10: The 'rights' element of a feed shall contain information about rights or\nrestrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Download Service feed rights element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d","label":"Get Service Feed","description":"Requests the Service Feed and checks if the it provides rights information.","parent":{"ref":"EID11de8ff5-6025-4a1c-939a-f65cda991b16"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDfc854807-b285-4a38-8aa5-d97cd2044247","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdb8d397e-7760-4c2b-b638-65772e0ccc9e","label":"30 seconds timeout","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa38a26e9-f9de-4f40-aac8-916fc234e34c","label":"Root element 'feed' exists","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e9e0ae5-ed9e-4d50-9a00-7c38bd6601fd","label":"Feed contains rights information","parent":{"ref":"EIDc0e89d68-2fb5-49e6-a001-cfdfe37ac91d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID1756fabf-84f1-47e0-87da-bafd72512291","label":"Self-reference link","description":"The test case requests the Download Service feed and checks if it provides a self-reference link.\n<br/>\n<br/>\n<b>TODO:</b> The ATS states that hreflang should be compared to /atom:feed/atom:title/@xml:lang . This seems inappropriate -at least an additional comparison against /atom:feed/@xml:lang is required.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 7: The 'Download Service Feed' shall contain an Atom 'link' element that\ncontains an HTTP URI for the 'Download Service Feed' document. The value\nof the 'rel' attribute of this element shall be 'self', the 'hreflang' attribute shall\nuse the appropriate language code and the value of the 'type' attribute shall\nbe 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-self-reference-link\" target=\"_blank\">Abstract Test Case 'Download Service feed: self-reference link'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02","label":"Get Service Feed","description":"Requests the Service Feed and checks if the self-refernce link is correct.","parent":{"ref":"EID1756fabf-84f1-47e0-87da-bafd72512291"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0b0380eb-e5be-47d2-844a-8c4c766e8cee","label":"HTTP status code 200 is returned","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd0f601f2-18e6-4480-a57e-2c0756bd4b79","label":"30 seconds timeout","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfec3dd1f-b041-4127-a910-21fcb7bde22a","label":"Root element 'feed' exists","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ce5a9ab-ca95-470e-8927-d52b82092e69","label":"Self reference equals the Download Service feed URI","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml']/@href\",\n  \"/atom:feed/atom:link with @rel='self'\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID544cf934-0fe3-4865-88b5-5e12285a393f","label":"Self link has proper language references","parent":{"ref":"EIDcfb4cf5f-e35c-490c-bcd4-b740bd221c02"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nString languages = context.expand( '${OpenSearch Description link exists#openSearchLanguages}' )\nlog.info(\"Language: \"+languages)\n\na.exists(\n  \"/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and (@hreflang=/atom:feed/@xml:lang or @hreflang=/atom:feed/atom:title/@xml:lang or contains('\"+languages+\"', @hreflang))]\",\n  \"TR.incorrectFeedSelfReferenceLang\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0","label":"Title","description":"The test case requests the Download Service feed and checks if it each entry has a title.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 18: The 'title' element of a feed entry in a Download Service Feed shall be\npopulated with a human readable title for the feed entry.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-titles\" target=\"_blank\">Abstract Test Case 'Download Service feed: entry titles'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID247f8881-c8e2-462d-a999-96144faee1f3","label":"Get Service Feed","description":"Requests the Service Feed and checks if the title is set for each feed entry.","parent":{"ref":"EID4675f14c-ae5a-4fde-8c41-9d6b9be5cac0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID526d5b82-8ec4-4823-ad22-92e52bcc063e","label":"HTTP status code 200 is returned","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc47d84e2-2b36-4260-abdc-4341b2e5ec51","label":"30 seconds timeout","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID545cc87f-3d0f-4e4d-9378-38476dc21cc7","label":"Root element 'feed' exists","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0af8c7c0-4fac-49df-b817-86b11bb9f69e","label":"Each entry has a title","parent":{"ref":"EID247f8881-c8e2-462d-a999-96144faee1f3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[string-length(atom:title)=0]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9f5a4899-7076-4aae-b859-6881f870bc41","label":"Updated feed element date","description":"The test case requests the Download Service feed and checks if each feed entry provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 19: The 'updated' element of a feed entry in a Download Service Feed shall\ncontain the date, time and timezone at which the feed entry was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element-date\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element date'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5","label":"Get Service Feed","description":"Requests the Service Feed and checks if provides update information.","parent":{"ref":"EID9f5a4899-7076-4aae-b859-6881f870bc41"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID81652ee1-8d6a-4bd7-b73c-7ce6643f4fb1","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDef9d4618-e673-44c8-baf3-1b4cffe84e9f","label":"30 seconds timeout","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbeab8fb-c972-4cd3-8de1-663d96d54a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID44374564-e394-4c06-b685-46c9369e29d1","label":"Each entry has an element updated","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[year-from-dateTime(xs:dateTime(atom:updated)) <=0]\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0c0bf78b-b1e9-46d8-9869-dd3529d51884","label":"Date is not before the year 2012","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDafc0153c-5f03-4e66-b0d6-4f866a13fcbb","label":"Date is not in the future","parent":{"ref":"EIDf590f109-ddde-4c22-8f11-1beedc7628d5"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b","label":"Updated element","description":"The test case requests the Download Service feed and checks if it provides a 'updated' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 11: The 'updated' element of a feed shall contain the date, time and timezone at\nwhich the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Download Service feed updated element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a","label":"Get Service Feed","description":"Requests the Service Feed and checks if each title has an element 'updated'.","parent":{"ref":"EID59e31b8c-2277-4491-b38b-9b067fd88f9b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID1a696ecb-91f0-4291-992d-d50309f756c9","label":"HTTP status code 200 is returned","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe568e2ef-2bf6-4f33-a532-0a8109262273","label":"30 seconds timeout","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID97f57414-5b41-465a-95b0-596c884bc25a","label":"Root element 'feed' exists","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf8c029e9-6cb9-4b9a-9477-255e4e130ff2","label":"Feed contains updated information","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID94ae8e41-ca18-4c83-87d8-81de55891d86","label":"Date is not before the year 2012","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID68cf959b-8629-4c39-89f2-1988e0fa5487","label":"Date is not in the future","parent":{"ref":"EID236bb0dd-3eda-46cd-83c4-7cc7f2fd5b3a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c","label":"Provide a title element","description":"The test case requests the Download Service feed and checks if it provides a 'title' element.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 5: The 'title' element of an Atom feed shall be populated with a human readable\ntitle for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-title\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide a title element'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f","label":"Get Service Feed","description":"Requests the Service Feed and checks if it provides a title.","parent":{"ref":"EID4abfa6f3-4dd7-4a6e-8a07-c172ecf0ed3c"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID816b487c-0309-416b-a9b0-2cf5ed326e08","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4caf026b-3e5e-4dfc-8a35-502c2a0d8c0f","label":"30 seconds timeout","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8aaec96a-4930-40b4-a515-51a2cd999a8d","label":"Root element 'feed' exists","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9e5db714-8cae-4709-8efd-c793aca80c4c","label":"Feed has a title","parent":{"ref":"EIDc5359a5b-67d8-4b76-aa50-1db7b317029f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:title\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4","label":"Separate entries per dataset","description":"The test case requests the Download Service feed and checks that each each dataset has a separate entry in the service feed.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 1: Pre-defined Dataset Download Service implementations shall publish separate\ndatasets as individual entries within an Atom feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-entry-per-dataset\" target=\"_blank\">Abstract Test Case 'Download service feed: separate entries per dataset'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"dependencies":{"testCase":{"ref":"EIDf3bbb312-6c4a-423a-80cc-0dcce1e9a5c9"}},"testSteps":{"TestStep":{"id":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872","label":"Get Service Feed","description":"Requests the Service Feed and checks that each each dataset has a separate entry in the service feed.","parent":{"ref":"EID3b1cf94e-b83c-4c56-9ba5-2bd801010ea4"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDbdbe3b9d-e494-4266-ae6d-b2c20457ab73","label":"HTTP status code 200 is returned","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0eeaa26-2b57-4570-a892-40ca0d642d10","label":"30 seconds timeout","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID6e15e5c8-d02f-4e2e-b88d-776004dd6ef0","label":"Root element 'feed' exists","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb18b17b8-8e7f-4df0-9b8c-ce9ac27b4405","label":"Dataset identifiers (spatial_dataset_identifier_namespace + spatial_dataset_identifier_code combination) are unique","parent":{"ref":"EID061da0c4-6109-4cff-ba9a-3e4f4eeba872"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValues(\n\t\"count(//*:entry[*:spatial_dataset_identifier_code = following-sibling::*/*:spatial_dataset_identifier_code and \"+\n\t\"*:spatial_dataset_identifier_namespace = following-sibling::*/*:spatial_dataset_identifier_namespace])\",\n\t\"0\",\n\t\"TR.uniqueDatasetIdentifiers\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID4546bada-0307-42ec-883b-25494233e9a5","label":"Links dataset feed","description":"The test case requests the Download Service feed and checks if each feed entry contains exactly one dataset feed link with a 'rel' attribute with the value 'alternate' and a 'type' attribute with the 'value' 'application/atom+xml'.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 15: Each feed 'entry' in a 'Download Service Feed' shall contain a single link to a\n'Dataset Feed'. This link shall have a 'rel' attribute with a value of 'alternate'\nand a 'type' attribute with a value 'application/atom+xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-links-dataset-feed\" target=\"_blank\">Abstract Test Case 'Download Service feed links dataset feed'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":{"id":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17","label":"Get Service Feed","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID33789d28-70d9-49eb-be72-66ea2805a04e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe50f5512-6bbb-48c5-a298-9e89a65270dc","label":"30 seconds timeout","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbf1d2fe5-b910-4765-8631-b27b1cd16200","label":"Root element 'feed' exists","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDbdd67613-ea66-4e61-a9c5-3bcfb6430d42","label":"Each entry has exactly one Dataset Feed link","parent":{"ref":"EIDdafcef94-9aa0-44aa-815b-5966d1813b17"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed/atom:entry[count(atom:link[@rel='alternate' and @type='application/atom+xml'])!=1]\",\n  \"TR.invalidDatasetFeedLinks\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb0be137f-b987-4050-9991-9939c14558fc","label":"Provide link to metadata record for download service","description":"The test case requests the Download Service feed and checks if it provides a link to a metadata record.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 6: The 'Download Service Feed' shall contain an Atom 'link' element that links to\nthe metadata record for this Download Service. The value of the 'rel' attribute\nof this element shall be 'describedby' and the value of the 'type' attribute shall\nbe either 'application/xml'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/download-service-feed-link-to-metadata-record\" target=\"_blank\">Abstract Test Case 'Download service feed: Provide link to metadata record for the download service'</a>","parent":{"ref":"EID59c49d09-616a-4a70-a918-2f31d345e38f"},"testSteps":{"TestStep":[{"id":"EID62c56e18-3a6f-4c85-befc-56f47c597583","label":"Get Service Feed","description":"Requests the Service Feed and checks that the  metadata record for the download service exists.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID51637bcb-84c0-43de-a410-39cfe7214d42","label":"HTTP status code 200 is returned","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID314faeb2-54f4-4cf8-b096-2c8ebab24f95","label":"30 seconds timeout","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID77ef7c73-a8e2-4d40-b296-0f88e45b239f","label":"Root element 'feed' exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa0e0a10e-dd0e-4d2a-99af-1380b78c632e","label":"Link to metadata record for the download service exists","parent":{"ref":"EID62c56e18-3a6f-4c85-befc-56f47c597583"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']\",\n  \"TR.missingLinkToMetadataRecordForDownloadService\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09","label":"Get Metadata Record","description":"Requests the  metadata record from the Service Feed.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc94062c4-1c8b-485d-8ddc-ccf5c342bc6a","label":"HTTP status code 200 is returned","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3b6a24fe-a470-4fb1-829c-52baad1dba5d","label":"30 seconds timeout","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID234062a4-45c2-4013-9038-71b8cc9a7d36","label":"Root element 'MD_Metadata' exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"exists(/gmd:MD_Metadata) or ( count(/*) = 1 and exists(/*/gmd:MD_Metadata) )\", \n\t\"TR.missingMDMetadataRootElement\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7e59dfea-4fb9-404d-a382-0fb3a0038862","label":"Resource Locator exists","parent":{"ref":"EID6a7c69f4-362d-4ea1-8992-19f8f0392b09"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//gmd:distributionInfo/*/gmd:transferOptions/*/gmd:onLine/*/gmd:linkage/gmd:URL\",\n  \"TR.missingLinkageResourceLocator\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID72da1012-15a7-43d6-98d7-d734ec85b613","label":"Get Service Feed from Resource Locator","description":"Requests the document from the Resource Locator and compares the describedby link from the 'Get Service Feed' step with the describedby link from this response.","parent":{"ref":"EIDb0be137f-b987-4050-9991-9939c14558fc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID0a21f0ad-a0b9-4d69-a258-51b0555add42","label":"HTTP status code 200 is returned","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID0600ff93-ca28-4e15-aeda-2e5ff799aadf","label":"30 seconds timeout","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID56c9a2f1-63ec-4664-8791-fa8b1c231df9","label":"Root element 'feed' exists","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd38c5dbf-c4ef-4c7e-93e3-4592b895e41c","label":"The describedby link from the first response equals the describedby from this response","parent":{"ref":"EID72da1012-15a7-43d6-98d7-d734ec85b613"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equalPathValuesInStep(\n  \"/*:feed/*:link[@rel='describedby' and @type='application/xml' or @type='application/vnd.ogc.csw.GetRecordByIdResponse_xml']/@href\",\n  \"Get Service Feed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}},{"id":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337","label":"Dataset Feed","description":"Test module for checking the Dataset Feeds that are referenced by the Download Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964","label":"Check all Feed entries","description":"Technical Test Case which iterates over all Dataset feed entries in the Download Service Feed. This test case requires the Test Case 'Links dataset feed' in the 'Download Service Feed' Test Suite to pass.","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EID4546bada-0307-42ec-883b-25494233e9a5"}},"testSteps":{"TestStep":[{"id":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e","label":"Get Service Feed","description":"Requests the Service Feed and checks the contact information.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e59dda7-5894-467a-8898-aab1452b2ca8","label":"HTTP status code 200 is returned","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d5ee48b-e87f-4c0c-92da-f34bed36185c","label":"30 seconds timeout","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDaeb0ef4a-6785-4e05-867a-a582eebea1f6","label":"Root element 'feed' exists","parent":{"ref":"EID58b7f026-abf7-4aa2-8352-b12bba979e8e"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID6cda6835-bf50-4a54-945f-de1cb4f4df90","label":"Check all feed entries","description":"Iterate over all Feed entries.","parent":{"ref":"EID79c5ab9a-fc31-4ecb-8161-4f01fdc7b964"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\n\nProjectHelper ph = new ProjectHelper();\ndef serviceFeedXmlHolder = ph.getTransferPropertyAsXml(\"serviceFeedXml\")\n\ndef feedEntryURLs = serviceFeedXmlHolder.getNodeValues(\"/*:feed/*:entry/*:link[@rel='alternate' and @type='application/atom+xml']/@*:href\");\nlog.info(\"feedEntryURLs: \" + feedEntryURLs);\n\n// clear url to test\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",\"\")\n\n// Check all except the last one\nfor(int i=0; i<feedEntryURLs.size()-1; i++) {\n\tfinal String feedEntryURL = feedEntryURLs[i]\n\tlog.info(\"Checking URL: \" + feedEntryURL)\n\ttestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURL)\n}\n\nlog.info(\"Checking URL: \" + feedEntryURLs.last())\ntestRunner.testCase.testSuite.setPropertyValue(\"feedEntryURL\",feedEntryURLs.last())","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}}]}},{"id":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b","label":"Contact information","description":"Checks that the feed provides contact information about the individual or organisation responsible for the feed. The author name and email address must be provided.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 25: The 'author' element of a 'Dataset Feed' shall contain current contact information for an individual or organisation responsible for the feed. At the minimum, a name and email address shall be provided as contact information.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-contact-information\" target=\"_blank\">Abstract Test Case 'Dataset feed contact information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDce5a6d78-3a71-4ded-8b2e-fcc4d71d6849"}},"testSteps":{"TestStep":{"id":"EIDed487595-c12b-42bb-9251-842d352f151b","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5cfc2aa9-1e9d-4e1d-a494-49e80907620b"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDe057985c-82b5-4f78-ba3a-14f5ec7a0e48","label":"HTTP status code 200 is returned","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID42507c13-e6d6-4919-93b4-407ad56671b9","label":"30 seconds timeout","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7b7e68a2-367c-4164-83e7-493f2855b1ad","label":"Root element 'feed' exists","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf2f63ec7-376e-4a0c-a2fe-6595c3d9592b","label":"Feed contains author","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:name\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3416904-5bc6-45f4-a331-0abf7f0b87fa","label":"Feed contains author email","parent":{"ref":"EIDed487595-c12b-42bb-9251-842d352f151b"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:author/atom:email\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc","label":"HTTP URI","description":"Checks that dataset feed provides the HTTP URI of the feed as feed id.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 22: The 'id' element of a 'Dataset Feed' shall contain an HTTP URI which dereferences to the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-id\" target=\"_blank\">Abstract Test Case 'Dataset feed HTTP URI'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDed94db52-6a1d-4103-8645-2128cd464847","label":"30 seconds timeout","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5bf2efd6-136a-4a17-bb8c-ae862a731fbd","label":"HTTP status code is 200","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc6c5b1fb-fb8d-4031-876f-e56f61ec96f4","label":"Feed id is an URI","parent":{"ref":"EID2aa9841c-d552-45fe-b35a-d4b1659a3855"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"/atom:feed[substring(atom:id,1,4)!='http']\",\n  \"TR.idNotAnURI\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDa6112087-5531-41d1-bfb0-8515d76785cc","label":"Get Dataset Feed by ID","description":null,"parent":{"ref":"EID34ccb113-ed5a-40fc-bd4c-1f8c53b447cc"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID96b34215-995a-4f6c-b5b3-5d0c38e02647","label":"HTTP status code is 200","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1344e9c6-84c8-4e25-a9fb-9bb384a6f9a0","label":"30 seconds timeout","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8da901fc-2e5f-4b3a-ad5c-dfa6ce85da6a","label":"Root element 'feed' exists","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID9ea79d5a-86ed-4dde-85e6-ab0acf6bbb8a","label":"Feed ID equals request URL","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/atom:feed/atom:id\",\n  \"/atom:feed/atom:id\",\n  messageExchange.getEndpoint(),\n  \"TR.feedIdDoesNotReferToEndpoint\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID568e315d-81c7-426d-8e06-d90ada499d9c","label":"Response equals response from test step 'Get Dataset Feed'","parent":{"ref":"EIDa6112087-5531-41d1-bfb0-8515d76785cc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\ndef response = context.expand( '${Get Dataset Feed#Response}' )\n\nif( response.toString() != messageExchange.getResponseContent().toString() ) {\n\tthrow new TranslatableAssertionError(\"TR.responseNotEqual\", \"testStep\", \"Get Dataset Feed\");\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID5c0ebf08-068d-4973-87b5-0290707fedbf","label":"Download dataset link","description":"Test if at least one feed entry is available with at least one link to download a file.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 26: Each 'Dataset Feed' shall contain at least one feed entry containing links to download the pre-defined dataset (e.g. as a GML file).</li>\n<li>TG Requirement 29: Each feed entry shall contain an Atom 'link' element that links to the pre- defined dataset file described by the entry. The value of the 'rel' attribute of this element shall be 'alternate' and a 'length' attribute (providing the length of the linked resource in octets) shall be provided if possible. Where a dataset is provided in multiple physical files, additional 'link' elements shall be provided in the feed entry, one link for each physical file.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-download-dataset\" target=\"_blank\">Abstract Test Case 'Link download dataset'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd40a2381-4226-4c44-9b39-f31aa7080c68","label":"Feed title exists","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb69b2305-f8e9-48a5-9dde-1795f5bf7de9","label":"30 seconds timeout","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3bb3fe48-5cc6-46c2-bb42-94ea3d263aed","label":"HTTP status code is 200","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa4ab80d7-03f1-4607-aba7-3fdc48a5d084","label":"At least one feed entry is available with at least one link to download a file","parent":{"ref":"EID013a9576-bdf0-4f2c-8521-6e50e3a10ab3"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' ) or (@rel='section')]/@href\",\n  \"TR.missingOneFeedEntryWithDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d","label":"Get file","description":null,"parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf99befdc-93e5-4089-8926-af36a5a35494","label":"30 seconds timeout","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3345203-a8f6-4db5-bf12-814533a4625d","label":"HTTP status code is 200, 204, 301, 302 or 303","parent":{"ref":"EID004bc31a-bb94-4a8b-a741-1d9a9000e54d"},"expectedResult":"exist","expression":"200, 204, 301, 302, 303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}]}},{"id":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f","label":"Get Dataset Feed and check optional length attributes","description":"A link \"length\" attribute (providing the length of the linked resource in octets *) must be provided if possible.","parent":{"ref":"EID5c0ebf08-068d-4973-87b5-0290707fedbf"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID6d506ce6-087f-451b-94ce-7d58a8edae2f","label":"Feed title exists","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID505e624d-ec6b-48a5-a0f6-925c25cf1452","label":"30 seconds timeout","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1a1bd393-4cdd-4204-aa58-445458503c79","label":"HTTP status code is 200","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf6549364-26ac-4a4a-8f6e-78588a6d68eb","label":"Download link has length attribute","parent":{"ref":"EIDf518a901-93c1-4613-a6c1-b41d6faf0a5f"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')]/@href\",\n  \"TR.manual.checkLengthOfDlFile\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea","label":"Rights element","description":"Check that the feed's rights element exists.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 23: The 'rights' element of a 'Dataset Feed' shall contain information about rights or restrictions for that feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-rights-element\" target=\"_blank\">Abstract Test Case 'Rights element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID77a041d1-0eb0-46f0-8d57-08f5283556ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcd901e00-008b-42d5-bbae-cf0793bcf243","label":"30 seconds timeout","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc370ce35-d06c-42a3-8875-fbe4555a9296","label":"HTTP status code is 200","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb1ff6b41-ee24-47e8-aad5-693419310aa4","label":"Feed contains rights information","parent":{"ref":"EIDfb0b0344-5d6b-4293-8839-b249ddc9fbee"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/atom:feed/atom:rights\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6","label":"Title","description":"Check that the feed's title is non-empty text.\n<br/>\n<br/>\n<b>Known limitations: </b> The ATS states that the test case needs to check wheter the value is 'alphanumeric'. This is inappropriate, since the value can contain characters that are not in the range of A-Z,a-z and 0-9, for instance text strings in greek.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 21: The 'title' element of a 'Dataset Feed' shall be populated with a human readable title for the feed.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-title\" target=\"_blank\">Abstract Test Case 'Title'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDbab92e23-e681-41e9-980f-59794067365d","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID9d8b99ed-1360-4d01-ad39-4b167f8dcca6"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID957ff43d-aaee-449a-9c05-ae93e373cfc1","label":"30 seconds timeout","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID446b58f4-85b6-4892-aad0-9c2f7939a82d","label":"HTTP status code is 200","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID267fb057-fd3c-4cd8-bc35-19cc199575cf","label":"Feed title exists","parent":{"ref":"EIDbab92e23-e681-41e9-980f-59794067365d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.existsNonEmptyText(\"/atom:feed/atom:title\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID0218d717-6b00-460d-94cc-48039accb6ea","label":"Updated element","description":"Check if the updated element provides a valid date. The date must not be in the future or before the year 2012.\n\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 24: The 'updated' element of a 'Dataset Feed' shall contain the date, time and timezone at which the feed was last updated.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-updated-element\" target=\"_blank\">Abstract Test Case 'Updated element'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0218d717-6b00-460d-94cc-48039accb6ea"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDad8d88cd-6673-4ab1-ad28-a320bc7e2d74","label":"30 seconds timeout","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1690699e-6bcd-4c07-bd29-aced03506d36","label":"HTTP status code is 200","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe785106d-a4fe-448f-8167-9eeb514661e7","label":"Updated element exists","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n  \"year-from-dateTime(xs:dateTime(/atom:feed/atom:updated)) > 0\",\n  \"TR.missingFeedUpdatedInformation\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDefdd906b-d2f5-435e-a7b9-4a0ae838388f","label":"Date is not before the year 2012","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isFalse(\n  \"//atom:entry/atom:updated/year-from-dateTime( xs:dateTime( . ) ) < 2012\",\n  \"TR.dateIsBefore2012\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca40e458-362b-440c-a992-6efabf463339","label":"Date is not in the future","parent":{"ref":"EID7d57ba11-1df9-4bb2-aa77-440a313392fd"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.TimeUtils;\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String now = TimeUtils.dateToIsoString( new Date() )\n\na.isFalse(\n  \"//atom:entry/atom:updated/xs:dateTime(.) > xs:dateTime('\"+now+\"')\",\n  \"TR.dateIsInTheFuture\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5","label":"Each entry has CRS information","description":"Check that each entry in the Dataset feed one valid category element is provided for the CRS.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 35: Each CRS representation shall have a 'category' element which refers to the CRS definition and code.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-crs\" target=\"_blank\">Abstract Test Case 'Each entry has CRS information'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EIDb84cb78c-b67f-451a-a4b3-510178c03621","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID8d0d9cdd-efca-42e8-ad1f-7eb66aa638d5"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID5686bf92-0937-43f9-894c-a6fbfcce14d9","label":"30 seconds timeout","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3f955f5f-aa23-4e9c-b2b6-ced8d7e6a5ef","label":"HTTP status code is 200","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDc5baa617-99df-453c-89d5-889050c29330","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EIDb84cb78c-b67f-451a-a4b3-510178c03621"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23","label":"Language for download link","description":"Check that each entry which has more than one download link provides the hreflang attribute to indicate the language of the target dataset.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 31: Where alternative language representations of datasets are linked to, the 'hreflang' attribute of the link element shall be used to indicate the language of the target dataset as described in the Atom specification.</li>\n<li>TG Requirement 38: Where a feed is made available in alternative languages, links shall be provided to these alternative representations. These links shall each use the 'hreflang' attribute to indicate the language of the alternative representation. The value of the 'rel' attribute for these link elements this element shall be 'alternate'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-dataset-language\" target=\"_blank\">Abstract Test Case 'Language for download link'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID207c5c35-db32-41ba-879e-1e808b7489c6","label":"Get Dataset Feed","description":null,"parent":{"ref":"EIDb2a3b021-7992-4db1-ae8a-f4b214e54a23"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7e4fda51-4006-4f3e-a6f4-7db68392fc11","label":"30 seconds timeout","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID49422432-0c1b-4af3-bfa2-251d5ae79228","label":"HTTP status code is 200","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf0a33a4d-c92f-4baf-85cb-b4abbc0ba1ce","label":"If an entry has more than 1 download link, test that each of these download links provides the hreflang attribute","parent":{"ref":"EID207c5c35-db32-41ba-879e-1e808b7489c6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.isTrue(\n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])=1 or \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')]/@hreflang) = \"+ \n  \"count(//*:entry/*:link[(@rel='alternate' and @type!='application/atom+xml') or (@rel='section')])\",\n  \"TR.missingLanguageForDownloadLink\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID55c069c6-94a5-4651-9af9-8246cc146022","label":"Links for Spatial Object Types","description":"Test if the dataset feed contains at least one link to a registry\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 28: Each feed shall contain an Atom 'link' element for each INSPIRE Spatial Object Type in the dataset. The link shall refer to the INSPIRE Registry unless the data does not conform to any Data Specification in which case a link to a local definition of the Spatial Object Type shall be used instead. The value of the 'rel' attribute of this element shall be 'describedby'. For definitions in the\nINSPIRE registry the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-links-spatial-object-types\" target=\"_blank\">Abstract Test Case 'Links for Spatial Object Types'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID7b0a0bbe-f703-489c-8693-efcaf6161199","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID55c069c6-94a5-4651-9af9-8246cc146022"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID76133e1d-5614-401d-852e-4ef8815a1cef","label":"HTTP status code is 200","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDabd27331-1785-46d9-86f2-d2139848a4c7","label":"30 seconds timeout","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf8519e33-7b0f-41c1-8b4f-1c2ba30b2a17","label":"Root element 'feed' exists","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd82ba567-ee3b-4df4-be82-dc754c146e97","label":"Test if the dataset feed contains at least one link to a registry","parent":{"ref":"EID7b0a0bbe-f703-489c-8693-efcaf6161199"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']\", \n\t\"TR.missingLinkToRegistry\"\n);\n\na.existsNonEmptyText(\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\",\n\t\"/atom:feed/atom:link[@rel='describedby' and @type='text/html']/@href\", \n\t\"TR.missingLinkToRegistry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID59246a83-610b-4a03-9864-c882200e24ab","label":"Multiple links for multiple physical files","description":"Test for dataset which are provided in multiple physical files, that each file is linked via a separate link element. Each of these link elements shall have a \"rel\" value equal to \"section\".\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 32: Where a dataset is provided in multiple physical files: each file shall be linked to via a separate 'link' element. Each of these 'link' elements shall have a 'rel' value equal to 'section'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files\" target=\"_blank\">Abstract Test Case 'Multiple links for multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID59246a83-610b-4a03-9864-c882200e24ab"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDf1af7b9e-1d16-4c06-8661-46de0db09a2b","label":"HTTP status code is 200","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbc6c6c4-09ef-47de-afe4-7fcea6ee8422","label":"30 seconds timeout","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID63eeee36-af99-4c6b-8afb-470859d16828","label":"Root element 'feed' exists","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3c96db82-a589-4a37-bcfd-73164aa74438","label":"Number of section links must not be exactly 1","parent":{"ref":"EID34caf1a6-eb2a-449d-9fb0-713f1dc1cabc"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.notExists(\n\t\"//*:entry[count(./*:link[@rel='section']) eq 1]\",\n\t\"TR.multipleLinksForMultipleFilesExpected\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0","label":"Separate entries for each format/CRS combination","description":"Test that the Dataset Feed contains separate entries for each format/CRS combination in which the pre-defined dataset is made available for download.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 27: Each 'Dataset Feed' shall contain separate entries for each format/CRS combination in which the pre-defined dataset is available to download.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-entries\" target=\"_blank\">Abstract Test Case 'Separate entries for each format/CRS combination'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"dependencies":{"testCase":{"ref":"EIDb87b5132-cb6c-44cb-9215-e588fc1e3344"}},"testSteps":{"TestStep":[{"id":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a","label":"Get Service Feed","description":"Requests the Service Feed and checks the CRS information.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd70a53f2-2100-4d59-b44a-2e26834d370e","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID755b16af-dd85-46d3-8215-9cd4a75b6e6f","label":"30 seconds timeout","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDd7cfd878-1d91-4cf2-88b7-2f353a6cef78","label":"Root element 'feed' exists","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDca90b1e6-1fba-41f6-a573-07f914e4d335","label":"Each entry has an element category, including a term and label, to refer to CRSs.","parent":{"ref":"EIDc2cdbb58-dbd6-4d34-a2a8-a6ae9b81320a"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15","label":"Get Dataset Feed","description":"Requests the Dataset Feed and checks the CRS and alternate link combinations.","parent":{"ref":"EID6e6a47ed-d7b8-406a-9cd5-e1abf4652cf0"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa2fd9611-3fc5-4fb3-a708-e5400fd2b9c0","label":"30 seconds timeout","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID03b95227-e284-4279-87f2-9928c6a4eccc","label":"HTTP status code is 200","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID450d4218-9461-496d-aa2f-33a2b3b8389b","label":"Root element 'feed' exists","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":null,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc15a6218-8819-40b8-a364-eb9720a3838b","label":"Exactly one category per entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(atom:category[@term])>1])\",\n\t\"//atom:entry[count(atom:category[@term])>1]\",\n\t\"0\",\n\t\"TR.exactlyOneCategoryPerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDacf3709f-6fc4-4d4c-b025-2b49f702bbc5","label":"Exactly one alternate link type per Dataset feed entry","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.equals(\n\t\"count(//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1])\",\n\t\"//atom:entry[count(distinct-values(atom:link[@rel='alternate']/@type))>1]\",\n\t\"0\",\n\t\"TR.exactlyOneAlternateLinkTypePerEntry\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID81bdd847-687d-4597-ba58-99963ff3635a","label":"Alternate link types and CRS combinations are unique","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"<etfTranslate what='TR.uniqueAlternateLinkTypes'/>","expression":"<etfTranslate what='TR.uniqueAlternateLinkTypes'>\n{\n\n    let $sortedValues := for $entry in //*:entry\n    order by $entry/*:category[1]/@term, $entry/*:link[@rel = 'alternate'][1]/@type\n    return concat('CRS ', $entry/*:category[1]/@term, ' with type ', $entry/*:link[@rel = 'alternate'][1]/@type, '   ')\n    \n    let $duplicates := $sortedValues[let $pos := position() return . = $sortedValues[$pos+1]]\n    let $duplicateCount := count( $duplicates )\n    let $distinctDuplicates := distinct-values( $duplicates )\n    \n    return if ($duplicateCount > 0) then \n        (<count> { $duplicateCount } </count>,<duplicates> { $distinctDuplicates } </duplicates>) \n        else ()\n\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe118dccc-6f1b-4376-a577-7e8ae13cd41e","label":"Category terms in this Dataset feed exist in the Download Service Feed","parent":{"ref":"EID76d165b9-d41b-45eb-b7e6-27fc900f7f15"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\nfinal String terms = context.expand( '${Transfer_Properties#categories}' );\nlog.info(\"Download Service Feed terms: \"+terms);\n\na.notExists(\n\t\"//atom:entry/atom:category[string-length(@term)>0 and string-length(@label)>0 and not(contains('\"+terms+\"', @term))]\",\n\t\"TR.atLeastOneCategoryNotInServiceFeed\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f","label":"Use INSPIRE media-types only","description":"Test that only media types listed in the INSPIRE media-types register are used.\n<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 30: The 'type' attribute of the link element shall be used to indicate the media type of resource that will be returned if the link is resolved. A valid media type must be used for the value of this attribute; if the media type is not registered with IANA it should still follow the conventions for unregistered media types.</li>\n<li>TG Requirement 34: Only media types listed in the INSPIRE media-types register shall be used.</li>\n\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-link-media-type\" target=\"_blank\">Abstract Test Case 'Use INSPIRE media-types only'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2","label":"Get INSPIRE Media Types","description":"Get the list of INSPIRE media types from https://inspire.ec.europa.eu/media-types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc947b341-320a-4f0b-96aa-3a351ee25a10","label":"30 seconds timeout","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3c9511c-4101-4915-81b9-aba6e2072815","label":"HTTP status code is 200","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID44852025-6fca-456f-acf1-95e7c7f2dd8a","label":"Root element 'feed' exists","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID3df8c60f-a520-4f3a-afa0-1446c757112c","label":"ID is INSPIRE media types","parent":{"ref":"EID8ef21a6b-902d-4585-ae34-e5af27262ef2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\n\t\"/atom:feed/atom:id[contains(., '://inspire.ec.europa.eu/media-types')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID0b46fce1-085e-4564-b97c-dce9ed762b8f","label":"Iterate over Media Type entries","description":null,"parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Types\")\n\ndef mediaTypeUrls = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:link[@rel='self']/@href\" );\ndef mediaBaseTypes = xmlHolder.getNodeValues( \"/*:feed/*:entry/*:title\" );\nlog.info(\"mediaTypeUrls: \" + mediaTypeUrls);\n\n// clear url to test\nph.setTransferProperty(\"mediaTypeUrl\", \"\")\nph.setTransferProperty(\"mediaTypes\", \"\")\n\nfor(int i=0; i < mediaTypeUrls.size(); i++) {\n\tfinal String url = mediaTypeUrls[i];\n\tfinal String baseType = mediaBaseTypes[i];\n\n\tlog.info(\"Using URL: \"+url)\n\tph.setTransferProperty(\"mediaTypeUrl\", url)\n\tph.runTestStep(\"Get INSPIRE Media Subtype\");\n\tdef respXmlHolder = ph.getTestStepResult(\"Get INSPIRE Media Subtype\")\n\tdef extractedMediaTypes = respXmlHolder.getNodeValue( \"string-join(/*:feed/*:entry/*:title, '')\" );\n\tfinal String mediaTypes = ph.getTransferProperty(\"mediaTypes\")\n\tif(mediaTypes!=\"\") {\n\t\tph.setTransferProperty(\"mediaTypes\", mediaTypes+\" \"+extractedMediaTypes)\n\t}else{\n\t\tph.setTransferProperty(\"mediaTypes\", extractedMediaTypes)\n\t}\n}\n\nph.disableTestSteps([\"Get INSPIRE Media Subtype\"]);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID0531fe14-2169-4a9e-a1da-30040ea73277","label":"Get INSPIRE Media Subtype","description":"Get the list of INSPIRE media sub types with 'Accept'-Header 'application/atom+xml'","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID7b4d43eb-cfbd-47b2-aeae-9d1fc802d78d","label":"30 seconds timeout","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID7389eee5-84b7-4333-8848-9f5b394c9d67","label":"HTTP status code is 200","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75bb53c4-17e8-4cb4-b6c6-72a5c6cc1819","label":"Root element 'feed' exists","parent":{"ref":"EID0531fe14-2169-4a9e-a1da-30040ea73277"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c","label":"Get Dataset Feed","description":"Get the Dataset Feed and check if it contains valid INSPIRE media types","parent":{"ref":"EID7e03feba-57eb-4ca1-bb30-1c265f65a03f"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb6a56e5f-482f-4b20-85d3-6b052872f9d4","label":"HTTP status code is 200","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf2e49918-0cf7-4e6d-8c6c-941ef3f85113","label":"30 seconds timeout","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9bc2521f-a127-45d6-aaaa-18f9b623ab84","label":"Root element 'feed' exists","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb88e3063-f589-47ef-8ef3-18a87d85c4f6","label":"Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used","parent":{"ref":"EIDaf1e117e-aac8-4ada-8750-6eaee997df3c"},"expectedResult":"<etfTranslate what=\"TR.notAnInspireMediaType\"/>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<etfTranslate what=\"TR.notAnInspireMediaType\">\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\n(<links>$entry/atom:link[@rel='alternate']/@href</links>,\n<ids>$entry/atom:id</ids>,\n<types>$entry/atom:link[@rel='alternate']/@type</types>)\n}\n</etfTranslate>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}}]}},{"id":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993","label":"Provide guidance for downloading multiple physical files","description":"Test that a description of the dataset structure is provided either in an atom \"content\" element as free text, or in an external document which is the target of another \"link\" element where a dataset is provided in multiple physical files.<br/>\n<br/>\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 33: Where a dataset is provided in multiple physical files: a description of the dataset structure shall be provided EITHER in an atom 'content' element as free text, OR in an external document which is the target of another 'link' element. Where a 'link' element is used this element shall have a 'rel' value equal to 'alternate' and a suitable media type shall be used for the 'type' value.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-atom/3.1/atom-pre-defined/dataset-feed-multiple-files-description\" target=\"_blank\">Abstract Test Case 'Provide guidance for downloading multiple physical files'</a>","parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":{"id":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856","label":"Get Dataset Feed","description":null,"parent":{"ref":"EID0eac5cf6-1464-47d2-acfe-ff4ad8290993"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID10178b9c-8e01-498c-8975-2d49fff98a21","label":"HTTP status code is 200","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID15995736-59e8-4c5e-ba0a-bb0c23659a96","label":"30 seconds timeout","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID1d15c470-afac-43ee-a42f-677acd4d2ea7","label":"Root element 'feed' exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDf22143da-6d29-44de-8723-b11e85e7b441","label":"Guidance exists","parent":{"ref":"EID76ab47a4-4bb4-494d-8f01-66088b6ef856"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.isTrue(\n\t\"empty(//atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0])\",\n\t\"TR.missingGuidanceForDownloadingMultipleFiles\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID01859f31-5d26-452b-a2cc-6d99b91117a1","label":"TODO Feed Elements Mandatory","description":null,"parent":{"ref":"EID07c1c315-c45c-4dd5-8be3-6dd12604b337"},"testSteps":{"TestStep":[{"id":"EID6a056425-bb10-4c60-825f-918a41486935","label":"GetServiceFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EID72b3ddf5-299c-4614-98a5-6d6bff20f601","label":"Service Feed available","parent":{"ref":"EID6a056425-bb10-4c60-825f-918a41486935"},"expectedResult":"exist","expression":"200,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}},{"id":"EID1d725a88-4a09-4d3c-86f2-a5a530c5788e","label":"RunTestsForAllDatasetFeeds","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\n// Start parsing of Service Feed\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(props.getPropertyValue(\"feedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the URLs of the Dataset Feeds\ndef dataFeedUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[@rel='alternate' and @type='application/atom+xml']/@href\");\n\n// clear url to run the Dataset Feed tests, set the url to the serviceEndpoint to be sure.\nprops.setPropertyValue(\"dataFeedURL\",testRunner.testCase.testSuite.project.getPropertyValue(\"serviceEndpoint\"))\n\n// now run Feed test for each dataFeedUrl, to validate Dataset feeds\nfor( i in dataFeedUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to Dataset Feeds. Now checking Dataset Feed with URL: \" + i)\n   props.setPropertyValue(\"dataFeedURL\",i)\n   props.setPropertyValue(\"dataFeedURLEncoded\",i.replaceAll(\"&\",\"&amp;\"))\n   testRunner.runTestStepByName(\"ValidateDatasetFeed\")\n   // testRunner.runTestStepByName(\"Tracer\")\n   testRunner.runTestStepByName(\"PropertyTransferDatasetFeedXml\")\n   testRunner.runTestStepByName(\"RunTestsForAllDatasetUrls\")\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Run TestCase M-04: Dataset Metadata Mandatory\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c","label":"ValidateDatasetFeed","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDa0acb1e7-be24-468d-8647-fc0603312ea6","label":"M-04##AtomLinkSelf: Feed link to self exists and has proper language references","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $linkself:=/atom:feed/atom:link[@rel='self' and @type='application/atom+xml' and @hreflang=//atom:feed/atom:title/@xml:lang]/@href\nreturn\nif ($linkself='${#dataFeedURLEncoded}')\nthen \"\"\nelse \"The Atom feed does NOT contain a link to itself including a language reference. Check the element /atom:feed/atom:link with @rel='self'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID8523ae5b-baf3-42e3-9f97-4b75c2d41df2","label":"M-04##req20: Feed title exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $title:=/atom:feed/atom:title\nreturn\nif (string-length($title)=0)\nthen \"The Atom feed does NOT contain a Feed Title.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfed3a553-ca1f-4d25-9d19-bf83d617f84d","label":"M-04##req21: Feed id refers to self URL","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $atomid:=/atom:feed/atom:id\nreturn\nif ($atomid!='${#dataFeedURLEncoded}')\nthen concat(\"The Atom feed id \", $atomid,\" does NOT refer to the self URL (\",'${#dataFeedURLEncoded}',\").\")\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDe8aaf0c5-a1eb-4795-abdf-50eed952c424","label":"M-04##req22: Feed rights element exists","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $rights:=/atom:feed/atom:rights\nreturn\nif (string-length($rights)=0)\nthen \"The Atom feed does NOT contain rights information.\"\nelse \"\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID484655d1-a8b6-45ba-b895-a323cb52f05b","label":"M-04##req23: Feed updated element exists and contains a date and time","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $updated:=year-from-dateTime(xs:dateTime(/atom:feed/atom:updated))\nreturn\nif ($updated > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain updated information.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID6ed3a5ef-f791-4252-93b1-1237a811e900","label":"M-04##req24: Feed contains an author name and email address","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $author:=/atom:feed/atom:author[string-length(./atom:name)>0 and string-length(./atom:email)>0]\nreturn\nif (exists($author))\nthen \"\"\nelse \"The Atom feed does NOT contain an author name and/or email address.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDf506f6b8-3b2c-472f-aa14-cdb03782748f","label":"M-04##req25-28-31: Feed contains at least one entry for data, with a link to the dataset and length set or a section link in case of multiple files.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $nrdatalinks:=count(//atom:entry/atom:link[(@rel='alternate' and @type!='application/atom+xml' and number(@length) > 0) or (@rel='section')])\nreturn\nif ($nrdatalinks > 0)\nthen \"\"\nelse \"The Atom feed does NOT contain any entries with a correct link for data. Check if the entries contain alternate links (not referring to another Atom feed) or section links for multiple files.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3c9cdf67-38ba-4a51-85b0-a470a4ca411e","label":"M-04##req26a: Dataset feeds contain seperate entries for each format/CRS combination. Each entry link for download has one / the same (media)type","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='alternate' and @type!=../atom:link[1][@rel='alternate']/@type]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's link for download has different (media) types.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID3edea1b7-a51a-477a-a819-7a1b163feab6","label":"M-04##req26b: Dataset feeds contain seperate entries for each format/CRS combination. Each entry has the same CRS category elements","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:category[@term!=../atom:category[1]/@term]]\nreturn\nconcat (\"The entry with id: \",$entry/atom:id,\" does not contain separate entries for each media type/CRS combination. This entry's category terms are not the same, indicating that multiple CRSes are offered in the same entry.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID299103d0-5167-4cf4-b64c-a251f7b0f894","label":"M-04##req27: Feed contains at least one link to Spatial Object descriptions (in text/html)","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nlet $sodesc:=/atom:feed/atom:link[@rel='describedby' and @type='text/html']\nreturn\nif (exists($sodesc))\nthen \"\"\nelse \" there is no link to a Spatial Object description. That is: a link with type='text/html' and rel='describedby'.\"\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EIDfa8fff6a-c9e8-4b7e-8997-6d29163359a3","label":"M-04##req31: If a section link is provided (for multiple files) then there should be more than 1 section link","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:link[@rel='section'])=1]\nreturn\nconcat (\"If a section link is provided (for multiple files) then there should be more than 1 section link. The entry with id \", $entry/atom:id ,  \" has only 1 section link.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID36243a7d-204a-4d0b-b1ce-da634f14d302","label":"M-04##req32: If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[./atom:link[@rel='section'] and count(./atom:link[@rel='alternate'])=0 and count(./atom:content) = 0]\nreturn\nconcat (\"If multiple files are provided, then the links shall be of rel='section' and there shall be a content element or alternate link as a description. The entry with id \", $entry/atom:id ,  \" does not have this.\")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID4b9ecdf9-3b55-45f6-9343-d08cb5d04b56","label":"M-04##req34: Only media types listed in the INSPIRE media-types register at https://inspire.ec.europa.eu/media-types/ shall be used.","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\ndeclare namespace inspire_dls='http://inspire.ec.europa.eu/schemas/inspire_dls/1.0';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry\nwhere contains('${#mediaTypes}', $entry/atom:link[@rel='alternate']/@type)!=true\nreturn\nconcat(\"The alternate link \",$entry/atom:link[@rel='alternate']/@href,\" for entry with id \",$entry/atom:id,\" offers a media type '\",$entry/atom:link[@rel='alternate']/@type,\"' that is not in the INSPIRE list at https://inspire.ec.europa.eu/media-types/. \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}},{"id":"EID86273ea9-66e7-41d8-a171-3a8db6cbbcfc","label":"M-04##req35: Each entry shall have an element category for the CRS","parent":{"ref":"EIDd4c09a50-2618-4207-ae0d-0d5f772b840c"},"expectedResult":"<result>AssertionFailures:</result>","expression":"declare namespace atom='http://www.w3.org/2005/Atom';\ndeclare namespace georss='http://www.georss.org/georss';\ndeclare namespace xlink='http://www.w3.org/1999/xlink';\n\n<result>AssertionFailures:\n{\nfor $entry in //atom:entry[count(./atom:category[string-length(@term)>0 and string-length(@label)>0])!=1]\nreturn\nconcat (\"Each entry shall have one element category for the CRS. The entry with id \", $entry/atom:id ,  \" does not have 1 element, but :\" , count(./atom:category[string-length(@term)>0 and string-length(@label)>0]), \". \")\n}\n</result>","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/5c28b666-4dda-43af-aa6e-1eed6212d8d8.json"}}]}},{"id":"EID5ea3f9f5-ea00-4ce2-b94f-60274c759d85","label":"RunTestsForAllDatasetUrls","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"props = testRunner.testCase.testSteps['Properties']\n\ndef groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);\ndef feedXmlHolder = groovyUtils.getXmlHolder(testRunner.testCase.testSuite.project.getPropertyValue(\"dataFeedXml\"))\nfeedXmlHolder.namespaces[\"atom\"] = \"http://www.w3.org/2005/Atom\";\nfeedXmlHolder.namespaces[\"xlink\"] = \"http://www.w3.org/1999/xlink\";\n\n// Pull out the dataSetUrlNodes\ndef dataSetUrlNodes = feedXmlHolder.getNodeValues(\"//atom:entry/atom:link[(@rel='alternate' or @rel='section') and @type!='application/atom+xml']/@href\");\n\n// Then run Feed test for each dataSetUrl\nfor( i in dataSetUrlNodes )\n{\n   i=i.replaceAll(\"%7B\",\"{\")\n   i=i.replaceAll(\"%7D\",\"}\")\n   log.info(\"The Atom feed refers to a dataset to download at the URL: \" + i)\n   props.setPropertyValue(\"dataSetURL\",i)\n   testRunner.runTestStepByName(\"ResolveDatasetLink\")\n   // testRunner.runTestStepByName(\"Tracer\")\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8","label":"ResolveDatasetLink","description":null,"parent":{"ref":"EID01859f31-5d26-452b-a2cc-6d99b91117a1"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":{"id":"EIDfced5ec0-ac9b-4792-bba9-0d1682a5c048","label":"Response starts within 30 seconds (using HTTP HEAD)","parent":{"ref":"EID59a32c2c-e930-4fa5-ac61-f2f94d55bdb8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}}}}]}}]}},{"id":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2","label":"OpenSearch Description","description":"Test module for checking the OpenSearch Description which is referenced by a Service Feed.\n<br/><br/>\n<b>Known limitations: </b> Response schema validation is not implemented yet.","testCases":{"TestCase":[{"id":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351","label":"Get OpenSearch Description link","description":"Technical Test Case to retrieve and set theURL to the OpenSearch Description. This Test Case depends on the Test Case 'Link to OpenSearch Description document' in the 'Download Service Feed' test module.","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684","label":"Get Service Feed","description":"Requests the Service Feed and set the URL to the OpenSearch description.","parent":{"ref":"EIDc7150cb1-fa7f-4589-9871-330bca1aa351"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb98e8d08-b750-4911-a3ed-a1b55ea4f400","label":"HTTP status code 200 is returned","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8c018d06-fce0-4029-9c58-62e544d85b07","label":"30 seconds timeout","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID3cee0dcc-2196-40ab-bd5f-a2ef0ed0d0d8","label":"Root element 'feed' exists","parent":{"ref":"EIDf150efa8-92d2-4fab-bfdf-e1ffbe8ff684"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID2627cf68-632b-45bc-b53e-74edae092d3a","label":"Provide languages","description":"The test case requests the OpenSearch Description document and checks if it provides at least one 'Language' element.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 45: For each language supported by the download service, the OpenSearch\ndescription shall contain a 'Language' element that contains the language\ncode. The first 'Language' element shall contain the Default Language.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-provides-languages\" target=\"_blank\">Abstract Test Case 'OpenSearch Description provides languages'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID1f602fae-4534-4d14-9b57-46dcb2702372","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID2627cf68-632b-45bc-b53e-74edae092d3a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID27a86dd2-6078-4fc4-bd6a-b0e62395b2e4","label":"HTTP status code 200 is returned","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDb5528c1c-abba-48af-84e7-c1a42b16ff4f","label":"30 seconds timeout","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDdbfd8d9a-6b29-4929-b5e7-f8899be624c7","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID0ca5302c-48aa-4097-912f-266ed6f51e05","label":"Description provides at least one Language","parent":{"ref":"EID1f602fae-4534-4d14-9b57-46dcb2702372"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Language\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionLanguage\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd","label":"Get Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if all \"Get Spatial Dataset\" operation responses have the same content-type as the media-type in the OpenSearch Description.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 43:The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Get Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'crs', 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value\ncorresponding to the media type of the result and an attribute 'rel' with the\nvalue 'results'. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-one-url-get-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description one URL Get Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDc839657a-0d7c-49d9-8665-ee32690350db","label":"HTTP status code 200 is returned","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2a9be6d6-6a7f-450c-b06b-04f9947d5ede","label":"30 seconds timeout","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID89094358-9df9-46f9-b3ee-11735bd3eaf8","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID56bcbfd7-4d1e-40c9-a718-12f1b5f7e77f","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID74afa0d4-5f0e-4a47-b08f-7ca403dd85e3","label":"At least one Language provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID793e1bf6-1c47-4819-b552-1be93e488ee8","label":"At least one CRS provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDae479e65-ab3b-4e21-92ec-4acfdfcc8424","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EIDc6f32dae-43d2-4dd7-9c6e-6d252e83886d"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EIDb0803022-623e-456c-aa2e-bc968ee33150","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EIDea92f351-8560-4190-b129-202d1de67410","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID90ac1268-2c6a-46d4-94da-cb1a595847b2","label":"HTTP status code 200 is returned","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID4c8b189c-31ec-4098-8f45-6952a58780c6","label":"30 seconds timeout","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID75f52c4d-7efd-412d-b177-9c7b581e95d3","label":"Response content-type equals media-type from Get Spatial Dataset URL","parent":{"ref":"EIDea92f351-8560-4190-b129-202d1de67410"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\nString mimeType = context.expand('${Transfer_Properties#mimeType}');\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(mimeType)) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", mimeType, \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478","label":"Describe Spatial Dataset operation","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for the Describe Spatial Data Set operation.\n<br />\n<br />\nRelevant Requirements:\n<ul>\n<li>TG Requirement 42: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for the Describe Spatial Data Set operation. This template shall\naccept the INSPIRE parameters 'spatial_dataset_identifier_code',\n'spatial_dataset_identifier_namespace' and the OpenSearch 'language'\nparameter. The 'Url' element shall have an attribute 'type' with a value of\n'application/atom+xml' and an attribute 'rel' with the value 'describedby'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-describe-spatial-dataset-operation\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL Describe Spatial Dataset operation'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96","label":"Get OpenSearch Description","description":"Requests the OpenSearch Description.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd1e8ab33-11a0-45da-b116-4a4c8ffa139c","label":"HTTP status code 200 is returned","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDab501b29-1391-4093-87bf-5a67b23a451b","label":"30 seconds timeout","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDf244d763-7392-49c7-aedc-74703bd8dcca","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID7263d98c-e24b-4f93-96f1-cb420ef57a95","label":"Description provides at least one \"Url\" element that describes a template URL for the Describe Spatial Data Set operation","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='describedby' and @type='application/atom+xml' and starts-with(@template,'http') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDa3d96fc4-8656-44a2-a219-261052291d3f","label":"At least one Language provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @language] or /os:OpenSearchDescription/os:Language\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDd6ecb614-9004-4d11-8e4c-26f2ce1a614f","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID95ff121f-4671-4cdd-b851-ddb3119b7c96"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\",\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9ac761b8-d714-444f-9b15-d3ac4a3dda9b","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='describedby' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Describe Spatial Dataset response equals 'application/atom+xml'.","parent":{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDd77ce483-2a5c-42af-b442-0043e535de70","label":"HTTP status code 200 is returned","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDa1a33924-7e37-4ae9-9d59-24c5bf976d8e","label":"30 seconds timeout","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDfbb9511f-dd9a-4be4-b8ba-d35eb2039432","label":"Response content-type is 'application/atom+xml'","parent":{"ref":"EID1693ebfb-e21b-457b-9fe3-ebee745d2204"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].contains(\"application/atom+xml\")) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"application/atom+xml\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287","label":"Query examples for each dataset","description":"The test case requests the OpenSearch Description document and checks if it provides a Describe Spatial Dataset and Get Spatial Dataset url.\nFor each category CRS from the Describe Spatial Dataset response a Get Spatial Dataset request with the CRS, the provided inspire_dls:spatial_dataset_identifier_code and inspire_dls:spatial_dataset_identifier_namespace is invoked.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 44: For each dataset available the OpenSearch description shall contain a 'Query'\nelement that has a 'role' attribute with the value 'example' and\n'spatial_dataset_identifier_code' and 'spatial_dataset_identifier_namespace'\nattributes together containing unique spatial dataset identifier. The value of the\n'crs' and 'language' attributes shall be set to the values considered as the\ndefault ones by the service provider. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-query-examples-for-each-dataset\" target=\"_blank\">Abstract Test Case 'OpenSearch Description Query examples for each dataset'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":[{"ref":"EID458af16e-a708-4b83-96f2-f13ec03c6bfd"},{"ref":"EID4ab8b4e8-abd9-4c93-9fb4-ca1921cca478"},{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}]},"testSteps":{"TestStep":[{"id":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDcc65b492-6f51-40bd-a1f6-2b4fb6e8919e","label":"HTTP status code 200 is returned","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDcd7b5983-205a-4a5f-8ed9-acfb3adf3baa","label":"30 seconds timeout","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2ab6ede6-3e2a-4f3c-9dfe-8c61dc161e10","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfac69c38-3e71-4586-a376-9504f2c3eb53","label":"Description provides at least one \"Url\" element that describes a template URL for the Get Spatial Data Set operation","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and starts-with(@template,'http') and contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\",\n  \"TR.missingAtLeastOneOpenSearchDescriptionUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDc6baa4d2-7ab0-4861-af59-76cb9955bd99","label":"At least spatial_dataset_identifier_namespace and spatial_dataset_identifier_code provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:spatial_dataset_identifier_namespace and @inspire_dls:spatial_dataset_identifier_code]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDfd3132fa-1ea8-420b-832a-12afda7a537d","label":"At least one CRS provided","parent":{"ref":"EID0794eacb-a4a7-4a43-acc6-1f0dcb958bc8"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Query[@role='example' and @inspire_dls:crs]\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID9858617d-7532-45ec-b33e-dc2ca953dec2","label":"Iterate over Describe Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Get OpenSearch Description\")\n\ndef describeSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"describeSpatialDataSetUrls: \" + describeSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\n// clear url to test\nph.setTransferProperty(\"describeSpatialDataSetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in describeSpatialDataSetUrlTemplates ) {\n\tString describeSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+describeSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(describeSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(describeSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"describeSpatialDataSetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Describe Spatial Dataset\");\n\t\t\t\t\tph.runTestStep(\"Iterate over Get Spatial Dataset URL\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2","label":"Describe Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EIDb4f5a27b-e2d2-40d0-bcfc-c58962e49e58","label":"HTTP status code 200 is returned","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDbc1f86a5-e03a-43de-bb43-124085e61f12","label":"30 seconds timeout","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe3ad2fd7-379c-4d9f-807f-db7975c3b0e6","label":"Root element 'feed' exists","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDdc98fad0-7697-479a-ac12-e9d4fd36242f","label":"Each entry has an element category, including a term and label, to refer to CRSs","parent":{"ref":"EID8dadd33c-6020-4533-827c-f01dbcebf4f2"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.notExists(\n  \"//atom:entry[count(atom:category[string-length(@term)>0 and string-length(@label)>0])<1]\",\n  \"TR.missingCategory\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID4a9036db-eb9c-458c-b8ad-58b3ff5b82a7","label":"Iterate over Get Spatial Dataset URL","description":null,"parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"import de.interactive_instruments.xtf.*;\nSOAPUI_I.init(log,context,testRunner);\nimport de.interactive_instruments.UriUtils;\n\nProjectHelper ph = new ProjectHelper();\ndef xmlHolder = ph.getTestStepResult(\"Describe Spatial Dataset\")\n\ndef getSpatialDataSetUrlTemplates = xmlHolder.getDomNodes(\n\t\"/*:OpenSearchDescription/*:Url[@rel='results' and starts-with(@template,'http') and \"+\n\t\"contains(@template,'crs') and contains(@template,'spatial_dataset_identifier_code') and \"+\n\t\"contains(@template,'spatial_dataset_identifier_namespace') and contains(@template,'language')]\");\nlog.info(\"getSpatialDatasetUrls: \" + getSpatialDataSetUrlTemplates);\n\n\ndef languages = xmlHolder.getNodeValues(\n\t\"distinct-values((/*:OpenSearchDescription/*:Query[@role='example']/@language , /*:OpenSearchDescription/*:Language))\");\nlog.info(\"languages: \" + languages);\n\ndef namespaces = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_namespace\");\nlog.info(\"namespaces: \" + namespaces);\n\ndef codes = xmlHolder.getNodeValues(\n\t\"/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:spatial_dataset_identifier_code\");\nlog.info(\"codes: \" + codes);\n\ndef crss = xmlHolder.getNodeValues(\n\t\"distinct-values(/*:OpenSearchDescription/*:Query[@role='example']/@inspire_dls:crs)\");\nlog.info(\"CRSs: \" + crss);\n\n// clear url to test\nph.setTransferProperty(\"getSpatialDatasetUrl\", \"\")\n\nvoid replaceParameter(parameters, cleanParameters, templateKey, templateValue) {\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(value.contains(\"{\"+templateKey+\"}\") || value.contains(\"{\"+templateKey+\"?}\")) {\n\t\t\tcleanParameters.put(e.key, templateValue);\n\t\t}\n\t}\n}\n\ndef initDefaultParameters(parameters) {\n\tfinal Map<String, String> params = new HashMap<String, List<String>>();\n\tfor ( e in parameters ) {\n\t\tdef value = e.value[0]\n\t\tif(!(value.contains(\"{\") && value.contains(\"}\"))) {\n\t\t\tparams.put(e.key, value);\n\t\t}\n\t}\n\treturn params\n}\n\ndef invokedUrls = [] as HashSet\n\nfor( node in getSpatialDataSetUrlTemplates ) {\n\tString getSpatialDataSetUrlTemplate = node.attributes.getNamedItem(\"template\").getNodeValue()\n\tString mimeType = node.attributes.getNamedItem(\"type\").getNodeValue()\n\n\tlog.info(\"Using template URL: \"+getSpatialDataSetUrlTemplate);\n\tdef parameters = UriUtils.getQueryParameters(getSpatialDataSetUrlTemplate, false)\n\tfinal Map<String, String> cleanParameters = initDefaultParameters(parameters)\n\tfinal String endpoint = UriUtils.withoutQueryParameters(getSpatialDataSetUrlTemplate)\n\n\tfor(int j=0; j<codes.size(); j++) {\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_code\", codes[j] )\n\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:spatial_dataset_identifier_namespace\", namespaces[j] )\n\n\t\tfor(crs in crss) {\n\t\t\treplaceParameter(parameters, cleanParameters, \"inspire_dls:crs\", crs )\n\n\t\t\tfor(language in languages) {\n\t\t\t\treplaceParameter(parameters, cleanParameters, \"language\", language )\n\t\t\t\tfinal String url = UriUtils.withQueryParameters(endpoint, cleanParameters)\n\t\t\t\tif(!invokedUrls.contains(url)) {\n\t\t\t\t\tlog.info(\"Using URL: \"+url)\n\t\t\t\t\tph.setTransferProperty(\"getSpatialDatasetUrl\", url)\n\t\t\t\t\tph.setTransferProperty(\"mimeType\", mimeType)\n\t\t\t\t\tph.runTestStep(\"Get Spatial Dataset\");\n\t\t\t\t\tinvokedUrls.add(url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/90bdc939-bd42-41a0-9ef8-19e0ec04f89d.json"}},{"id":"EID3e55838a-6ac8-422c-84f3-a958d9956095","label":"Get Spatial Dataset","description":"Checks if the content-type of the Get Spatial Dataset response equals the media-type from the Open Search Description document","parent":{"ref":"EID34cb9ce5-899c-4f79-bfea-80166b6f6287"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID48c19232-171e-4726-80d5-e8e18c7ac347","label":"HTTP status code 200,206,301,302 or 303 is returned","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"exist","expression":"200,206,301,302,303","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID8bb0253c-0901-4714-babe-8175b5e71aa5","label":"30 seconds timeout","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID71d855f0-318b-4449-87cf-5841eb9f68e2","label":"Root element 'feed' exists","parent":{"ref":"EID3e55838a-6ac8-422c-84f3-a958d9956095"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/atom:feed\", \"TR.missingFeedRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}},{"id":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a","label":"URI to itself","description":"The test case requests the OpenSearch Description document and checks if it provides a self URL.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 40: The OpenSearch description shall contain a 'Url' element that describes an\nHTTP URI for the OpenSearch Description document. The value of the 'rel'\nattribute of this element shall be 'self', the value of the 'type' attribute shall be\n'application/opensearchdescription+xml' and the value of the 'template'\nattribute shall be the HTTP URI of the document. </li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-uri-to-itself\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URI to itself'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":{"id":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID6b2a0d87-fca5-4e6d-ac49-3c338d08e10a"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID07baa915-7c6b-4fad-b1bf-ef03d306dc85","label":"HTTP status code 200 is returned","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDde93e839-9029-4c1b-a47b-950437792241","label":"30 seconds timeout","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID2efd175c-e24e-4924-9bdd-13237591a99f","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EIDb0365336-42e6-48a6-84f1-e0ea2ef34168","label":"Self reference equals URL of requested resource","parent":{"ref":"EID604e5275-94c1-4ee9-81a0-6dd5a9309d06"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nimport de.interactive_instruments.xtf.*\nSOAPUI_I.init(log, context, messageExchange)\nfinal ProjectHelper ph = new ProjectHelper()\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.equals(\n  \"/os:OpenSearchDescription/os:Url[@rel='self' and @type='application/opensearchdescription+xml']/@template\",\n  \"/os:OpenSearchDescription/os:Url\",\n  messageExchange.getEndpoint(),\n  \"TR.incorrectFeedSelfReference\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}}},{"id":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8","label":"Generic search queries URL","description":"The test case requests the OpenSearch Description document and checks if it provides an \"Url\" element that describes a template URL for generic search queries.\nThe resource at the URL is retrieved and checked if it returns HTML content.\n<br/>\n<br/>\nRelevant Requirements:\n<ul>\n<li>TG Requirement 41: The OpenSearch description shall contain a 'Url' element that describes a\ntemplate URL for generic search queries. The value of the 'rel' attribute of this\nelement shall be 'results', the value of the 'type' attribute shall be 'text/html'.</li>\n</ul>\n<br/>\n<br/>\nSource: <a href=\"http://inspire.ec.europa.eu/id/ats/download-service/master/atom-pre-defined/opensearch-description-url-generic-search-queries\" target=\"_blank\">Abstract Test Case 'OpenSearch Description URL generic search queries'</a>","parent":{"ref":"EIDc4154735-aa8a-40cb-9bbf-fba0ef78c7e2"},"dependencies":{"testCase":{"ref":"EID6359d6da-1e37-423f-b543-018979b665e2"}},"testSteps":{"TestStep":[{"id":"EIDd7849eeb-9029-4354-96fa-e3029f94c431","label":"Get OpenSearch Description","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID8cb55602-5705-4d92-8d35-08732f19ae81","label":"HTTP status code 200 is returned","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID16c6d755-39bc-4f78-8ece-4799d2d67acc","label":"30 seconds timeout","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID5431e387-2cf1-46c2-bc0f-5f62496cda67","label":"Root element 'OpenSearchDescription' exists","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nAssert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\na.exists(\"/os:OpenSearchDescription\", \"TR.missingOpenSearchDescriptionRootElement\");","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}},{"id":"EID6135b42e-8137-40d5-902b-5ff839d143e2","label":"Description provides a template URL for generic search queries","parent":{"ref":"EIDd7849eeb-9029-4354-96fa-e3029f94c431"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.*\nfinal Assert a = new Assert(messageExchange, context, log, Assert.INSPIRE_DS_NS);\n\na.exists(\n  \"/os:OpenSearchDescription/os:Url[@rel='results' and @type='text/html']/@template\",\n  \"TR.missingGenericSearchQueriesUrl\"\n);","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}},{"id":"EID57097ab3-b698-4767-886b-45496e3bd4b6","label":"Get resource at generic search quries URL","description":"Requests the Service Feed and checks if the dataset feed links are correct.","parent":{"ref":"EID7369a02b-be8b-40fb-ae98-d16f93be2fa8"},"statementForExecution":"NOT_APPLICABLE","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/6b16aa44-bdc7-4120-a790-4b74fc9ace62.json"},"testAssertions":{"TestAssertion":[{"id":"EID69821145-bef3-41af-adfe-226eaf86cd9a","label":"HTTP status code 200 is returned","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"exist","expression":200,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EID9dca43cb-4a8a-4789-ae48-450166a6ce0b","label":"30 seconds timeout","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":30000,"testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/e7e29c93-4c50-41c2-82d1-0f2db6a1abf6.json"}},{"id":"EIDe182dea2-63b0-4dff-94fb-c815e45da6f6","label":"Content-Type is HTML","parent":{"ref":"EID57097ab3-b698-4767-886b-45496e3bd4b6"},"expectedResult":"NOT_APPLICABLE","expression":"import de.interactive_instruments.etf.suim.TranslatableAssertionError;\n\nif(messageExchange.responseHeaders[\"Content-Type\"]==null) {\n\tthrow new TranslatableAssertionError(\"TR.missingContentType\");\n}\n\nif(!messageExchange.responseHeaders['Content-Type'][0].startsWith('text/html')) {\n\tthrow new TranslatableAssertionError(\"TR.unexpectedContentType\", \"expected\", \"text/html\", \"actual\", messageExchange.responseHeaders['Content-Type'][0]);\n}","testItemType":{"href":"https://inspire.ec.europa.eu/validator//v2/TestItemTypes/fad9282c-1f1f-492b-b6ab-248430154310.json"}}]}}]}}]}}]}}},"testObjects":{"TestObject":{"id":"EID7870daaa-7e9e-4300-832e-c9e5f9d1f9ca","remoteResource":"https://geodata.nationaalgeoregister.nl/atom/index.xml","label":"index.xml","description":"Web Test Object","version":"1.0.0","author":"unknown","creationDate":"2020-10-27T13:18:01.161Z","lastEditor":"unknown","lastUpdateDate":"2020-10-27T13:18:02.693Z","disabled":false,"testObjectTypes":{"testObjectType":{"ref":"EID49d881ae-b115-4b91-aabe-31d5791bce52"}},"ResourceCollection":{"resource":{"name":"serviceEndpoint","href":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}},"Properties":{"property":[{"name":"temporary","$":true},{"name":"data.downloadable","$":false}]}}},"testObjectTypes":{"TestObjectType":{"id":"EID49d881ae-b115-4b91-aabe-31d5791bce52","label":"Atom feed","description":"A feed implementing the Atom Syndication Format that can be accessed using HTTP(S).","parent":{"href":"https://inspire.ec.europa.eu/validator//v2/TestObjectTypes/88311f83-818c-46ed-8a9a-cec4f3707365.json"}}},"translationTemplateBundles":{"TranslationTemplateBundle":{"id":"EIDfadd4929-fa60-4781-b658-703bbfe3f4eb","source":"file:/etf/projects/inspire-ets-repository/ets-repository-2020.3/include-metadata/TranslationTemplateBundle-EIDfadd4929-fa60-4781-b658-703bbfe3f4eb.xml","translationTemplateCollections":{"LangTranslationTemplateCollection":[{"name":"TR.operationsMetadataConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.operationsMetadataConformanceClassNotSupported","$":"The ows:OperationsMetadata do not advertize the required conformance class {element}"}}},{"name":"TR.feedIdDoesNotReferToEndpoint","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.feedIdDoesNotReferToEndpoint","$":"The Atom feed id '{actual}' element does NOT refer to the self URL '{expected}'."}}},{"name":"TR.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.xmlExpected","$":"Expected a XML response but the service returned unparsable data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.capabilities.extended.inspire.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.invalidValue","$":"INSPIRE {name} must be set to '{value}'. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingContentType","$":"Expected a 'Content-Type' header field to be returned by the server."}}},{"name":"TR.metadata.operatesOn.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingElement","$":"The metadata of the WFS does not contain any coupled resource (srv:operatesOn)"}}},{"name":"TR.missingInfoFeatureAccessService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInfoFeatureAccessService","$":"The INSPIRE keyword infoFeatureAccessService is not advertized in the Capabilities. Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingMdFileIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdFileIdentifier","$":"The fileIdentifier does not exist in the service metadata. Check the Metadata document.'"}}},{"name":"TR.notAnInspireMediaType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnInspireMediaType","$":"The alternate links '{links}' for entries with IDs {ids} offer media types '{types}' that are not in the INSPIRE media type list at http://inspire.ec.europa.eu/media-types/ ."}}},{"name":"TR.preCondition.testStep.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.unexpectedException","$":"The required response of the test step '{testStepName}' can not be used for this test, due to an exception report has been returned."}}},{"name":"TR.capabilities.noFeatureTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noFeatureTypes","$":"No FeatureType found in the Capabilities. Check the Capabilities and configure the service to list at least one FeatureType."}}},{"name":"TR.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noOutputFormats","$":"No Output Formats were found in the Capabilities."}}},{"name":"TR.schemaNotAccessible","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAccessible","$":"The xsi:schemaLocation ' {url} ' can not be accessed, server returned HTTP response code {code}."}}},{"name":"TR.missingWfsMetadataUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingWfsMetadataUrl","$":"List of FeatureTypes, that do not possess the required MetadataURL element: {name}."}}},{"name":"TR.invalidApplicationSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema","$":"An error occurred while analyzing the application schema: ' {message} '."}}},{"name":"TR.notIsoMetadata","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notIsoMetadata","$":"The referred dataset Metadata document does not seem to be ISO Metadata. It does not have an XML element gmd:Metadata. Check the MetadataURL listed in the Capabilities and the Metadata document."}}},{"name":"TR.idNotAnURI","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.idNotAnURI","$":"The Feed ID (/atom:feed/atom:id) is not a HTTP URI."}}},{"name":"TR.manual.checkLengthOfDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLengthOfDlFile","$":"Not all linked pre-defined dataset files provide a 'length' attribute. Check if it can be provided."}}},{"name":"TR.missingLinkToRegistry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToRegistry","$":"Missing at least one link to a registry (a /atom:feed/atom:link element with attributes rel='describedby' and type='text/html')."}}},{"name":"TR.metadata.operatesOn.missingHref","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.metadata.operatesOn.missingHref","$":"There is at least one element srv:operatesOn in the metadata of the WFS that does not refer to a metadata document as the xlink:href attribute does not exist or is empty. Check the Metadata document.\""}}},{"name":"TR.missingSchemaRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaRootElement","$":"There response does not have a XML 'schema' root element."}}},{"name":"TR.manual.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.missingInspireStoredQuery","$":"Check manually that the provided StoredQuery is sufficiently described with the included parameters."}}},{"name":"TR.manual.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet' should be used for serving pre-defined Spatial Data Sets."}}},{"name":"TR.elementsNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementsNotExpected","$":"'{elements}' were not expected in the response. XPath: {xpath}"}}},{"name":"TR.missingCapabilitiesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCapabilitiesRootElement","$":"The response does not have a 'WFS_Capabilities' root element."}}},{"name":"TR.filterConformanceClassNotSupported","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.filterConformanceClassNotSupported","$":"The fes:Filter_Capabilities do not advertize the required Filter Encoding 2.0 conformance class {element}"}}},{"name":"TR.incorrectFeedSelfReference","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReference","$":"The Atom feed does NOT contain a link to itself that equals the URL of the requested resource. Check the element /atom:feed/atom:link with @rel='self' and the the request URL."}}},{"name":"TR.missingLinkageResourceLocator","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkageResourceLocator","$":"The referred Metadata Record does have a Resource Locator (gml:linkage element). Check the response."}}},{"name":"TR.missingFeatureCollectionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeatureCollectionRootElement","$":"The response does not have a WFS 'FeatureCollection' root element."}}},{"name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ft.missingOwsWgs84BoundingBox","$":"List of FeatureTypes, that do not possess the required WGS84BoundingBox element: {name}."}}},{"name":"TR.missingSpatialDataSetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDataSetIdentifierNamespace","$":"The absent inspire_dls:SpatialDataSetIdentifier/inspire_common:Namespace element is declared optional in the schema, however it is a mandatory element in the ExtendedCapabilities."}}},{"name":"TR.internalError","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.internalError","$":"Internal error in the Executable Test Suite. Please contact a system administrator. Error information: {text}"}}},{"name":"TR.unexpectedContentType","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedContentType","$":"Expected '{expected}' as Content-Type header but server returned '{actual}'"}}},{"name":"TR.recommendation.GetSpatialDataSetIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.recommendation.GetSpatialDataSetIdentifier","$":"The recommended identifier 'http://inspire.ec.europa.eu/operation/download/GetSpatialDataSet', which should be used for serving pre-defined Spatial Data Sets, was not found."}}},{"name":"TR.missingSpatialDatasetIdentifierNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierNamespace","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_namespace element."}}},{"name":"TR.unexpectedException","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedException","$":"The service returned an unexpected exception: '{text}'. Check the request parameters, which are partially determined from the Capabilities, previous requests or other metadata. Ensure that the service supports the data and functionalities published in the Capabilities and ensure that referenced data exist."}}},{"name":"TR.incorrectFeedSelfReferenceLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLanguage","$":"The Atom feed does NOT contain a link to itself with a 'hreflang' attribute that either equals the xml:lang attribute ('/atom:feed/atom:title/@xml:lang') or the OpenSearchDescription language code ('/os:OpenSearchDescription/os:Language[1]')."}}},{"name":"TR.preCondition.testStep.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.missingElement","$":"The test compares data from this response with data from another test step, however the node '{element}' could not be found or has an empty value in test step '{testStepName}'."}}},{"name":"TR.missingOneFeedEntryWithDlFile","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOneFeedEntryWithDlFile","$":"Missing at least one feed entry with at least one link to a pre-defined dataset file."}}},{"name":"TR.initializationAndBasicChecksFailed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.initializationAndBasicChecksFailed","$":"The testing of basic functionalities of the service failed and therefore all other test cases are skipped. Check all failed Test Cases in the 'Initialization and basic checks' module and ensure that the endpoints for GetCapabilities, GetFeature and DescribeFeatureType operations are accessible from outside your organization."}}},{"name":"TR.elementWithValueNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementWithValueNotExpected","$":"A node '{elementName}' with the value '{value}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.responseNotEqual","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.responseNotEqual","$":"The Response from this Test Step '{testStep}' and the Response from the Test Step are not equal."}}},{"name":"TR.invalidXmlProlog","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidXmlProlog","$":"Expected a XML response but the service returned unparsable data with illegal characters before the XML prolog. This is an excerpt of the XML prolog, showing the first 6 characters (invalid characters may have either been hidden by the browser or are replaced with '?'): '{prolog}'. Please note that some tools, such as some browsers, do not show all special characters or report an error!"}}},{"name":"TR.preCondition.testStep.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.noDataReturned","$":"The required response of the test step '{testStepName}' can not be used for this test, due to no data has been returned."}}},{"name":"TR.unexpectedCRS","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedCRS","$":"Expected a response in Coordinate Reference System '{expected}' but a response in CRS '{value}' was returned by the service."}}},{"name":"TR.uniqueAlternateLinkTypes","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueAlternateLinkTypes","$":"The Dataset Feed does not contain separate entries for each format and CRS combination. Check if either the links belong in one single Dataset feed entry or in another/new separate Dataset Feed. {count} duplicate entries found: {duplicates}"}}},{"name":"TR.missingElementWithValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElementWithValue","$":"Expected a node '{element}' set to '{value}' but it was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSpatialDatasetIdentifierCode","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSpatialDatasetIdentifierCode","$":"There is at least one Feed entry without an inspire_dls:spatial_dataset_identifier_code element."}}},{"name":"TR.emptyValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.emptyValue","$":"Expected a non-empty text value for '{element}'. XPath: {xpath}"}}},{"name":"TR.capabilities.noOutputFormats","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.noOutputFormats","$":"No OutputFormat found in the Capabilities. Check the Capabilities and configure the service to list at least one OutputFormat."}}},{"name":"TR.missingInspireStoredQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingInspireStoredQuery","$":"DescribeStoredQueries response does not contain at least one StoredQuery with the parameters 'CRS', 'DataSetID' , 'DataSetIdNamespace', 'Language', to download the entire INSPIRE dataset."}}},{"name":"TR.missingGenericSearchQueriesUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGenericSearchQueriesUrl","$":"The Open Search Description does not provide a URL for generic search queries."}}},{"name":"TR.capabilities.extended.inspire.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.extended.inspire.missingElement","$":"INSPIRE element '{element}' is  missing in the Capabilities. XPath: {xpath} . Check the INSPIRE ExtendedCapabilities."}}},{"name":"TR.missingFeedRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedRootElement","$":"There response does not have an Atom 'feed' root element."}}},{"name":"TR.missingLinkToMetadataRecordForDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToMetadataRecordForDownloadService","$":"Missing a link to the metadata record for the download service link with attributes rel='describedby' and type='application/xml' or type='application/vnd.ogc.csw.GetRecordByIdResponse_xml'."}}},{"name":"TR.invalidDatasetFeedLinks","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidDatasetFeedLinks","$":"There is at least one feed entry that does not contain exactly one Dataset feed link with attributes rel='alternate' and type='application/atom+xml'."}}},{"name":"TR.exactlyOneCategoryPerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneCategoryPerEntry","$":"A Dataset Feed shall possess exactly one category per entry. There are {actual} Dataset Feed entries, which possess more than one category. Remove all additional categories."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionLanguage","$":"The response does not have at least one Open Search Description Language."}}},{"name":"TR.multipleLinksForMultipleFilesExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.multipleLinksForMultipleFilesExpected","$":"If links with a rel attribute of \"section\" are provided, then there must be multiple links. So the number of section links must not be exactly 1."}}},{"name":"TR.invalidLegendFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidLegendFormat","$":"Legend format is invalid. Please, review your code and try again."}}},{"name":"TR.unexpectedHtml","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.unexpectedHtml","$":"Expected a XML response but the service returned a HTML page. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication and returned an authentication page, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missinAtLeasOneOpenSearchDescriptionQuery","$":"Missing at least one INSPIRE example Query ( with a role='example', an inspire_dls:spatial_dataset_identifier_code and an inspire_dls:spatial_dataset_identifier_namespace attribute)."}}},{"name":"TR.schemaNotAnUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.schemaNotAnUrl","$":"The xsi:schemaLocation ' {url} ' is not an HTTP URL."}}},{"name":"TR.invalidApplicationSchema.outputFormat","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidApplicationSchema.outputFormat","$":"An error occurred while analyzing the application schema (OutputFormat ' {format} ') : ' {message} '."}}},{"name":"TR.invalidValue","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.invalidValue","$":"Expected the value '{expected}' instead of '{actual}' in {element}. XPath: {xpath}"}}},{"name":"TR.capabilities.ows.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.ows.missingElement","$":"{element} is not set in the Capabilities. Check the Capabilities for the OWS element."}}},{"name":"TR.exactlyOneAlternateLinkTypePerEntry","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.exactlyOneAlternateLinkTypePerEntry","$":"In a Dataset Feed an entry can possess multiple alternate links but these shall be of the same type. There are {actual} Dataset Feed entries, which alternate links with multiple types. Check if the alternate links belong to another/new Dataset Feed entry."}}},{"name":"TR.missingCategory","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingCategory","$":"At least one category for an entry is missing which refers to CRS definition and code."}}},{"name":"TR.dateIsInTheFuture","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsInTheFuture","$":"The date must not be in the future."}}},{"name":"TR.elementNotExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.elementNotExpected","$":"'{element}' was NOT expected in the response. XPath: {xpath}"}}},{"name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.openSearchDescriptionDocumentLinkNotAbsolute","$":"The OpenSearch Description document link is not an absolute URL."}}},{"name":"TR.missingOpenSearchDescriptionRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionRootElement","$":"The response does not have an Open Search 'OpenSearchDescription' root element."}}},{"name":"TR.preCondition.testStep.xmlExpected","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.preCondition.testStep.xmlExpected","$":"The required response of the test step '{testStepName}' can not be used for this test, due to not well-formed XML has been returned."}}},{"name":"TR.capabilities.featureTypeUnknownNamespace","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.capabilities.featureTypeUnknownNamespace","$":"The namespace prefix of FeatureType {value} can not be resolved. Check the namespaces and prefixes in the Capabilities."}}},{"name":"TR.missingOpenSearchDescriptionDocumentLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingOpenSearchDescriptionDocumentLink","$":"The Atom feed does NOT contain a link to an OpenSearch Description document."}}},{"name":"TR.incorrectFeedSelfReferenceLang","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.incorrectFeedSelfReferenceLang","$":"The self link's hreflang attribute is not the same as the xml:lang attribute of the Atom feed or if the xml:lang attribute is not given, hreflang is not the same as the language code defined in the OpenSearch description."}}},{"name":"TR.missingLanguageForDownloadLink","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLanguageForDownloadLink","$":"Not all alternative language representations of datasets have the required hreflang attribute."}}},{"name":"TR.dateIsBefore2012","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.dateIsBefore2012","$":"The date must not be before 2012."}}},{"name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingAtLeastOneOpenSearchDescriptionUrl","$":"The response does not have at least one Open Search Description URL."}}},{"name":"TR.fallbackInfo","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.fallbackInfo","$":"The server experienced a several unexpected error. Please, try again later. if the problem persist, please contact with the helpdesk."}}},{"name":"TR.missingFeedUpdatedInformation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingFeedUpdatedInformation","$":"The Atom feed does NOT contain updated information."}}},{"name":"TR.missingStoredQueriesRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingStoredQueriesRootElement","$":"The response does not have a 'DescribeStoredQueriesResponse' root element."}}},{"name":"TR.atLeastOneCategoryNotInServiceFeed","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.atLeastOneCategoryNotInServiceFeed","$":"At least one Category in the Dataset feed is not listed in the Download Service Feed."}}},{"name":"TR.uniqueDatasetIdentifiers","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.uniqueDatasetIdentifiers","$":"The Dataset Feed does not contain unique identifier combinations (inspire_dls:spatial_dataset_identifier_namespace and inspire_dls:code)."}}},{"name":"TR.manual.checkLinkToDirectAccessDownloadService","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.manual.checkLinkToDirectAccessDownloadService","$":"If the same dataset is available as a WFS 2.0.0 Direct Access Download Service: check that the download service feed includes a link to the WFS Capabilities document with the \"rel\" attribute set to \"related\" and the \"type\" attribute set to \"application/xml\"."}}},{"name":"TR.noDataReturned","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.noDataReturned","$":"Expected a response but the service did not return any data. Verify that the used endpoint URL is correct and accessible from outside your organization. If the service requires authentication, then check that the correct credentials are used by the validator or verify that upstream firewalls/proxy servers do not prevent access."}}},{"name":"TR.notAnHttpUrl","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.notAnHttpUrl","$":"' {url} ' is not an HTTP URL."}}},{"name":"TR.missingElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingElement","$":"The expected node '{element}' was not found in the response. XPath: {xpath}"}}},{"name":"TR.missingSchemaLocation","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingSchemaLocation","$":"The schema attribute 'xsi:schemaLocation' was not found in the XML root element of the response. The response cannot be validated."}}},{"name":"TR.missingGuidanceForDownloadingMultipleFiles","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingGuidanceForDownloadingMultipleFiles","$":"Where a dataset is provided in multiple physical files: a description of the dataset structure must be provided EITHER in an atom \"content\" element as free text, OR in an external document which is the target of another \"link\" element. Where a \"link\" element is used this element shall have a \"rel\" value equal to \"alternate\" and a suitable media type shall be used for the \"type\" value."}}},{"name":"TR.missingLinkToDatasetMetadataRecord","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingLinkToDatasetMetadataRecord","$":"Missing at least one link in an entry to a Dataset metadata record link with attributes rel='describedby' and type='application/xml'."}}},{"name":"TR.missingDownloadServiceSchema","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingDownloadServiceSchema","$":"The Capabilities do not contain a xsi:schemaLocation with the INSPIRE Download Services schema 'http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd' or at least a schema path ending with 'inspire_dls.xsd. Check the Capabilities document."}}},{"name":"TR.missingMdIdentifier","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMdIdentifier","$":"The MD_identifier '{id}' is found in the metadata document but does not exist in the service Metadata. The service metadata refers to these identifiers: '{datasetIdentifiersList}'. Check the Service Metadata and the Metadata document."}}},{"name":"TR.missingMDMetadataRootElement","translationTemplates":{"TranslationTemplate":{"language":"en","name":"TR.missingMDMetadataRootElement","$":"The referred Metadata Record does not seem to be ISO Metadata. It does not have an XML gmd:MD_Metadata root element. Check the response."}}}]}}},"testTaskResults":null}}}
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:18:06.778 [print] EIDffbc53f7-bba6-40e1-bc83-0d655ebae805
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:18:06.779 [print] UNDEFINED
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
13:18:06.779 [print] Conformance Class Download Service - Pre-defined Atom
* print response.EtfItemCollection.ref 0.000
13:18:06.779 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/ffbc53f7-bba6-40e1-bc83-0d655ebae805.json
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
13:18:06.779 [print] https://inspire.ec.europa.eu/validator//v2/TestRuns/EIDffbc53f7-bba6-40e1-bc83-0d655ebae805/log
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
13:18:06.779 [print] statuspath TestRuns/EIDffbc53f7-bba6-40e1-bc83-0d655ebae805
* print 'progresspath ', progresspath 0.000
13:18:06.780 [print] progresspath  TestRuns/EIDffbc53f7-bba6-40e1-bc83-0d655ebae805/progress
Given path progresspath 0.000
When method GET 0.537
13:18:06.786 request:
2 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDffbc53f7-bba6-40e1-bc83-0d655ebae805/progress
2 > Accept-Encoding: gzip,deflate
2 > Connection: Keep-Alive
2 > Host: inspire.ec.europa.eu
2 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:07.318 response time in milliseconds: 531.19
2 < 200
2 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
2 < Connection: Keep-Alive
2 < Content-Type: application/json;charset=UTF-8
2 < Date: Tue, 27 Oct 2020 13:18:07 GMT
2 < Keep-Alive: timeout=3, max=100
2 < Server: nginx/1.16.1
2 < Vary: Origin
2 < X-Frame-Options: SAMEORIGIN
2 < X-XSS-Protection: 1; mode=block
{"val":"16","max":"17","log":["27.10.2020 13:18:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:03 UTC 2020)","27.10.2020 13:18:03 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:03 - Preparing 1 Test Task:","27.10.2020 13:18:03 -  TestTask 1 (37019408-86ca-43d8-b22a-a3df2bc50207)","27.10.2020 13:18:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:03 -  with parameters: ","27.10.2020 13:18:03 - etf.testcases = *","27.10.2020 13:18:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:03 - Setting state to CREATED","27.10.2020 13:18:03 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:03 - Starting TestRun.ffbc53f7-bba6-40e1-bc83-0d655ebae805 at 2020-10-27T13:18:05Z","27.10.2020 13:18:05 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:05 - Project Properties: ","27.10.2020 13:18:05 - etf.testcases - * ","27.10.2020 13:18:05 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:18:05 - username -  ","27.10.2020 13:18:05 - authUser -  ","27.10.2020 13:18:05 - authMethod - basic ","27.10.2020 13:18:05 - TestRunTask initialized"]}
And retry until response.val == response.max 0.000
* print response 0.000
13:18:07.318 [print] {
  "val": "16",
  "max": "17",
  "log": [
    "27.10.2020 13:18:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:03 UTC 2020)",
    "27.10.2020 13:18:03 - Resolving Executable Test Suite dependencies",
    "27.10.2020 13:18:03 - Preparing 1 Test Task:",
    "27.10.2020 13:18:03 -  TestTask 1 (37019408-86ca-43d8-b22a-a3df2bc50207)",
    "27.10.2020 13:18:03 -  will perform tests on Test Object 'index.xml' by using Executable Test Suite 'Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )'",
    "27.10.2020 13:18:03 -  with parameters: ",
    "27.10.2020 13:18:03 - etf.testcases = *",
    "27.10.2020 13:18:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.",
    "27.10.2020 13:18:03 - Setting state to CREATED",
    "27.10.2020 13:18:03 - Changed state from CREATED to INITIALIZING",
    "27.10.2020 13:18:03 - Starting TestRun.ffbc53f7-bba6-40e1-bc83-0d655ebae805 at 2020-10-27T13:18:05Z",
    "27.10.2020 13:18:05 - Changed state from INITIALIZING to INITIALIZED",
    "27.10.2020 13:18:05 - Project Properties: ",
    "27.10.2020 13:18:05 - etf.testcases - * ",
    "27.10.2020 13:18:05 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ",
    "27.10.2020 13:18:05 - username -  ",
    "27.10.2020 13:18:05 - authUser -  ",
    "27.10.2020 13:18:05 - authMethod - basic ",
    "27.10.2020 13:18:05 - TestRunTask initialized"
  ]
}
Given path progresspath 0.000
When method GET 18.701
13:18:07.321 request:
3 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDffbc53f7-bba6-40e1-bc83-0d655ebae805/progress
3 > Accept-Encoding: gzip,deflate
3 > Connection: Keep-Alive
3 > Host: inspire.ec.europa.eu
3 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:07.838 response time in milliseconds: 516.53
3 < 200
3 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
3 < Connection: Keep-Alive
3 < Content-Type: application/json;charset=UTF-8
3 < Date: Tue, 27 Oct 2020 13:18:07 GMT
3 < Keep-Alive: timeout=3, max=100
3 < Server: nginx/1.16.1
3 < Vary: Origin
3 < X-Frame-Options: SAMEORIGIN
3 < X-XSS-Protection: 1; mode=block
{"val":"21","max":"22","log":["27.10.2020 13:18:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:03 UTC 2020)","27.10.2020 13:18:03 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:03 - Preparing 1 Test Task:","27.10.2020 13:18:03 -  TestTask 1 (37019408-86ca-43d8-b22a-a3df2bc50207)","27.10.2020 13:18:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:03 -  with parameters: ","27.10.2020 13:18:03 - etf.testcases = *","27.10.2020 13:18:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:03 - Setting state to CREATED","27.10.2020 13:18:03 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:03 - Starting TestRun.ffbc53f7-bba6-40e1-bc83-0d655ebae805 at 2020-10-27T13:18:05Z","27.10.2020 13:18:05 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:05 - Project Properties: ","27.10.2020 13:18:05 - etf.testcases - * ","27.10.2020 13:18:05 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:18:05 - username -  ","27.10.2020 13:18:05 - authUser -  ","27.10.2020 13:18:05 - authMethod - basic ","27.10.2020 13:18:05 - TestRunTask initialized"]}

13:18:07.838 retry condition not satisfied: response.val == response.max
13:18:07.838 sleeping before retry #1
13:18:12.839 request:
4 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDffbc53f7-bba6-40e1-bc83-0d655ebae805/progress
4 > Accept-Encoding: gzip,deflate
4 > Connection: Keep-Alive
4 > Host: inspire.ec.europa.eu
4 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:13.360 response time in milliseconds: 520.29
4 < 200
4 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
4 < Connection: Keep-Alive
4 < Content-Type: application/json;charset=UTF-8
4 < Date: Tue, 27 Oct 2020 13:18:13 GMT
4 < Keep-Alive: timeout=3, max=100
4 < Server: nginx/1.16.1
4 < Vary: Origin
4 < X-Frame-Options: SAMEORIGIN
4 < X-XSS-Protection: 1; mode=block
{"val":"73","max":"74","log":["27.10.2020 13:18:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:03 UTC 2020)","27.10.2020 13:18:03 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:03 - Preparing 1 Test Task:","27.10.2020 13:18:03 -  TestTask 1 (37019408-86ca-43d8-b22a-a3df2bc50207)","27.10.2020 13:18:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:03 -  with parameters: ","27.10.2020 13:18:03 - etf.testcases = *","27.10.2020 13:18:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:03 - Setting state to CREATED","27.10.2020 13:18:03 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:03 - Starting TestRun.ffbc53f7-bba6-40e1-bc83-0d655ebae805 at 2020-10-27T13:18:05Z","27.10.2020 13:18:05 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:05 - Project Properties: ","27.10.2020 13:18:05 - etf.testcases - * ","27.10.2020 13:18:05 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:18:05 - username -  ","27.10.2020 13:18:05 - authUser -  ","27.10.2020 13:18:05 - authMethod - basic ","27.10.2020 13:18:05 - TestRunTask initialized","27.10.2020 13:18:09 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:18:09 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:18:11 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027"]}

13:18:13.363 retry condition not satisfied: response.val == response.max
13:18:13.363 sleeping before retry #2
13:18:18.364 request:
5 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDffbc53f7-bba6-40e1-bc83-0d655ebae805/progress
5 > Accept-Encoding: gzip,deflate
5 > Connection: Keep-Alive
5 > Host: inspire.ec.europa.eu
5 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:18.964 response time in milliseconds: 599.08
5 < 200
5 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
5 < Connection: Keep-Alive
5 < Content-Type: application/json;charset=UTF-8
5 < Date: Tue, 27 Oct 2020 13:18:18 GMT
5 < Keep-Alive: timeout=3, max=100
5 < Server: nginx/1.16.1
5 < Vary: Origin
5 < X-Frame-Options: SAMEORIGIN
5 < X-XSS-Protection: 1; mode=block
{"val":"148","max":"149","log":["27.10.2020 13:18:03 - Preparing Test Run Conformance Class Download Service - Pre-defined Atom (initiated Tue Oct 27 13:18:03 UTC 2020)","27.10.2020 13:18:03 - Resolving Executable Test Suite dependencies","27.10.2020 13:18:03 - Preparing 1 Test Task:","27.10.2020 13:18:03 -  TestTask 1 (37019408-86ca-43d8-b22a-a3df2bc50207)","27.10.2020 13:18:03 -  will perform tests on Test Object \u0027index.xml\u0027 by using Executable Test Suite \u0027Conformance Class: Download Service - Pre-defined Atom (EID: 11571c92-3940-4f42-a6cd-5e2b1c6f4d93, V: 1.0.5 )\u0027","27.10.2020 13:18:03 -  with parameters: ","27.10.2020 13:18:03 - etf.testcases = *","27.10.2020 13:18:03 - Test Tasks prepared and ready to be executed. Waiting for the scheduler to start.","27.10.2020 13:18:03 - Setting state to CREATED","27.10.2020 13:18:03 - Changed state from CREATED to INITIALIZING","27.10.2020 13:18:03 - Starting TestRun.ffbc53f7-bba6-40e1-bc83-0d655ebae805 at 2020-10-27T13:18:05Z","27.10.2020 13:18:05 - Changed state from INITIALIZING to INITIALIZED","27.10.2020 13:18:05 - Project Properties: ","27.10.2020 13:18:05 - etf.testcases - * ","27.10.2020 13:18:05 - serviceEndpoint - https://geodata.nationaalgeoregister.nl/atom/index.xml ","27.10.2020 13:18:05 - username -  ","27.10.2020 13:18:05 - authUser -  ","27.10.2020 13:18:05 - authMethod - basic ","27.10.2020 13:18:05 - TestRunTask initialized","27.10.2020 13:18:09 ERROR Response status code:500 is not in acceptable list of status codes","27.10.2020 13:18:09 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:18:11 ERROR Assertion failed with error \u0027TR.unexpectedHtml\u0027","27.10.2020 13:18:13 ERROR Assertion failed with error \u0027TR.uniqueDatasetIdentifiers\u0027","27.10.2020 13:18:14 ERROR Assertion failed with error \u0027TR.missingLinkToMetadataRecordForDownloadService\u0027","27.10.2020 13:18:14 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:14 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:14 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:14 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:14 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:14 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:14 ERROR Assertion failed with error \u0027TR.missingOneFeedEntryWithDlFile\u0027","27.10.2020 13:18:15 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:15 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:15 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:15 ERROR Assertion failed with error \u0027TR.missingElement\u0027","27.10.2020 13:18:15 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:15 ERROR Assertion failed with error \u0027TR.missingFeedUpdatedInformation\u0027","27.10.2020 13:18:15 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:15 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:15 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:15 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:18:15 ERROR Assertion failed with error \u0027TR.missingLinkToRegistry\u0027","27.10.2020 13:18:16 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:16 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:18:16 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:17 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:17 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027","27.10.2020 13:18:17 ERROR Response status code:404 is not in acceptable list of status codes","27.10.2020 13:18:17 ERROR Assertion failed with error \u0027TR.missingFeedRootElement\u0027"]}

13:18:18.964 retry condition not satisfied: response.val == response.max
13:18:18.966 sleeping before retry #3
13:18:23.967 request:
6 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDffbc53f7-bba6-40e1-bc83-0d655ebae805/progress
6 > Accept-Encoding: gzip,deflate
6 > Connection: Keep-Alive
6 > Host: inspire.ec.europa.eu
6 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:26.019 response time in milliseconds: 2051.16
6 < 200
6 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
6 < Connection: Keep-Alive
6 < Content-Type: application/json;charset=UTF-8
6 < Date: Tue, 27 Oct 2020 13:18:25 GMT
6 < Keep-Alive: timeout=3, max=100
6 < Server: nginx/1.16.1
6 < Vary: Origin
6 < X-Frame-Options: SAMEORIGIN
6 < X-XSS-Protection: 1; mode=block
{"val":"241","max":"241","log":[]}

13:18:26.019 retry condition satisfied
* print response 0.000
13:18:26.019 [print] {
  "val": "241",
  "max": "241",
  "log": [
  ]
}
Given path statuspath 0.000
When method GET 2.772
13:18:26.020 request:
7 > GET https://inspire.ec.europa.eu/validator/v2/TestRuns/EIDffbc53f7-bba6-40e1-bc83-0d655ebae805
7 > Accept-Encoding: gzip,deflate
7 > Connection: Keep-Alive
7 > Host: inspire.ec.europa.eu
7 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)

13:18:28.791 response time in milliseconds: 2770.86
7 < 200
7 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
7 < Cache-Control: public, max-age=120
7 < Connection: Keep-Alive
7 < Content-Type: application/json;charset=UTF-8
7 < Date: Tue, 27 Oct 2020 13:18:28 GMT
7 < Keep-Alive: timeout=3, max=100
7 < Last-Modified: Tue, 27 Oct 2020 13:18:25 GMT
7 < Server: nginx/1.16.1
7 < Vary: Origin
7 < X-Frame-Options: SAMEORIGIN
7 < X-XSS-Protection: 1; mode=block
{"EtfItemCollection":{"version":2.0,"returnedItems":0,"ref":"https://inspire.ec.europa.eu/validator//v2/TestRuns/.json"}}
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
13:18:28.792 [print]
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
13:18:28.792 [print]
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:71 - javascript evaluation failed: response.EtfItemCollection.testRuns.TestRun.status, TypeError: Cannot read property "TestRun" from undefined in <eval> at line number 1
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
2.340
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:16:22.297 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.339
13:16:22.298 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 277
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/inspire/tn/wfs?request=GetCapabilities"}}}

13:16:24.637 response time in milliseconds: 2235.88
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:16:24 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804584462","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:16:24.637 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
2.216
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:17:53.723 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/kadastralekaart/wfs/v4_0?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 2.216
13:17:53.724 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 287
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/kadastralekaart/wfs/v4_0?request=GetCapabilities"}}}

13:17:55.939 response time in milliseconds: 2110.30
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:17:55 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Feature Service 2.0\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804675763","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Feature Service 2.0\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:17:55.940 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
30.357
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.001
* print testRunRequest 0.000
13:11:00.843 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 30.355
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:38 - 
java.net.SocketTimeoutException: Read timed out
13:11:00.846 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 253
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/atom/index.xml"}}}

13:11:31.199 java.net.SocketTimeoutException: Read timed out, http call failed after 30353 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns
13:11:31.199 http request failed: 
java.net.SocketTimeoutException: Read timed out
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
30.337
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.001
13:11:49.400 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 30.335
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:38 - 
java.net.SocketTimeoutException: Read timed out
13:11:49.404 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 289
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/rws/kaderrichtlijnwateractueel/atom/v1_0/index.xml"}}}

13:12:19.735 java.net.SocketTimeoutException: Read timed out, http call failed after 30331 milliseconds for URL: https://inspire.ec.europa.eu/validator/v2/TestRuns
13:12:19.735 http request failed: 
java.net.SocketTimeoutException: Read timed out
Then assert responseStatus == 200 || responseStatus == 201 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
5.182
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:22:27.860 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/mosselenoesterhabitats/wfs?request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 5.181
13:22:27.862 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 289
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/mosselenoesterhabitats/wfs?request=GetCapabilities"}}}

13:22:33.041 response time in milliseconds: 5074.05
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:22:32 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804952862","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:22:33.042 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000
3.397
Scenario Outline Conformance Class Download Service - Pre-defined Atom EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93
Steps
* def testRunRequest = 0.000
{
  "label": "Conformance Class Download Service - Pre-defined Atom",
  "executableTestSuiteIds": [
    "EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"
  ],
  "arguments": {},
  "testObject": {
    "resources": {
      "serviceEndpoint": "<serviceEndpoint>"
    }
  }
}
* replace testRunRequest.serviceEndpoint = metadata.url 0.000
* print testRunRequest 0.000
13:13:42.424 [print] {"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2019/wfs?service=WFS&request=GetCapabilities"}}}
* json inspireload = testRunRequest 0.000
Given path 'TestRuns' 0.000
And request inspireload 0.000
When method post 3.397
13:13:42.425 request:
1 > POST https://inspire.ec.europa.eu/validator/v2/TestRuns
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 296
1 > Content-Type: application/json; charset=UTF-8
1 > Host: inspire.ec.europa.eu
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/13.0.5)
{"label":"Conformance Class Download Service - Pre-defined Atom","executableTestSuiteIds":["EID11571c92-3940-4f42-a6cd-5e2b1c6f4d93"],"arguments":{},"testObject":{"resources":{"serviceEndpoint":"https://geodata.nationaalgeoregister.nl/wijkenbuurten2019/wfs?service=WFS&request=GetCapabilities"}}}

13:13:45.821 response time in milliseconds: 3291.04
1 < 400
1 < Access-Control-Allow-Origin: [*, https://inspire.ec.europa.eu/validator/]
1 < Connection: close
1 < Content-Type: application/json;charset=UTF-8
1 < Date: Tue, 27 Oct 2020 13:13:45 GMT
1 < Server: nginx/1.16.1
1 < Vary: Origin
1 < X-Frame-Options: SAMEORIGIN
1 < X-XSS-Protection: 1; mode=block
{"error":"The Test Objekt Type \u0027OGC Web Map Service 1.3\u0027 is not one of the expected types that can be tested in this test run.","timestamp":"1603804425645","url":"http://inspire.ec.europa.eu/validator/v2/TestRuns","id":"l.testObject.type.incomaptible","stacktrace":["de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.detector.TestObjectTypeDetectorManager.detect(TestObjectTypeDetectorManager.java:325)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:104)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat de.interactive_instruments.etf.webapp.controller.TestObjectTypeController.checkAndResolveTypes(TestObjectTypeController.java:108)","\tat de.interactive_instruments.etf.webapp.controller.TestObjectController.initResourcesAndAdd(TestObjectController.java:437)","\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:497)","\tat sun.reflect.GeneratedMethodAccessor211.invoke(Unknown Source)","\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.lang.reflect.Method.invoke(Method.java:497)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.etf.detector.IncompatibleTestObjectTypeException: Expected a Test Object of type \u0027Atom feed\u0027 but detected another type \u0027\u0027OGC Web Map Service 1.3\u0027\u0027 which is also not a subtype of it","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\tat java.lang.Thread.run(Thread.java:745)"]}
Then assert responseStatus == 200 || responseStatus == 201 0.000
com.intuit.karate.exception.KarateException: checkdownloadInspireValidator.feature:39 - assert evaluated to false: responseStatus == 200 || responseStatus == 201
13:13:45.822 assertion failed: assert evaluated to false: responseStatus == 200 || responseStatus == 201
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def statuspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id 0.000
* def progresspath = "TestRuns/" + response.EtfItemCollection.testRuns.TestRun.id + "/progress" 0.000
* print 'statuspath', statuspath 0.000
* print 'progresspath ', progresspath 0.000
Given path progresspath 0.000
When method GET 0.000
And retry until response.val == response.max 0.000
* print response 0.000
Given path progresspath 0.000
When method GET 0.000
* print response 0.000
Given path statuspath 0.000
When method GET 0.000
* print response.EtfItemCollection.testRuns.TestRun.id 0.000
* print response.EtfItemCollection.testRuns.TestRun.status 0.000
* def status = response.EtfItemCollection.testRuns.TestRun.status 0.000
* print status 0.000
* print response.EtfItemCollection.testRuns.TestRun.label 0.000
* print response.EtfItemCollection.ref 0.000
* def ref = response.EtfItemCollection.ref 0.000
* print ref 0.000
* print response.EtfItemCollection.testRuns.TestRun.logPath 0.000
* def embedUrl = 0.000
function(url, hyperlinkText)
     { var html = '<a href=\"' + url + '\" >' + hyperlinkText + '</a>';
     karate.embed(html,'text/html'); }
* def time = java.lang.System.currentTimeMillis() 0.000
* def jsonPath = time + 'Conformance Class Download Service - Pre-defined Atom.json' 0.000
* def responsecontent = response 0.000
* karate.write(responsecontent, jsonPath) 0.000
* def a = embedUrl (ref.substring(0, ref.length - 5) + '.html' , status ) 0.000
* def a = embedUrl ("../../" + jsonPath , status ) 0.000
* def json = get[0] response.EtfItemCollection.referencedItems.testTaskResults 0.000
* def jsonfailedStep = $json.TestTaskResult.testModuleResults.TestModuleResult[*].testCaseResults.TestCaseResult[*].testStepResults.TestStepResult[?(@.status=='FAILED')] 0.000
* def jsonFailedStepmessages = $jsonfailedStep[*].messages.message.ref 0.000
* print jsonFailedStepmessages 0.000
* def jsonfailedAssert = $jsonfailedStep[*].testAssertionResults.TestAssertionResult[?(@.status=='FAILED')] 0.000
* def jsonfailedMessages = $jsonfailedAssert[*].messages.message 0.000
* def tmpref = $jsonfailedMessages[*].ref 0.000
* def refs = karate.append( jsonFailedStepmessages, tmpref ) 0.000
* def Collections = Java.type('java.util.Collections') 0.000
* copy sortedrefs = refs 0.000
* Collections.sort(sortedrefs) 0.000
* print refs 0.000
* print sortedrefs 0.000
* def tempdir = java.lang.System.getProperty('user.dir') 0.000
* def separator = java.lang.System.getProperty("file.separator") 0.000
* def mystorage = Java.type('storage.DataStorage') 0.000
* def db = new mystorage 0.000
* def LocalDateTime = Java.type('java.time.LocalDateTime') 0.000
* eval db.writeln('- Test: '+ karate.info.scenarioName+ '\n Time: '+ LocalDateTime.now() +'\n title: ' + metadata.title +'\n url: ' + metadata.url + '\n Errors: ' + sortedrefs , db.outputdir()+ separator + 'Inspirevalidator.yaml') 0.000